f7d6d167d164513874378259136a3aa8be01da3e
[openwrt/staging/chunkeey.git] / tools / missing-macros / src / m4 / acc.m4
1 # /***********************************************************************
2 # // standard ACC macros
3 # ************************************************************************/
4
5 AC_DEFUN([mfx_ACC_CHECK_ENDIAN], [
6 AC_C_BIGENDIAN([AC_DEFINE(ACC_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(ACC_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
7 ])#
8
9 AC_DEFUN([mfx_ACC_CHECK_HEADERS], [
10 AC_HEADER_TIME
11 AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h limits.h malloc.h memory.h setjmp.h signal.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h strings.h time.h unistd.h utime.h sys/mman.h sys/resource.h sys/stat.h sys/time.h sys/types.h sys/wait.h])
12 ])#
13
14 AC_DEFUN([mfx_ACC_CHECK_FUNCS], [
15 AC_CHECK_FUNCS(access alloca atexit atoi atol chmod chown clock_getcpuclockid clock_getres clock_gettime ctime difftime fstat getenv getpagesize getrusage gettimeofday gmtime isatty localtime longjmp lstat memcmp memcpy memmove memset mkdir mktime mmap mprotect munmap qsort raise rmdir setjmp signal snprintf strcasecmp strchr strdup strerror strftime stricmp strncasecmp strnicmp strrchr strstr time umask utime vsnprintf)
16 ])#
17
18
19 AC_DEFUN([mfx_ACC_CHECK_SIZEOF], [
20 AC_CHECK_SIZEOF(short)
21 AC_CHECK_SIZEOF(int)
22 AC_CHECK_SIZEOF(long)
23
24 AC_CHECK_SIZEOF(long long)
25 AC_CHECK_SIZEOF(__int16)
26 AC_CHECK_SIZEOF(__int32)
27 AC_CHECK_SIZEOF(__int64)
28
29 AC_CHECK_SIZEOF(void *)
30 AC_CHECK_SIZEOF(char *)
31 AC_CHECK_SIZEOF(size_t)
32 AC_CHECK_SIZEOF(ptrdiff_t)
33 ])#
34
35
36 # /***********************************************************************
37 # // Check for ACC_conformance
38 # ************************************************************************/
39
40 AC_DEFUN([mfx_ACC_ACCCHK], [
41 mfx_tmp=$1
42 mfx_save_CPPFLAGS=$CPPFLAGS
43 dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
44 test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
45
46 AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
47
48 AC_LANG_CONFTEST([AC_LANG_PROGRAM(
49 [[#define ACC_CONFIG_NO_HEADER 1
50 #include "acc/acc.h"
51 #include "acc/acc_incd.h"
52 #undef ACCCHK_ASSERT
53 #define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
54 #include "acc/acc_chk.ch"
55 #undef ACCCHK_ASSERT
56 static void test_acc_compile_time_assert(void) {
57 #define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
58 #include "acc/acc_chk.ch"
59 #undef ACCCHK_ASSERT
60 }
61 #undef NDEBUG
62 #include <assert.h>
63 static int test_acc_run_time_assert(int r) {
64 #define ACCCHK_ASSERT(expr) assert(expr);
65 #include "acc/acc_chk.ch"
66 #undef ACCCHK_ASSERT
67 return r;
68 }
69 ]], [[
70 test_acc_compile_time_assert();
71 if (test_acc_run_time_assert(1) != 1) return 1;
72 ]]
73 )])
74
75 mfx_tmp=FAILED
76 _AC_COMPILE_IFELSE([], [mfx_tmp=yes])
77 rm -f conftest.$ac_ext conftest.$ac_objext
78
79 CPPFLAGS=$mfx_save_CPPFLAGS
80
81 AC_MSG_RESULT([$mfx_tmp])
82 case x$mfx_tmp in
83 xpassed | xyes) ;;
84 *)
85 AC_MSG_NOTICE([])
86 AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
87 AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
88 AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
89 AC_MSG_NOTICE([Thanks for your support.])
90 AC_MSG_NOTICE([])
91 AC_MSG_ERROR([ACC conformance test failed. Stop.])
92 dnl AS_EXIT
93 ;;
94 esac
95 ])# mfx_ACC_ACCCHK
96
97
98 # /***********************************************************************
99 # // Check for ACC_conformance
100 # ************************************************************************/
101
102 AC_DEFUN([mfx_MINIACC_ACCCHK], [
103 mfx_tmp=$1
104 mfx_save_CPPFLAGS=$CPPFLAGS
105 dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
106 test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
107
108 AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
109
110 AC_LANG_CONFTEST([AC_LANG_PROGRAM(
111 [[#define ACC_CONFIG_NO_HEADER 1
112 #define ACC_WANT_ACC_INCD_H 1
113 #include $2
114
115 #define ACC_WANT_ACC_CHK_CH 1
116 #undef ACCCHK_ASSERT
117 #define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
118 #include $2
119
120 #define ACC_WANT_ACC_CHK_CH 1
121 #undef ACCCHK_ASSERT
122 #define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
123 static void test_acc_compile_time_assert(void) {
124 #include $2
125 }
126
127 #undef NDEBUG
128 #include <assert.h>
129 #define ACC_WANT_ACC_CHK_CH 1
130 #undef ACCCHK_ASSERT
131 #define ACCCHK_ASSERT(expr) assert(expr);
132 static int test_acc_run_time_assert(int r) {
133 #include $2
134 return r;
135 }
136 ]], [[
137 test_acc_compile_time_assert();
138 if (test_acc_run_time_assert(1) != 1) return 1;
139 ]]
140 )])
141
142 mfx_tmp=FAILED
143 _AC_COMPILE_IFELSE([], [mfx_tmp=yes])
144 rm -f conftest.$ac_ext conftest.$ac_objext
145
146 CPPFLAGS=$mfx_save_CPPFLAGS
147
148 AC_MSG_RESULT([$mfx_tmp])
149 case x$mfx_tmp in
150 xpassed | xyes) ;;
151 *)
152 AC_MSG_NOTICE([])
153 AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
154 AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
155 AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
156 AC_MSG_NOTICE([Thanks for your support.])
157 AC_MSG_NOTICE([])
158 AC_MSG_ERROR([ACC conformance test failed. Stop.])
159 dnl AS_EXIT
160 ;;
161 esac
162 ])# mfx_MINIACC_ACCCHK
163
164
165
166 # serial 1
167
168 AC_DEFUN([mfx_PROG_CPPFLAGS], [
169 AC_MSG_CHECKING([whether the C preprocessor needs special flags])
170
171 AC_LANG_CONFTEST([AC_LANG_PROGRAM(
172 [[#include <limits.h>
173 #if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
174 # include "your C preprocessor is broken 1"
175 #elif (0xffffu == 0xfffffffful)
176 # include "your C preprocessor is broken 2"
177 #elif (32767 >= ULONG_MAX) || (65535u >= ULONG_MAX)
178 # include "your C preprocessor is broken 3"
179 #endif
180 ]], [[ ]]
181 )])
182
183 mfx_save_CPPFLAGS=$CPPFLAGS
184 mfx_tmp=ERROR
185 for mfx_arg in "" -no-cpp-precomp
186 do
187 CPPFLAGS="$mfx_arg $mfx_save_CPPFLAGS"
188 _AC_COMPILE_IFELSE([],
189 [mfx_tmp=$mfx_arg
190 break])
191 done
192 CPPFLAGS=$mfx_save_CPPFLAGS
193 rm -f conftest.$ac_ext conftest.$ac_objext
194 case x$mfx_tmp in
195 x)
196 AC_MSG_RESULT([none needed]) ;;
197 xERROR)
198 AC_MSG_RESULT([ERROR])
199 AC_MSG_ERROR([your C preprocessor is broken - for details see config.log])
200 ;;
201 *)
202 AC_MSG_RESULT([$mfx_tmp])
203 CPPFLAGS="$mfx_tmp $CPPFLAGS"
204 ;;
205 esac
206 ])# mfx_PROG_CPPFLAGS
207
208 # serial 3
209
210 AC_DEFUN([mfx_CHECK_HEADER_SANE_LIMITS_H], [
211 AC_CACHE_CHECK([whether limits.h is sane],
212 mfx_cv_header_sane_limits_h,
213 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits.h>
214 #if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
215 # if defined(__APPLE__) && defined(__GNUC__)
216 # error "your preprocessor is broken - use compiler option -no-cpp-precomp"
217 # else
218 # include "your preprocessor is broken"
219 # endif
220 #endif
221 #define MFX_0xffff 0xffff
222 #define MFX_0xffffffffL 4294967295ul
223 #if !defined(CHAR_BIT) || (CHAR_BIT != 8)
224 # include "error CHAR_BIT"
225 #endif
226 #if !defined(UCHAR_MAX)
227 # include "error UCHAR_MAX 1"
228 #endif
229 #if !defined(USHRT_MAX)
230 # include "error USHRT_MAX 1"
231 #endif
232 #if !defined(UINT_MAX)
233 # include "error UINT_MAX 1"
234 #endif
235 #if !defined(ULONG_MAX)
236 # include "error ULONG_MAX 1"
237 #endif
238 #if !defined(SHRT_MAX)
239 # include "error SHRT_MAX 1"
240 #endif
241 #if !defined(INT_MAX)
242 # include "error INT_MAX 1"
243 #endif
244 #if !defined(LONG_MAX)
245 # include "error LONG_MAX 1"
246 #endif
247 #if (UCHAR_MAX < 1)
248 # include "error UCHAR_MAX 2"
249 #endif
250 #if (USHRT_MAX < 1)
251 # include "error USHRT_MAX 2"
252 #endif
253 #if (UINT_MAX < 1)
254 # include "error UINT_MAX 2"
255 #endif
256 #if (ULONG_MAX < 1)
257 # include "error ULONG_MAX 2"
258 #endif
259 #if (UCHAR_MAX < 0xff)
260 # include "error UCHAR_MAX 3"
261 #endif
262 #if (USHRT_MAX < MFX_0xffff)
263 # include "error USHRT_MAX 3"
264 #endif
265 #if (UINT_MAX < MFX_0xffff)
266 # include "error UINT_MAX 3"
267 #endif
268 #if (ULONG_MAX < MFX_0xffffffffL)
269 # include "error ULONG_MAX 3"
270 #endif
271 #if (USHRT_MAX > UINT_MAX)
272 # include "error USHRT_MAX vs UINT_MAX"
273 #endif
274 #if (UINT_MAX > ULONG_MAX)
275 # include "error UINT_MAX vs ULONG_MAX"
276 #endif
277 ]], [[
278 #if (USHRT_MAX == MFX_0xffff)
279 { typedef char a_short2a[1 - 2 * !(sizeof(short) == 2)]; }
280 #elif (USHRT_MAX >= MFX_0xffff)
281 { typedef char a_short2b[1 - 2 * !(sizeof(short) > 2)]; }
282 #endif
283 #if (UINT_MAX == MFX_0xffff)
284 { typedef char a_int2a[1 - 2 * !(sizeof(int) == 2)]; }
285 #elif (UINT_MAX >= MFX_0xffff)
286 { typedef char a_int2b[1 - 2 * !(sizeof(int) > 2)]; }
287 #endif
288 #if (ULONG_MAX == MFX_0xffff)
289 { typedef char a_long2a[1 - 2 * !(sizeof(long) == 2)]; }
290 #elif (ULONG_MAX >= MFX_0xffff)
291 { typedef char a_long2b[1 - 2 * !(sizeof(long) > 2)]; }
292 #endif
293 #if !defined(_CRAY1) /* CRAY PVP systems */
294 #if (USHRT_MAX == MFX_0xffffffffL)
295 { typedef char a_short4a[1 - 2 * !(sizeof(short) == 4)]; }
296 #elif (USHRT_MAX >= MFX_0xffffffffL)
297 { typedef char a_short4b[1 - 2 * !(sizeof(short) > 4)]; }
298 #endif
299 #endif /* _CRAY1 */
300 #if (UINT_MAX == MFX_0xffffffffL)
301 { typedef char a_int4a[1 - 2 * !(sizeof(int) == 4)]; }
302 #elif (UINT_MAX >= MFX_0xffffffffL)
303 { typedef char a_int4b[1 - 2 * !(sizeof(int) > 4)]; }
304 #endif
305 #if (ULONG_MAX == MFX_0xffffffffL)
306 { typedef char a_long4a[1 - 2 * !(sizeof(long) == 4)]; }
307 #elif (ULONG_MAX >= MFX_0xffffffffL)
308 { typedef char a_long4b[1 - 2 * !(sizeof(long) > 4)]; }
309 #endif
310 ]])],
311 [mfx_cv_header_sane_limits_h=yes],
312 [mfx_cv_header_sane_limits_h=no])])
313 ])
314
315 # /***********************************************************************
316 # // standard
317 # ************************************************************************/
318
319 AC_DEFUN([mfx_LZO_CHECK_ENDIAN], [
320 AC_C_BIGENDIAN([AC_DEFINE(LZO_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(LZO_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
321 ])#
322
323
324 # /***********************************************************************
325 # //
326 # ************************************************************************/
327
328 dnl more types which are not yet covered by ACC
329
330 AC_DEFUN([mfx_CHECK_SIZEOF], [
331 AC_CHECK_SIZEOF(__int32)
332 AC_CHECK_SIZEOF(intmax_t)
333 AC_CHECK_SIZEOF(uintmax_t)
334 AC_CHECK_SIZEOF(intptr_t)
335 AC_CHECK_SIZEOF(uintptr_t)
336
337 AC_CHECK_SIZEOF(float)
338 AC_CHECK_SIZEOF(double)
339 AC_CHECK_SIZEOF(long double)
340
341 AC_CHECK_SIZEOF(dev_t)
342 AC_CHECK_SIZEOF(fpos_t)
343 AC_CHECK_SIZEOF(mode_t)
344 AC_CHECK_SIZEOF(off_t)
345 AC_CHECK_SIZEOF(ssize_t)
346 AC_CHECK_SIZEOF(time_t)
347 ])#
348
349
350
351 AC_DEFUN([mfx_CHECK_LIB_WINMM], [
352 if test "X$GCC" = Xyes; then
353 case $host_os in
354 cygwin* | mingw* | pw32*)
355 test "X$LIBS" != "X" && LIBS="$LIBS "
356 LIBS="${LIBS}-lwinmm" ;;
357 *)
358 ;;
359 esac
360 fi
361 ])#