source: branches/samba-3.5.x/lib/replace/libreplace_cc.m4

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 4.4 KB
Line 
1
2AC_DEFUN_ONCE(AC__LIBREPLACE_ONLY_CC_CHECKS_START,
3[
4echo "LIBREPLACE_CC_CHECKS: START"
5])
6
7AC_DEFUN_ONCE(AC__LIBREPLACE_ONLY_CC_CHECKS_END,
8[
9echo "LIBREPLACE_CC_CHECKS: END"
10])
11
12dnl
13dnl
14dnl AC_LIBREPLACE_CC_CHECKS
15dnl
16dnl Note: we need to use m4_define instead of AC_DEFUN because
17dnl of the ordering of tests
18dnl
19dnl
20m4_define(AC_LIBREPLACE_CC_CHECKS,
21[
22AC__LIBREPLACE_ONLY_CC_CHECKS_START
23
24dnl stop the C89 attempt by autoconf - if autoconf detects -Ae it will enable it
25dnl which conflicts with C99 on HPUX
26ac_cv_prog_cc_Ae=no
27
28savedCFLAGS=$CFLAGS
29AC_PROG_CC
30CFLAGS=$savedCFLAGS
31
32dnl don't try for C99 if we are using gcc, as otherwise we
33dnl lose immediate structure constants
34if test x"$GCC" != x"yes" ; then
35AC_PROG_CC_C99
36fi
37
38if test x"$GCC" = x"yes" ; then
39 AC_MSG_CHECKING([for version of gcc])
40 GCC_VERSION=`$CC -dumpversion`
41 AC_MSG_RESULT(${GCC_VERSION})
42fi
43AC_USE_SYSTEM_EXTENSIONS
44AC_C_BIGENDIAN
45AC_C_INLINE
46LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_WARN([c99 structure initializer are not supported])])
47
48AC_PROG_INSTALL
49
50AC_ISC_POSIX
51AC_N_DEFINE(_XOPEN_SOURCE_EXTENDED)
52
53AC_SYS_LARGEFILE
54
55dnl Add #include for broken IRIX header files
56case "$host_os" in
57 *irix6*) AC_ADD_INCLUDE(<standards.h>)
58 ;;
59 *hpux*)
60 # mmap on HPUX is completely broken...
61 AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
62 if test "`uname -r`" = "B.11.00" -o "`uname -r`" = "B.11.11"; then
63 AC_MSG_WARN([Enabling HPUX 11.00/11.11 header bug workaround])
64 CFLAGS="$CFLAGS -Dpread=pread64 -Dpwrite=pwrite64"
65 fi
66 if test "`uname -r`" = "B.11.23"; then
67 AC_MSG_WARN([Enabling HPUX 11.23 machine/sys/getppdp.h bug workaround])
68 CFLAGS="$CFLAGS -D_MACHINE_SYS_GETPPDP_INCLUDED"
69 fi
70 ;;
71 *aix*)
72 AC_DEFINE(BROKEN_STRNDUP, 1, [Whether strndup is broken])
73 AC_DEFINE(BROKEN_STRNLEN, 1, [Whether strnlen is broken])
74 if test "${GCC}" != "yes"; then
75 ## for funky AIX compiler using strncpy()
76 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
77 fi
78 ;;
79 *osf*)
80 # this brings in socklen_t
81 AC_N_DEFINE(_XOPEN_SOURCE,600)
82 AC_N_DEFINE(_OSF_SOURCE)
83 ;;
84 #
85 # VOS may need to have POSIX support and System V compatibility enabled.
86 #
87 *vos*)
88 case "$CFLAGS" in
89 *-D_POSIX_C_SOURCE*);;
90 *)
91 CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112L"
92 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
93 ;;
94 esac
95 case "$CFLAGS" in
96 *-D_SYSV*|*-D_SVID_SOURCE*);;
97 *)
98 CFLAGS="$CFLAGS -D_SYSV"
99 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
100 ;;
101 esac
102 ;;
103esac
104
105
106
107AC_CHECK_HEADERS([standards.h])
108
109# Solaris needs HAVE_LONG_LONG defined
110AC_CHECK_TYPES(long long)
111
112AC_CHECK_SIZEOF(int)
113AC_CHECK_SIZEOF(char)
114AC_CHECK_SIZEOF(short)
115AC_CHECK_SIZEOF(long)
116AC_CHECK_SIZEOF(long long)
117
118AC_CHECK_TYPE(uint_t, unsigned int)
119AC_CHECK_TYPE(int8_t, char)
120AC_CHECK_TYPE(uint8_t, unsigned char)
121AC_CHECK_TYPE(int16_t, short)
122AC_CHECK_TYPE(uint16_t, unsigned short)
123
124if test $ac_cv_sizeof_int -eq 4 ; then
125AC_CHECK_TYPE(int32_t, int)
126AC_CHECK_TYPE(uint32_t, unsigned int)
127elif test $ac_cv_size_long -eq 4 ; then
128AC_CHECK_TYPE(int32_t, long)
129AC_CHECK_TYPE(uint32_t, unsigned long)
130else
131AC_MSG_ERROR([LIBREPLACE no 32-bit type found])
132fi
133
134AC_CHECK_TYPE(int64_t, long long)
135AC_CHECK_TYPE(uint64_t, unsigned long long)
136
137AC_CHECK_TYPE(size_t, unsigned int)
138AC_CHECK_TYPE(ssize_t, int)
139
140AC_CHECK_SIZEOF(off_t)
141AC_CHECK_SIZEOF(size_t)
142AC_CHECK_SIZEOF(ssize_t)
143
144AC_CHECK_TYPES([intptr_t, uintptr_t, ptrdiff_t])
145
146if test x"$ac_cv_type_long_long" != x"yes";then
147 AC_MSG_ERROR([LIBREPLACE needs type 'long long'])
148fi
149if test $ac_cv_sizeof_long_long -lt 8;then
150 AC_MSG_ERROR([LIBREPLACE needs sizeof(long long) >= 8])
151fi
152
153############################################
154# check if the compiler can do immediate structures
155AC_SUBST(libreplace_cv_immediate_structures)
156AC_CACHE_CHECK([for immediate structures],libreplace_cv_immediate_structures,[
157 AC_TRY_COMPILE([
158 #include <stdio.h>
159 ],[
160 typedef struct {unsigned x;} FOOBAR;
161 #define X_FOOBAR(x) ((FOOBAR) { x })
162 #define FOO_ONE X_FOOBAR(1)
163 FOOBAR f = FOO_ONE;
164 static const struct {
165 FOOBAR y;
166 } f2[] = {
167 {FOO_ONE}
168 };
169 static const FOOBAR f3[] = {FOO_ONE};
170 ],
171 libreplace_cv_immediate_structures=yes,
172 libreplace_cv_immediate_structures=no,
173 libreplace_cv_immediate_structures=cross)
174])
175if test x"$libreplace_cv_immediate_structures" = x"yes"; then
176 AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
177fi
178
179AC__LIBREPLACE_ONLY_CC_CHECKS_END
180]) dnl end AC_LIBREPLACE_CC_CHECKS
Note: See TracBrowser for help on using the repository browser.