OLD | NEW |
| (Empty) |
1 | |
2 AC_DEFUN_ONCE(AC__LIBREPLACE_ONLY_CC_CHECKS_START, | |
3 [ | |
4 echo "LIBREPLACE_CC_CHECKS: START" | |
5 ]) | |
6 | |
7 AC_DEFUN_ONCE(AC__LIBREPLACE_ONLY_CC_CHECKS_END, | |
8 [ | |
9 echo "LIBREPLACE_CC_CHECKS: END" | |
10 ]) | |
11 | |
12 dnl | |
13 dnl | |
14 dnl AC_LIBREPLACE_CC_CHECKS | |
15 dnl | |
16 dnl Note: we need to use m4_define instead of AC_DEFUN because | |
17 dnl of the ordering of tests | |
18 dnl | |
19 dnl | |
20 m4_define(AC_LIBREPLACE_CC_CHECKS, | |
21 [ | |
22 AC__LIBREPLACE_ONLY_CC_CHECKS_START | |
23 | |
24 dnl stop the C89 attempt by autoconf - if autoconf detects -Ae it will enable it | |
25 dnl which conflicts with C99 on HPUX | |
26 ac_cv_prog_cc_Ae=no | |
27 | |
28 savedCFLAGS=$CFLAGS | |
29 AC_PROG_CC | |
30 CFLAGS=$savedCFLAGS | |
31 | |
32 dnl don't try for C99 if we are using gcc, as otherwise we | |
33 dnl lose immediate structure constants | |
34 if test x"$GCC" != x"yes" ; then | |
35 AC_PROG_CC_C99 | |
36 fi | |
37 | |
38 if 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}) | |
42 fi | |
43 AC_USE_SYSTEM_EXTENSIONS | |
44 AC_C_BIGENDIAN | |
45 AC_C_INLINE | |
46 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_WARN([c99 structure initializer are not su
pported])]) | |
47 | |
48 AC_PROG_INSTALL | |
49 | |
50 AC_ISC_POSIX | |
51 AC_N_DEFINE(_XOPEN_SOURCE_EXTENDED) | |
52 | |
53 AC_SYS_LARGEFILE | |
54 | |
55 dnl Add #include for broken IRIX header files | |
56 case "$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"; th
en | |
63 AC_MSG_WARN([Enabling HPUX 11.00/11.11 header bug workar
ound]) | |
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 b
ug 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 ;; | |
103 esac | |
104 | |
105 | |
106 | |
107 AC_CHECK_HEADERS([standards.h]) | |
108 | |
109 # Solaris needs HAVE_LONG_LONG defined | |
110 AC_CHECK_TYPES(long long) | |
111 | |
112 AC_CHECK_SIZEOF(int) | |
113 AC_CHECK_SIZEOF(char) | |
114 AC_CHECK_SIZEOF(short) | |
115 AC_CHECK_SIZEOF(long) | |
116 AC_CHECK_SIZEOF(long long) | |
117 | |
118 AC_CHECK_TYPE(uint_t, unsigned int) | |
119 AC_CHECK_TYPE(int8_t, char) | |
120 AC_CHECK_TYPE(uint8_t, unsigned char) | |
121 AC_CHECK_TYPE(int16_t, short) | |
122 AC_CHECK_TYPE(uint16_t, unsigned short) | |
123 | |
124 if test $ac_cv_sizeof_int -eq 4 ; then | |
125 AC_CHECK_TYPE(int32_t, int) | |
126 AC_CHECK_TYPE(uint32_t, unsigned int) | |
127 elif test $ac_cv_size_long -eq 4 ; then | |
128 AC_CHECK_TYPE(int32_t, long) | |
129 AC_CHECK_TYPE(uint32_t, unsigned long) | |
130 else | |
131 AC_MSG_ERROR([LIBREPLACE no 32-bit type found]) | |
132 fi | |
133 | |
134 AC_CHECK_TYPE(int64_t, long long) | |
135 AC_CHECK_TYPE(uint64_t, unsigned long long) | |
136 | |
137 AC_CHECK_TYPE(size_t, unsigned int) | |
138 AC_CHECK_TYPE(ssize_t, int) | |
139 | |
140 AC_CHECK_SIZEOF(off_t) | |
141 AC_CHECK_SIZEOF(size_t) | |
142 AC_CHECK_SIZEOF(ssize_t) | |
143 | |
144 AC_CHECK_TYPES([intptr_t, uintptr_t, ptrdiff_t]) | |
145 | |
146 if test x"$ac_cv_type_long_long" != x"yes";then | |
147 AC_MSG_ERROR([LIBREPLACE needs type 'long long']) | |
148 fi | |
149 if test $ac_cv_sizeof_long_long -lt 8;then | |
150 AC_MSG_ERROR([LIBREPLACE needs sizeof(long long) >= 8]) | |
151 fi | |
152 | |
153 ############################################ | |
154 # check if the compiler can do immediate structures | |
155 AC_SUBST(libreplace_cv_immediate_structures) | |
156 AC_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 ]) | |
175 if test x"$libreplace_cv_immediate_structures" = x"yes"; then | |
176 AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports imm
ediate structures]) | |
177 fi | |
178 | |
179 AC__LIBREPLACE_ONLY_CC_CHECKS_END | |
180 ]) dnl end AC_LIBREPLACE_CC_CHECKS | |
OLD | NEW |