source: trunk/server/lib/replace/libreplace_cc.m4

Last change on this file was 898, checked in by Silvan Scherrer, 9 years ago

Samba Server: get rid of configure, adjust build.cmd heavily, rename version files

File size: 4.7 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 *os2*)
60 # mmap on OS/2 is not complete, so disable is...
61 AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
62 ;;
63 *hpux*)
64 # mmap on HPUX is completely broken...
65 AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
66 if test "`uname -r`" = "B.11.00" -o "`uname -r`" = "B.11.11"; then
67 AC_MSG_WARN([Enabling HPUX 11.00/11.11 header bug workaround])
68 CFLAGS="$CFLAGS -Dpread=pread64 -Dpwrite=pwrite64"
69 fi
70 if test "`uname -r`" = "B.11.23"; then
71 AC_MSG_WARN([Enabling HPUX 11.23 machine/sys/getppdp.h bug workaround])
72 CFLAGS="$CFLAGS -D_MACHINE_SYS_GETPPDP_INCLUDED"
73 fi
74 ;;
75 *aix*)
76 AC_DEFINE(BROKEN_STRNDUP, 1, [Whether strndup is broken])
77 AC_DEFINE(BROKEN_STRNLEN, 1, [Whether strnlen is broken])
78 if test "${GCC}" != "yes"; then
79 ## for funky AIX compiler using strncpy()
80 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
81 fi
82 ;;
83 *osf*)
84 # this brings in socklen_t
85 AC_N_DEFINE(_XOPEN_SOURCE,600)
86 AC_N_DEFINE(_OSF_SOURCE)
87 ;;
88 #
89 # VOS may need to have POSIX support and System V compatibility enabled.
90 #
91 *vos*)
92 case "$CFLAGS" in
93 *-D_POSIX_C_SOURCE*);;
94 *)
95 CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112L"
96 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
97 ;;
98 esac
99 case "$CFLAGS" in
100 *-D_SYSV*|*-D_SVID_SOURCE*);;
101 *)
102 CFLAGS="$CFLAGS -D_SYSV"
103 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
104 ;;
105 esac
106 ;;
107esac
108
109
110
111AC_CHECK_HEADERS([standards.h])
112
113# Solaris needs HAVE_LONG_LONG defined
114AC_CHECK_TYPES(long long)
115
116AC_CHECK_SIZEOF(int)
117AC_CHECK_SIZEOF(char)
118AC_CHECK_SIZEOF(short)
119AC_CHECK_SIZEOF(long)
120AC_CHECK_SIZEOF(long long)
121
122AC_CHECK_TYPE(int8_t, char)
123AC_CHECK_TYPE(uint8_t, unsigned char)
124AC_CHECK_TYPE(int16_t, short)
125AC_CHECK_TYPE(uint16_t, unsigned short)
126
127if test $ac_cv_sizeof_int -eq 4 ; then
128AC_CHECK_TYPE(int32_t, int)
129AC_CHECK_TYPE(uint32_t, unsigned int)
130elif test $ac_cv_size_long -eq 4 ; then
131AC_CHECK_TYPE(int32_t, long)
132AC_CHECK_TYPE(uint32_t, unsigned long)
133else
134AC_MSG_ERROR([LIBREPLACE no 32-bit type found])
135fi
136
137AC_CHECK_TYPE(int64_t, long long)
138AC_CHECK_TYPE(uint64_t, unsigned long long)
139
140AC_CHECK_TYPE(size_t, unsigned int)
141AC_CHECK_TYPE(ssize_t, int)
142
143AC_CHECK_SIZEOF(off_t)
144AC_CHECK_SIZEOF(size_t)
145AC_CHECK_SIZEOF(ssize_t)
146
147AC_CHECK_TYPES([intptr_t, uintptr_t, ptrdiff_t])
148
149if test x"$ac_cv_type_long_long" != x"yes";then
150 AC_MSG_ERROR([LIBREPLACE needs type 'long long'])
151fi
152if test $ac_cv_sizeof_long_long -lt 8;then
153 AC_MSG_ERROR([LIBREPLACE needs sizeof(long long) >= 8])
154fi
155
156############################################
157# check if the compiler can do immediate structures
158AC_SUBST(libreplace_cv_immediate_structures)
159AC_CACHE_CHECK([for immediate structures],libreplace_cv_immediate_structures,[
160 AC_TRY_COMPILE([
161 #include <stdio.h>
162 ],[
163 typedef struct {unsigned x;} FOOBAR;
164 #define X_FOOBAR(x) ((FOOBAR) { x })
165 #define FOO_ONE X_FOOBAR(1)
166 FOOBAR f = FOO_ONE;
167 static const struct {
168 FOOBAR y;
169 } f2[] = {
170 {FOO_ONE}
171 };
172 static const FOOBAR f3[] = {FOO_ONE};
173 ],
174 libreplace_cv_immediate_structures=yes,
175 libreplace_cv_immediate_structures=no,
176 libreplace_cv_immediate_structures=cross)
177])
178if test x"$libreplace_cv_immediate_structures" = x"yes"; then
179 AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
180fi
181
182AC__LIBREPLACE_ONLY_CC_CHECKS_END
183]) dnl end AC_LIBREPLACE_CC_CHECKS
Note: See TracBrowser for help on using the repository browser.