comparison gcc/acinclude.m4 @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children 77e2b8dfacca
comparison
equal deleted inserted replaced
-1:000000000000 0:a06113de4d67
1 dnl See whether we need a declaration for a function.
2 dnl The result is highly dependent on the INCLUDES passed in, so make sure
3 dnl to use a different cache variable name in this macro if it is invoked
4 dnl in a different context somewhere else.
5 dnl gcc_AC_CHECK_DECL(SYMBOL,
6 dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
7 AC_DEFUN([gcc_AC_CHECK_DECL],
8 [AC_MSG_CHECKING([whether $1 is declared])
9 AC_CACHE_VAL(gcc_cv_have_decl_$1,
10 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$4],
11 [#ifndef $1
12 char *(*pfn) = (char *(*)) $1 ;
13 #endif])], eval "gcc_cv_have_decl_$1=yes", eval "gcc_cv_have_decl_$1=no")])
14 if eval "test \"`echo '$gcc_cv_have_decl_'$1`\" = yes"; then
15 AC_MSG_RESULT(yes) ; ifelse([$2], , :, [$2])
16 else
17 AC_MSG_RESULT(no) ; ifelse([$3], , :, [$3])
18 fi
19 ])dnl
20
21 dnl Check multiple functions to see whether each needs a declaration.
22 dnl Arrange to define HAVE_DECL_<FUNCTION> to 0 or 1 as appropriate.
23 dnl gcc_AC_CHECK_DECLS(SYMBOLS,
24 dnl [ACTION-IF-NEEDED [, ACTION-IF-NOT-NEEDED [, INCLUDES]]])
25 AC_DEFUN([gcc_AC_CHECK_DECLS],
26 [AC_FOREACH([gcc_AC_Func], [$1],
27 [AH_TEMPLATE(AS_TR_CPP(HAVE_DECL_[]gcc_AC_Func),
28 [Define to 1 if we found a declaration for ']gcc_AC_Func[', otherwise
29 define to 0.])])dnl
30 for ac_func in $1
31 do
32 ac_tr_decl=AS_TR_CPP([HAVE_DECL_$ac_func])
33 gcc_AC_CHECK_DECL($ac_func,
34 [AC_DEFINE_UNQUOTED($ac_tr_decl, 1) $2],
35 [AC_DEFINE_UNQUOTED($ac_tr_decl, 0) $3],
36 dnl It is possible that the include files passed in here are local headers
37 dnl which supply a backup declaration for the relevant prototype based on
38 dnl the definition of (or lack of) the HAVE_DECL_ macro. If so, this test
39 dnl will always return success. E.g. see libiberty.h's handling of
40 dnl `basename'. To avoid this, we define the relevant HAVE_DECL_ macro to
41 dnl 1 so that any local headers used do not provide their own prototype
42 dnl during this test.
43 #undef $ac_tr_decl
44 #define $ac_tr_decl 1
45 $4
46 )
47 done
48 ])
49
50 dnl 'make compare' can be significantly faster, if cmp itself can
51 dnl skip bytes instead of using tail. The test being performed is
52 dnl "if cmp --ignore-initial=2 t1 t2 && ! cmp --ignore-initial=1 t1 t2"
53 dnl but we need to sink errors and handle broken shells. We also test
54 dnl for the parameter format "cmp file1 file2 skip1 skip2" which is
55 dnl accepted by cmp on some systems.
56 AC_DEFUN([gcc_AC_PROG_CMP_IGNORE_INITIAL],
57 [AC_CACHE_CHECK([for cmp's capabilities], gcc_cv_prog_cmp_skip,
58 [ echo abfoo >t1
59 echo cdfoo >t2
60 gcc_cv_prog_cmp_skip=slowcompare
61 if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
62 if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
63 :
64 else
65 gcc_cv_prog_cmp_skip=gnucompare
66 fi
67 fi
68 if test $gcc_cv_prog_cmp_skip = slowcompare ; then
69 if cmp t1 t2 2 2 > /dev/null 2>&1; then
70 if cmp t1 t2 1 1 > /dev/null 2>&1; then
71 :
72 else
73 gcc_cv_prog_cmp_skip=fastcompare
74 fi
75 fi
76 fi
77 rm t1 t2
78 ])
79 make_compare_target=$gcc_cv_prog_cmp_skip
80 AC_SUBST(make_compare_target)
81 ])
82
83 dnl See if symbolic links work and if not, try to substitute either hard links or simple copy.
84 AC_DEFUN([gcc_AC_PROG_LN_S],
85 [AC_MSG_CHECKING(whether ln -s works)
86 AC_CACHE_VAL(gcc_cv_prog_LN_S,
87 [rm -f conftestdata_t
88 echo >conftestdata_f
89 if ln -s conftestdata_f conftestdata_t 2>/dev/null
90 then
91 gcc_cv_prog_LN_S="ln -s"
92 else
93 if ln conftestdata_f conftestdata_t 2>/dev/null
94 then
95 gcc_cv_prog_LN_S=ln
96 else
97 if cp -p conftestdata_f conftestdata_t 2>/dev/null
98 then
99 gcc_cv_prog_LN_S="cp -p"
100 else
101 gcc_cv_prog_LN_S=cp
102 fi
103 fi
104 fi
105 rm -f conftestdata_f conftestdata_t
106 ])dnl
107 LN_S="$gcc_cv_prog_LN_S"
108 if test "$gcc_cv_prog_LN_S" = "ln -s"; then
109 AC_MSG_RESULT(yes)
110 else
111 if test "$gcc_cv_prog_LN_S" = "ln"; then
112 AC_MSG_RESULT([no, using ln])
113 else
114 AC_MSG_RESULT([no, and neither does ln, so using $gcc_cv_prog_LN_S])
115 fi
116 fi
117 AC_SUBST(LN_S)dnl
118 ])
119
120 dnl Define MKDIR_TAKES_ONE_ARG if mkdir accepts only one argument instead
121 dnl of the usual 2.
122 AC_DEFUN([gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG],
123 [AC_CACHE_CHECK([if mkdir takes one argument], gcc_cv_mkdir_takes_one_arg,
124 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
125 #include <sys/types.h>
126 #ifdef HAVE_SYS_STAT_H
127 # include <sys/stat.h>
128 #endif
129 #ifdef HAVE_UNISTD_H
130 # include <unistd.h>
131 #endif
132 #ifdef HAVE_DIRECT_H
133 # include <direct.h>
134 #endif], [mkdir ("foo", 0);])],
135 gcc_cv_mkdir_takes_one_arg=no, gcc_cv_mkdir_takes_one_arg=yes)])
136 if test $gcc_cv_mkdir_takes_one_arg = yes ; then
137 AC_DEFINE(MKDIR_TAKES_ONE_ARG, 1, [Define if host mkdir takes a single argument.])
138 fi
139 ])
140
141 AC_DEFUN([gcc_AC_PROG_INSTALL],
142 [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
143 # Find a good install program. We prefer a C program (faster),
144 # so one script is as good as another. But avoid the broken or
145 # incompatible versions:
146 # SysV /etc/install, /usr/sbin/install
147 # SunOS /usr/etc/install
148 # IRIX /sbin/install
149 # AIX /bin/install
150 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
151 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
152 # ./install, which can be erroneously created by make from ./install.sh.
153 AC_MSG_CHECKING(for a BSD compatible install)
154 if test -z "$INSTALL"; then
155 AC_CACHE_VAL(ac_cv_path_install,
156 [ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
157 for ac_dir in $PATH; do
158 # Account for people who put trailing slashes in PATH elements.
159 case "$ac_dir/" in
160 /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
161 *)
162 # OSF1 and SCO ODT 3.0 have their own names for install.
163 for ac_prog in ginstall scoinst install; do
164 if test -f $ac_dir/$ac_prog; then
165 if test $ac_prog = install &&
166 grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
167 # AIX install. It has an incompatible calling convention.
168 # OSF/1 installbsd also uses dspmsg, but is usable.
169 :
170 else
171 ac_cv_path_install="$ac_dir/$ac_prog -c"
172 break 2
173 fi
174 fi
175 done
176 ;;
177 esac
178 done
179 IFS="$ac_save_IFS"
180 ])dnl
181 if test "${ac_cv_path_install+set}" = set; then
182 INSTALL="$ac_cv_path_install"
183 else
184 # As a last resort, use the slow shell script. We don't cache a
185 # path for INSTALL within a source directory, because that will
186 # break other packages using the cache if that directory is
187 # removed, or if the path is relative.
188 INSTALL="$ac_install_sh"
189 fi
190 fi
191 dnl We do special magic for INSTALL instead of AC_SUBST, to get
192 dnl relative paths right.
193 AC_MSG_RESULT($INSTALL)
194 AC_SUBST(INSTALL)dnl
195
196 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
197 # It thinks the first close brace ends the variable substitution.
198 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
199 AC_SUBST(INSTALL_PROGRAM)dnl
200
201 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
202 AC_SUBST(INSTALL_DATA)dnl
203 ])
204
205 # mmap(2) blacklisting. Some platforms provide the mmap library routine
206 # but don't support all of the features we need from it.
207 AC_DEFUN([gcc_AC_FUNC_MMAP_BLACKLIST],
208 [
209 AC_CHECK_HEADER([sys/mman.h],
210 [gcc_header_sys_mman_h=yes], [gcc_header_sys_mman_h=no])
211 AC_CHECK_FUNC([mmap], [gcc_func_mmap=yes], [gcc_func_mmap=no])
212 if test "$gcc_header_sys_mman_h" != yes \
213 || test "$gcc_func_mmap" != yes; then
214 gcc_cv_func_mmap_file=no
215 gcc_cv_func_mmap_dev_zero=no
216 gcc_cv_func_mmap_anon=no
217 else
218 AC_CACHE_CHECK([whether read-only mmap of a plain file works],
219 gcc_cv_func_mmap_file,
220 [# Add a system to this blacklist if
221 # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
222 # memory area containing the same data that you'd get if you applied
223 # read() to the same fd. The only system known to have a problem here
224 # is VMS, where text files have record structure.
225 case "$host_os" in
226 vms* | ultrix*)
227 gcc_cv_func_mmap_file=no ;;
228 *)
229 gcc_cv_func_mmap_file=yes;;
230 esac])
231 AC_CACHE_CHECK([whether mmap from /dev/zero works],
232 gcc_cv_func_mmap_dev_zero,
233 [# Add a system to this blacklist if it has mmap() but /dev/zero
234 # does not exist, or if mmapping /dev/zero does not give anonymous
235 # zeroed pages with both the following properties:
236 # 1. If you map N consecutive pages in with one call, and then
237 # unmap any subset of those pages, the pages that were not
238 # explicitly unmapped remain accessible.
239 # 2. If you map two adjacent blocks of memory and then unmap them
240 # both at once, they must both go away.
241 # Systems known to be in this category are Windows (all variants),
242 # VMS, and Darwin.
243 case "$host_os" in
244 vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
245 gcc_cv_func_mmap_dev_zero=no ;;
246 *)
247 gcc_cv_func_mmap_dev_zero=yes;;
248 esac])
249
250 # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
251 AC_CACHE_CHECK([for MAP_ANON(YMOUS)], gcc_cv_decl_map_anon,
252 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
253 [#include <sys/types.h>
254 #include <sys/mman.h>
255 #include <unistd.h>
256
257 #ifndef MAP_ANONYMOUS
258 #define MAP_ANONYMOUS MAP_ANON
259 #endif
260 ],
261 [int n = MAP_ANONYMOUS;])],
262 gcc_cv_decl_map_anon=yes,
263 gcc_cv_decl_map_anon=no)])
264
265 if test $gcc_cv_decl_map_anon = no; then
266 gcc_cv_func_mmap_anon=no
267 else
268 AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works],
269 gcc_cv_func_mmap_anon,
270 [# Add a system to this blacklist if it has mmap() and MAP_ANON or
271 # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
272 # doesn't give anonymous zeroed pages with the same properties listed
273 # above for use of /dev/zero.
274 # Systems known to be in this category are Windows, VMS, and SCO Unix.
275 case "$host_os" in
276 vms* | cygwin* | pe | mingw* | sco* | udk* )
277 gcc_cv_func_mmap_anon=no ;;
278 *)
279 gcc_cv_func_mmap_anon=yes;;
280 esac])
281 fi
282 fi
283
284 if test $gcc_cv_func_mmap_file = yes; then
285 AC_DEFINE(HAVE_MMAP_FILE, 1,
286 [Define if read-only mmap of a plain file works.])
287 fi
288 if test $gcc_cv_func_mmap_dev_zero = yes; then
289 AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1,
290 [Define if mmap of /dev/zero works.])
291 fi
292 if test $gcc_cv_func_mmap_anon = yes; then
293 AC_DEFINE(HAVE_MMAP_ANON, 1,
294 [Define if mmap with MAP_ANON(YMOUS) works.])
295 fi
296 ])
297
298 dnl Determine if enumerated bitfields are unsigned. ISO C says they can
299 dnl be either signed or unsigned.
300 dnl
301 AC_DEFUN([gcc_AC_C_ENUM_BF_UNSIGNED],
302 [AC_CACHE_CHECK(for unsigned enumerated bitfields, gcc_cv_enum_bf_unsigned,
303 [AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdlib.h>
304 enum t { BLAH = 128 } ;
305 struct s_t { enum t member : 8; } s ;
306 int main(void)
307 {
308 s.member = BLAH;
309 if (s.member < 0) exit(1);
310 exit(0);
311
312 }])], gcc_cv_enum_bf_unsigned=yes, gcc_cv_enum_bf_unsigned=no, gcc_cv_enum_bf_unsigned=yes)])
313 if test $gcc_cv_enum_bf_unsigned = yes; then
314 AC_DEFINE(ENUM_BITFIELDS_ARE_UNSIGNED, 1,
315 [Define if enumerated bitfields are treated as unsigned values.])
316 fi])
317
318 dnl Probe number of bits in a byte.
319 dnl Note C89 requires CHAR_BIT >= 8.
320 dnl
321 AC_DEFUN([gcc_AC_C_CHAR_BIT],
322 [AC_CACHE_CHECK(for CHAR_BIT, gcc_cv_decl_char_bit,
323 [AC_EGREP_CPP(found,
324 [#ifdef HAVE_LIMITS_H
325 #include <limits.h>
326 #endif
327 #ifdef CHAR_BIT
328 found
329 #endif], gcc_cv_decl_char_bit=yes, gcc_cv_decl_char_bit=no)
330 ])
331 if test $gcc_cv_decl_char_bit = no; then
332 AC_CACHE_CHECK(number of bits in a byte, gcc_cv_c_nbby,
333 [i=8
334 gcc_cv_c_nbby=
335 while test $i -lt 65; do
336 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
337 [switch(0) {
338 case (unsigned char)((unsigned long)1 << $i) == ((unsigned long)1 << $i):
339 case (unsigned char)((unsigned long)1<<($i-1)) == ((unsigned long)1<<($i-1)):
340 ; }])],
341 [gcc_cv_c_nbby=$i; break])
342 i=`expr $i + 1`
343 done
344 test -z "$gcc_cv_c_nbby" && gcc_cv_c_nbby=failed
345 ])
346 if test $gcc_cv_c_nbby = failed; then
347 AC_MSG_ERROR(cannot determine number of bits in a byte)
348 else
349 AC_DEFINE_UNQUOTED(CHAR_BIT, $gcc_cv_c_nbby,
350 [Define as the number of bits in a byte, if `limits.h' doesn't.])
351 fi
352 fi])
353
354 AC_DEFUN([gcc_AC_INITFINI_ARRAY],
355 [AC_ARG_ENABLE(initfini-array,
356 [ --enable-initfini-array use .init_array/.fini_array sections],
357 [], [
358 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
359 gcc_cv_initfini_array, [dnl
360 AC_RUN_IFELSE([AC_LANG_SOURCE([
361 static int x = -1;
362 int main (void) { return x; }
363 int foo (void) { x = 0; }
364 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;])],
365 [gcc_cv_initfini_array=yes], [gcc_cv_initfini_array=no],
366 [gcc_cv_initfini_array=no])])
367 enable_initfini_array=$gcc_cv_initfini_array
368 ])
369 if test $enable_initfini_array = yes; then
370 AC_DEFINE(HAVE_INITFINI_ARRAY, 1,
371 [Define .init_array/.fini_array sections are available and working.])
372 fi])
373
374 dnl # _gcc_COMPUTE_GAS_VERSION
375 dnl # Used by gcc_GAS_VERSION_GTE_IFELSE
376 dnl #
377 dnl # WARNING:
378 dnl # gcc_cv_as_gas_srcdir must be defined before this.
379 dnl # This gross requirement will go away eventually.
380 AC_DEFUN([_gcc_COMPUTE_GAS_VERSION],
381 [gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
382 for f in $gcc_cv_as_bfd_srcdir/configure \
383 $gcc_cv_as_gas_srcdir/configure \
384 $gcc_cv_as_gas_srcdir/configure.in \
385 $gcc_cv_as_gas_srcdir/Makefile.in ; do
386 gcc_cv_gas_version=`sed -n -e 's/^[[ ]]*\(VERSION=[[0-9]]*\.[[0-9]]*.*\)/\1/p' < $f`
387 if test x$gcc_cv_gas_version != x; then
388 break
389 fi
390 done
391 gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([[0-9]]*\)"`
392 gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.\([[0-9]]*\)"`
393 gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)"`
394 case $gcc_cv_gas_patch_version in
395 "") gcc_cv_gas_patch_version="0" ;;
396 esac
397 gcc_cv_gas_vers=`expr \( \( $gcc_cv_gas_major_version \* 1000 \) \
398 + $gcc_cv_gas_minor_version \) \* 1000 \
399 + $gcc_cv_gas_patch_version`
400 ]) []dnl # _gcc_COMPUTE_GAS_VERSION
401
402 dnl # gcc_GAS_VERSION_GTE_IFELSE([elf,] major, minor, patchlevel,
403 dnl # [command_if_true = :], [command_if_false = :])
404 dnl # Check to see if the version of GAS is greater than or
405 dnl # equal to the specified version.
406 dnl #
407 dnl # The first ifelse() shortens the shell code if the patchlevel
408 dnl # is unimportant (the usual case). The others handle missing
409 dnl # commands. Note that the tests are structured so that the most
410 dnl # common version number cases are tested first.
411 AC_DEFUN([_gcc_GAS_VERSION_GTE_IFELSE],
412 [ifelse([$1], elf,
413 [if test $in_tree_gas_is_elf = yes \
414 &&],
415 [if]) test $gcc_cv_gas_vers -ge `expr \( \( $2 \* 1000 \) + $3 \) \* 1000 + $4`
416 then dnl
417 ifelse([$5],,:,[$5])[]dnl
418 ifelse([$6],,,[
419 else $6])
420 fi])
421
422 AC_DEFUN([gcc_GAS_VERSION_GTE_IFELSE],
423 [AC_REQUIRE([_gcc_COMPUTE_GAS_VERSION])dnl
424 ifelse([$1], elf, [_gcc_GAS_VERSION_GTE_IFELSE($@)],
425 [_gcc_GAS_VERSION_GTE_IFELSE(,$@)])])
426
427 dnl gcc_GAS_CHECK_FEATURE(description, cv, [[elf,]major,minor,patchlevel],
428 dnl [extra switches to as], [assembler input],
429 dnl [extra testing logic], [command if feature available])
430 dnl
431 dnl Checks for an assembler feature. If we are building an in-tree
432 dnl gas, the feature is available if the associated assembler version
433 dnl is greater than or equal to major.minor.patchlevel. If not, then
434 dnl ASSEMBLER INPUT is fed to the assembler and the feature is available
435 dnl if assembly succeeds. If EXTRA TESTING LOGIC is not the empty string,
436 dnl then it is run instead of simply setting CV to "yes" - it is responsible
437 dnl for doing so, if appropriate.
438 AC_DEFUN([gcc_GAS_CHECK_FEATURE],
439 [AC_CACHE_CHECK([assembler for $1], [$2],
440 [[$2]=no
441 ifelse([$3],,,[dnl
442 if test $in_tree_gas = yes; then
443 gcc_GAS_VERSION_GTE_IFELSE($3, [[$2]=yes])
444 el])if test x$gcc_cv_as != x; then
445 echo ifelse(m4_substr([$5],0,1),[$], "[$5]", '[$5]') > conftest.s
446 if AC_TRY_COMMAND([$gcc_cv_as $4 -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD])
447 then
448 ifelse([$6],, [$2]=yes, [$6])
449 else
450 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
451 cat conftest.s >&AS_MESSAGE_LOG_FD
452 fi
453 rm -f conftest.o conftest.s
454 fi])
455 ifelse([$7],,,[dnl
456 if test $[$2] = yes; then
457 $7
458 fi])])
459
460 dnl GCC_TARGET_TEMPLATE(KEY)
461 dnl ------------------------
462 dnl Define KEY as a valid configure key on the target machine.
463
464 m4_define([GCC_TARGET_TEMPLATE],
465 [m4_define([GCC_TARGET_TEMPLATE($1)],[])])
466
467 dnl AH_TEMPLATE(KEY, DESCRIPTION)
468 dnl -----------------------------
469 dnl Issue an autoheader template for KEY, i.e., a comment composed of
470 dnl DESCRIPTION (properly wrapped), and then #undef KEY. Redefinition
471 dnl of the macro in autoheader.m4, to support definition of only a few
472 dnl keys while compiling target libraries.
473
474 m4_define([AH_TEMPLATE],
475 [AH_VERBATIM([$1],m4_text_wrap([$2 */], [ ], [/* ])
476 m4_ifdef([GCC_TARGET_TEMPLATE($1)],[],[#ifndef USED_FOR_TARGET
477 ])[#undef $1]m4_ifdef([GCC_TARGET_TEMPLATE($1)],[],[
478 #endif
479 ]))])
480
481 dnl Make sure that build_exeext is looked for
482 AC_DEFUN([gcc_AC_BUILD_EXEEXT], [
483 ac_executable_extensions="$build_exeext"])
484