2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
5 # Free Software Foundation, Inc.
7 #This file is part of GCC.
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3. If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
29 AC_CONFIG_SRCDIR(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
32 gcc_version=`cat $srcdir/BASE-VER`
34 # Determine the host, build, and target systems
39 # Determine the noncanonical target name, for directory use.
40 ACX_NONCANONICAL_TARGET
42 # Determine the target- and build-specific subdirectories
45 # Set program_transform_name
48 # Check for bogus environment variables.
49 # Test if LIBRARY_PATH contains the notation for the current directory
50 # since this would lead to problems installing/building glibc.
51 # LIBRARY_PATH contains the current directory if one of the following
53 # - one of the terminals (":" and ";") is the first or last sign
54 # - two terminals occur directly after each other
55 # - the path contains an element with a dot in it
56 AC_MSG_CHECKING(LIBRARY_PATH variable)
58 case ${LIBRARY_PATH} in
59 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
60 library_path_setting="contains current directory"
63 library_path_setting="ok"
67 AC_MSG_RESULT($library_path_setting)
68 if test "$library_path_setting" != "ok"; then
70 *** LIBRARY_PATH shouldn't contain the current directory when
71 *** building gcc. Please change the environment variable
72 *** and run configure again.])
75 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
76 # since this would lead to problems installing/building glibc.
77 # GCC_EXEC_PREFIX contains the current directory if one of the following
79 # - one of the terminals (":" and ";") is the first or last sign
80 # - two terminals occur directly after each other
81 # - the path contains an element with a dot in it
82 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
84 case ${GCC_EXEC_PREFIX} in
85 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
86 gcc_exec_prefix_setting="contains current directory"
89 gcc_exec_prefix_setting="ok"
93 AC_MSG_RESULT($gcc_exec_prefix_setting)
94 if test "$gcc_exec_prefix_setting" != "ok"; then
96 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
97 *** building gcc. Please change the environment variable
98 *** and run configure again.])
105 # Specify the local prefix
107 AC_ARG_WITH(local-prefix,
108 [ --with-local-prefix=DIR specifies directory to put local include],
109 [case "${withval}" in
110 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112 *) local_prefix=$with_local_prefix ;;
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117 local_prefix=/usr/local
120 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
121 # passed in by the toplevel make and thus we'd get different behavior
122 # depending on where we built the sources.
124 # Specify the g++ header file directory
125 AC_ARG_WITH(gxx-include-dir,
126 [ --with-gxx-include-dir=DIR
127 specifies directory to put g++ header files],
128 [case "${withval}" in
129 yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
134 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
135 if test x${gcc_gxx_include_dir} = x; then
136 if test x${enable_version_specific_runtime_libs} = xyes; then
137 gcc_gxx_include_dir='${libsubdir}/include/c++'
139 libstdcxx_incdir='include/c++/$(version)'
140 if test x$host != x$target; then
141 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
147 AC_ARG_WITH(cpp_install_dir,
148 [ --with-cpp-install-dir=DIR
149 install the user visible C preprocessor in DIR
150 (relative to PREFIX) as well as PREFIX/bin],
151 [if test x$withval = xyes; then
152 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
153 elif test x$withval != xno; then
154 cpp_install_dir=$withval
157 # We would like to our source tree to be readonly. However when releases or
158 # pre-releases are generated, the flex/bison generated files as well as the
159 # various formats of manuals need to be included along with the rest of the
160 # sources. Therefore we have --enable-generated-files-in-srcdir to do
163 AC_MSG_CHECKING([whether to place generated files in the source directory])
164 dnl generated-files-in-srcdir is disabled by default
165 AC_ARG_ENABLE(generated-files-in-srcdir,
166 [ --enable-generated-files-in-srcdir
167 put copies of generated files in source dir
168 intended for creating source tarballs for users
169 without texinfo bison or flex.],
170 generated_files_in_srcdir=$enableval,
171 generated_files_in_srcdir=no)
173 AC_MSG_RESULT($generated_files_in_srcdir)
175 if test "$generated_files_in_srcdir" = "yes"; then
182 # -------------------
183 # Find default linker
184 # -------------------
188 [ --with-gnu-ld arrange to work with GNU ld.],
189 gnu_ld_flag="$with_gnu_ld",
192 # With pre-defined ld
194 [ --with-ld arrange to use the specified ld (full pathname)],
195 DEFAULT_LINKER="$with_ld")
196 if test x"${DEFAULT_LINKER+set}" = x"set"; then
197 if test ! -x "$DEFAULT_LINKER"; then
198 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
199 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
202 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
203 [Define to enable the use of a default linker.])
206 gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
207 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
209 AC_MSG_CHECKING([whether a default linker was specified])
210 if test x"${DEFAULT_LINKER+set}" = x"set"; then
211 if test x"$gnu_ld_flag" = x"no"; then
212 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
214 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
220 # With demangler in GNU ld
221 AC_ARG_WITH(demangler-in-ld,
222 [ --with-demangler-in-ld try to use demangler in GNU ld.],
223 demangler_in_ld="$with_demangler_in_ld",
226 # ----------------------
227 # Find default assembler
228 # ----------------------
232 [ --with-gnu-as arrange to work with GNU as],
233 gas_flag="$with_gnu_as",
237 [ --with-as arrange to use the specified as (full pathname)],
238 DEFAULT_ASSEMBLER="$with_as")
239 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
240 if test ! -x "$DEFAULT_ASSEMBLER"; then
241 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
242 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
245 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
246 [Define to enable the use of a default assembler.])
249 AC_MSG_CHECKING([whether a default assembler was specified])
250 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
251 if test x"$gas_flag" = x"no"; then
252 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
254 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
264 # If a non-executable a.out is present (e.g. created by GNU as above even if
265 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
266 # file, even when creating an executable, so an execution test fails.
267 # Remove possible default executable files to avoid this.
269 # FIXME: This really belongs into AC_PROG_CC and can be removed once
270 # Autoconf includes it.
271 rm -f a.out a.exe b.out
273 # Find the native compiler
276 # autoconf is lame and doesn't give us any substitution variable for this.
277 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
278 NO_MINUS_C_MINUS_O=yes
280 OUTPUT_OPTION='-o $@'
282 AC_SUBST(NO_MINUS_C_MINUS_O)
283 AC_SUBST(OUTPUT_OPTION)
285 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
286 # optimizations to be activated explicitly by the toplevel.
289 *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
293 # -------------------------
294 # Check C compiler features
295 # -------------------------
300 # sizeof(char) is 1 by definition.
301 AC_CHECK_SIZEOF(void *)
302 AC_CHECK_SIZEOF(short)
304 AC_CHECK_SIZEOF(long)
305 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
306 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
308 # ---------------------
309 # Warnings and checking
310 # ---------------------
312 # Check $CC warning features (if it's GCC).
313 # We want to use -pedantic, but we don't want warnings about
317 # So, we only use -pedantic if we can disable those warnings.
319 ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
320 -Wmissing-prototypes], [loose_warn])
321 ACX_PROG_CC_WARNING_OPTS([-Wc++-compat], [cxx_compat_warn])
322 ACX_PROG_CC_WARNING_OPTS([-Wold-style-definition \
323 -Wmissing-format-attribute], [strict_warn])
324 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long -Wno-variadic-macros \
325 -Wno-overlength-strings], [strict_warn])
326 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
328 # The above macros do nothing if the compiler is not GCC. However, the
329 # Makefile has more goo to add other flags, so this variabl is used to
330 # enables warnings only for GCC.
332 if test "x$GCC" = "xyes"; then
333 warn_cflags='$(GCC_WARN_CFLAGS)'
335 AC_SUBST(warn_cflags)
337 # Enable expensive internal checks
339 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
343 AC_ARG_ENABLE(checking,
344 [ --enable-checking[=LIST]
345 enable expensive run-time checks. With LIST,
346 enable only specific categories of checks.
347 Categories are: yes,no,all,none,release.
348 Flags are: assert,df,fold,gc,gcac,misc,
349 rtlflag,rtl,runtime,tree,valgrind.],
350 [ac_checking_flags="${enableval}"],[
351 # Determine the default checks.
352 if test x$is_release = x ; then
353 ac_checking_flags=yes
355 ac_checking_flags=release
357 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
358 for check in release $ac_checking_flags
361 # these set all the flags to specific states
362 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
363 ac_fold_checking= ; ac_gc_checking=1 ;
364 ac_gc_always_collect= ; ac_rtl_checking= ;
365 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
366 ac_tree_checking=1 ; ac_valgrind_checking= ;;
367 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
368 ac_fold_checking= ; ac_gc_checking= ;
369 ac_gc_always_collect= ; ac_rtl_checking= ;
370 ac_rtlflag_checking= ; ac_runtime_checking= ;
371 ac_tree_checking= ; ac_valgrind_checking= ;;
372 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
373 ac_fold_checking=1 ; ac_gc_checking=1 ;
374 ac_gc_always_collect=1 ; ac_rtl_checking=1 ;
375 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
376 ac_tree_checking=1 ; ac_valgrind_checking= ;;
377 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
378 ac_fold_checking= ; ac_gc_checking= ;
379 ac_gc_always_collect= ; ac_rtl_checking= ;
380 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
381 ac_tree_checking= ; ac_valgrind_checking= ;;
382 # these enable particular checks
383 assert) ac_assert_checking=1 ;;
384 df) ac_df_checking=1 ;;
385 fold) ac_fold_checking=1 ;;
386 gc) ac_gc_checking=1 ;;
387 gcac) ac_gc_always_collect=1 ;;
388 misc) ac_checking=1 ;;
389 rtl) ac_rtl_checking=1 ;;
390 rtlflag) ac_rtlflag_checking=1 ;;
391 runtime) ac_runtime_checking=1 ;;
392 tree) ac_tree_checking=1 ;;
393 valgrind) ac_valgrind_checking=1 ;;
394 *) AC_MSG_ERROR(unknown check category $check) ;;
400 if test x$ac_checking != x ; then
401 AC_DEFINE(ENABLE_CHECKING, 1,
402 [Define if you want more run-time sanity checks. This one gets a grab
403 bag of miscellaneous but relatively cheap checks.])
404 nocommon_flag=-fno-common
406 AC_SUBST(nocommon_flag)
407 if test x$ac_df_checking != x ; then
408 AC_DEFINE(ENABLE_DF_CHECKING, 1,
409 [Define if you want more run-time sanity checks for dataflow.])
411 if test x$ac_assert_checking != x ; then
412 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
413 [Define if you want assertions enabled. This is a cheap check.])
415 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
416 if test x$ac_runtime_checking != x ; then
417 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
418 [Define if you want runtime assertions enabled. This is a cheap check.])
420 if test x$ac_tree_checking != x ; then
421 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
422 [Define if you want all operations on trees (the basic data
423 structure of the front ends) to be checked for dynamic type safety
424 at runtime. This is moderately expensive. The tree browser debugging
425 routines will also be enabled by this option.
427 TREEBROWSER=tree-browser.o
429 AC_SUBST(TREEBROWSER)
430 if test x$ac_rtl_checking != x ; then
431 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
432 [Define if you want all operations on RTL (the basic data structure
433 of the optimizer and back end) to be checked for dynamic type safety
434 at runtime. This is quite expensive.])
436 if test x$ac_rtlflag_checking != x ; then
437 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
438 [Define if you want RTL flag accesses to be checked against the RTL
439 codes that are supported for each access macro. This is relatively
442 if test x$ac_gc_checking != x ; then
443 AC_DEFINE(ENABLE_GC_CHECKING, 1,
444 [Define if you want the garbage collector to do object poisoning and
445 other memory allocation checks. This is quite expensive.])
447 if test x$ac_gc_always_collect != x ; then
448 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
449 [Define if you want the garbage collector to operate in maximally
450 paranoid mode, validating the entire heap and collecting garbage at
451 every opportunity. This is extremely expensive.])
453 if test x$ac_fold_checking != x ; then
454 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
455 [Define if you want fold checked that it never destructs its argument.
456 This is quite expensive.])
458 valgrind_path_defines=
461 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
462 dnl # an if statement. This was the source of very frustrating bugs
463 dnl # in converting to autoconf 2.5x!
464 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
466 if test x$ac_valgrind_checking != x ; then
467 # It is certainly possible that there's valgrind but no valgrind.h.
468 # GCC relies on making annotations so we must have both.
469 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
470 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
471 [[#include <valgrind/memcheck.h>
472 #ifndef VALGRIND_DISCARD
473 #error VALGRIND_DISCARD not defined
475 [gcc_cv_header_valgrind_memcheck_h=yes],
476 [gcc_cv_header_valgrind_memcheck_h=no])
477 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
478 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
479 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
480 [[#include <memcheck.h>
481 #ifndef VALGRIND_DISCARD
482 #error VALGRIND_DISCARD not defined
484 [gcc_cv_header_memcheck_h=yes],
485 [gcc_cv_header_memcheck_h=no])
486 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
487 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
488 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
489 if test "x$valgrind_path" = "x" \
490 || (test $have_valgrind_h = no \
491 && test $gcc_cv_header_memcheck_h = no \
492 && test $gcc_cv_header_valgrind_memcheck_h = no); then
493 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
495 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
496 valgrind_command="$valgrind_path -q"
497 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
498 [Define if you want to run subprograms and generated programs
499 through valgrind (a memory checker). This is extremely expensive.])
500 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
501 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
502 [Define if valgrind's valgrind/memcheck.h header is installed.])
504 if test $gcc_cv_header_memcheck_h = yes; then
505 AC_DEFINE(HAVE_MEMCHECK_H, 1,
506 [Define if valgrind's memcheck.h header is installed.])
509 AC_SUBST(valgrind_path_defines)
510 AC_SUBST(valgrind_command)
512 AC_ARG_ENABLE(mapped-location,
513 [ --enable-mapped-location location_t is fileline integer cookie],,
514 enable_mapped_location=no)
516 if test "$enable_mapped_location" = yes ; then
517 AC_DEFINE(USE_MAPPED_LOCATION, 1,
518 [Define if location_t is fileline integer cookie.])
521 # Enable code coverage collection
522 AC_ARG_ENABLE(coverage,
523 [ --enable-coverage[=LEVEL]
524 enable compiler's code coverage collection.
525 Use to measure compiler performance and locate
526 unused parts of the compiler. With LEVEL, specify
527 optimization. Values are opt, noopt,
529 [case "${enableval}" in
531 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
534 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
537 # a.k.a. --disable-coverage
541 AC_MSG_ERROR(unknown coverage setting $enableval)
545 AC_SUBST(coverage_flags)
547 AC_ARG_ENABLE(gather-detailed-mem-stats,
548 [ --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering], [],
549 [enable_gather_detailed_mem_stats=no])
550 if test x$enable_gather_detailed_mem_stats = xyes ; then
551 AC_DEFINE(GATHER_STATISTICS, 1,
552 [Define to enable detailed memory allocation stats gathering.])
555 # -------------------------------
556 # Miscenalleous configure options
557 # -------------------------------
561 [ --with-stabs arrange to use stabs instead of host debug format],
565 # Determine whether or not multilibs are enabled.
566 AC_ARG_ENABLE(multilib,
567 [ --enable-multilib enable library support for multiple ABIs],
568 [], [enable_multilib=yes])
569 AC_SUBST(enable_multilib)
571 # Enable __cxa_atexit for C++.
572 AC_ARG_ENABLE(__cxa_atexit,
573 [ --enable-__cxa_atexit enable __cxa_atexit for C++],
576 # Enable C extension for decimal float if target supports it.
577 AC_ARG_ENABLE(decimal-float,
578 [ --enable-decimal-float={no,yes,bid,dpd}
579 enable decimal float extension to C. Selecting 'bid'
580 or 'dpd' choses which decimal floating point format
583 case $enable_decimal_float in
584 yes | no | bid | dpd) ;;
585 *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
586 Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
591 powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
592 enable_decimal_float=yes
595 AC_MSG_WARN(decimal float is not supported for this target, ignored)
596 enable_decimal_float=no
601 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
602 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
603 [Define to 1 to enable decimal float extension to C.])
605 # x86's use BID format instead of DPD
606 case x$enable_decimal_float in
609 i?86*-*-linux* | x86_64*-*-linux*)
610 enable_decimal_float=bid
613 enable_decimal_float=dpd
618 # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
619 # dependency on libdecnumber.
620 enable_decimal_float=dpd
623 AC_SUBST(enable_decimal_float)
625 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
626 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
627 [Define to 1 to specify that we are using the BID decimal floating
628 point format instead of DPD])
631 # Pass with no value to take the default
632 # Pass with a value to specify a thread package
633 AC_ARG_ENABLE(threads,
634 [ --enable-threads enable thread usage for target GCC
635 --enable-threads=LIB use LIB thread package for target GCC],,
639 [ --enable-tls enable or disable generation of tls code
640 overriding the assembler check for tls support],
644 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
645 Valid choices are 'yes' and 'no'.]) ;;
649 AC_ARG_ENABLE(objc-gc,
650 [ --enable-objc-gc enable the use of Boehm's garbage collector with
651 the GNU Objective-C runtime],
652 if test x$enable_objc_gc = xno; then
660 [ --with-dwarf2 force the default debug format to be DWARF 2],
661 dwarf2="$with_dwarf2",
664 AC_ARG_ENABLE(shared,
665 [ --disable-shared don't provide a shared libgcc],
667 case $enable_shared in
671 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
672 for pkg in $enableval; do
673 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
680 ], [enable_shared=yes])
681 AC_SUBST(enable_shared)
683 AC_ARG_WITH(build-sysroot,
684 [ --with-build-sysroot=sysroot
685 use sysroot as the system root during the build])
688 [ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
690 case ${with_sysroot} in
691 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
692 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
695 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
696 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
698 if test "x$prefix" = xNONE; then
699 test_prefix=/usr/local
703 if test "x$exec_prefix" = xNONE; then
704 test_exec_prefix=$test_prefix
706 test_exec_prefix=$exec_prefix
708 case ${TARGET_SYSTEM_ROOT} in
709 "${test_prefix}"|"${test_prefix}/"*|\
710 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
711 '${prefix}'|'${prefix}/'*|\
712 '${exec_prefix}'|'${exec_prefix}/'*)
713 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
714 TARGET_SYSTEM_ROOT_DEFINE="$t"
719 TARGET_SYSTEM_ROOT_DEFINE=
720 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
722 AC_SUBST(TARGET_SYSTEM_ROOT)
723 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
724 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
726 # Build with intermodule optimisations
727 AC_ARG_ENABLE(intermodule,
728 [ --enable-intermodule build the compiler in one step],
729 [case ${enable_intermodule} in
730 yes) onestep="-onestep";;
736 # Sanity check enable_languages in case someone does not run the toplevel
737 # configure # script.
738 AC_ARG_ENABLE(languages,
739 [ --enable-languages=LIST specify which front-ends to build],
740 [case ,${enable_languages}, in
742 # go safe -- we cannot be much sure without the toplevel
744 # analysis of which target libs are present and usable
748 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
753 enable_languages=c,${enable_languages}
756 [enable_languages=c])
758 # Used by documentation targets
759 AC_SUBST(datarootdir)
763 # -------------------------
764 # Checks for other programs
765 # -------------------------
769 # Find some useful tools
771 # We need awk to create options.c and options.h.
772 # Bail out if it's missing.
774 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
782 # By default, the Darwin ranlib will not treat common symbols as
783 # definitions when building the archive table of contents. Other
784 # ranlibs do that; pass an option to the Darwin ranlib that makes
785 # it behave similarly.
791 AC_SUBST(ranlib_flags)
795 # See if cmp has --ignore-initial.
796 gcc_AC_PROG_CMP_IGNORE_INITIAL
798 # See if we have the mktemp command.
799 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
801 # See if makeinfo has been installed and is modern enough
802 # that we can use it.
803 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
804 [GNU texinfo.* \([0-9][0-9.]*\)],
806 if test $gcc_cv_prog_makeinfo_modern = no; then
808 *** Makeinfo is missing or too old.
809 *** Info documentation will not be built.])
816 # Is pod2man recent enough to regenerate manpages?
817 AC_MSG_CHECKING([for recent Pod::Man])
818 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
820 GENERATED_MANPAGES=generated-manpages
825 AC_SUBST(GENERATED_MANPAGES)
827 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
830 dnl Don't use AC_PROG_LEX; we insist on flex.
831 dnl LEXLIB is not useful in gcc.
832 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
835 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
837 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
838 # check for build == host before using them.
841 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
842 && test -d ../binutils ; then
843 NM='$(objdir)/../binutils/nm-new'
845 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
849 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
850 && test -d ../binutils ; then
851 AR='$(objdir)/../binutils/ar'
853 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
857 # --------------------
858 # Checks for C headers
859 # --------------------
861 AC_MSG_CHECKING(for GNU C library)
862 AC_CACHE_VAL(gcc_cv_glibc,
863 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
864 [[#include <features.h>]], [[
865 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
866 #error Not a GNU C library system
870 AC_MSG_RESULT($gcc_cv_glibc)
871 if test $gcc_cv_glibc = yes; then
872 AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
875 # Need to reject headers which give warnings, so that the -Werror bootstrap
876 # works later. *sigh* This needs to come before all header checks.
883 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
884 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
885 sys/resource.h sys/param.h sys/times.h sys/stat.h \
886 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
888 # Check for thread headers.
889 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
890 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
892 # These tests can't be done till we know if we have limits.h.
901 # These libraries may be used by collect2.
902 # We may need a special search path to get them linked.
903 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
905 for libs in '' -lld -lmld \
906 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
907 '-L/usr/lib/cmplrs/cc3.11 -lmld'
910 AC_TRY_LINK_FUNC(ldopen,
911 [gcc_cv_collect2_libs="$libs"; break])
914 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
915 case $gcc_cv_collect2_libs in
917 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
919 AC_SUBST(COLLECT2_LIBS)
921 # When building Ada code on Alpha, we need exc_resume which is usually in
922 # -lexc. So test for it.
925 AC_SEARCH_LIBS(exc_resume, exc)
928 AC_SUBST(GNAT_LIBEXC)
930 # Some systems put ldexp and frexp in libm instead of libc; assume
931 # they're both in the same place. jcf-dump needs them.
934 AC_SEARCH_LIBS(ldexp, m)
939 # Use <inttypes.h> only if it exists,
940 # doesn't clash with <sys/types.h>, and declares intmax_t.
941 AC_MSG_CHECKING(for inttypes.h)
942 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
943 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
944 [[#include <sys/types.h>
945 #include <inttypes.h>]],
946 [[intmax_t i = -1;]])],
947 [gcc_cv_header_inttypes_h=yes],
948 [gcc_cv_header_inttypes_h=no])])
949 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
950 if test $gcc_cv_header_inttypes_h = yes; then
951 AC_DEFINE(HAVE_INTTYPES_H, 1,
952 [Define if you have a working <inttypes.h> header file.])
955 dnl Disabled until we have a complete test for buggy enum bitfields.
956 dnl gcc_AC_C_ENUM_BF_UNSIGNED
958 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
959 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
960 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
961 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
962 putchar_unlocked putc_unlocked)
963 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
964 sysconf strsignal getrusage nl_langinfo scandir alphasort \
965 gettimeofday mbstowcs wcswidth mmap mincore setlocale \
968 if test x$ac_cv_func_mbstowcs = xyes; then
969 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
970 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
976 [gcc_cv_func_mbstowcs_works=yes],
977 [gcc_cv_func_mbstowcs_works=no],
978 [gcc_cv_func_mbstowcs_works=yes])])
979 if test x$gcc_cv_func_mbstowcs_works = xyes; then
980 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
981 [Define this macro if mbstowcs does not crash when its
982 first argument is NULL.])
986 AC_CHECK_TYPE(ssize_t, int)
988 # Try to determine the array type of the second argument of getgroups
989 # for the target system (int or gid_t).
991 if test "${target}" = "${build}"; then
992 TARGET_GETGROUPS_T=$ac_cv_type_getgroups
995 # This condition may need some tweaking. It should include all
996 # targets where the array type of the second argument of getgroups
997 # is int and the type of gid_t is not equivalent to int.
998 *-*-sunos* | *-*-ultrix*)
999 TARGET_GETGROUPS_T=int
1002 TARGET_GETGROUPS_T=gid_t
1006 AC_SUBST(TARGET_GETGROUPS_T)
1008 gcc_AC_FUNC_MMAP_BLACKLIST
1012 # Under VMS, vfork works very differently than on Unix. The standard test
1013 # won't work, and it isn't easily adaptable. It makes more sense to
1015 ac_cv_func_vfork_works=yes
1021 # Until we have in-tree GNU iconv:
1023 AC_SUBST(LIBICONV_DEP)
1029 # We will need to find libiberty.h and ansidecl.h
1030 saved_CFLAGS="$CFLAGS"
1031 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1032 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1033 strsignal strstr strverscmp \
1034 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1035 free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1036 #include "ansidecl.h"
1037 #include "system.h"])
1039 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1040 #include "ansidecl.h"
1042 #ifdef HAVE_SYS_RESOURCE_H
1043 #include <sys/resource.h>
1047 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1048 #include "ansidecl.h"
1050 #ifdef HAVE_SYS_RESOURCE_H
1051 #include <sys/resource.h>
1053 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1054 [Define to \`long' if <sys/resource.h> doesn't define.])])
1056 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1057 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1058 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1059 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1060 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1061 #include "ansidecl.h"
1070 gcc_AC_CHECK_DECLS(times, , ,[
1071 #include "ansidecl.h"
1073 #ifdef HAVE_SYS_TIMES_H
1074 #include <sys/times.h>
1078 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1079 #include "ansidecl.h"
1084 # More time-related stuff.
1085 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1086 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1087 #include "ansidecl.h"
1089 #ifdef HAVE_SYS_TIMES_H
1090 #include <sys/times.h>
1092 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1093 if test $ac_cv_struct_tms = yes; then
1094 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1095 [Define if <sys/times.h> defines struct tms.])
1098 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1099 # revisit after autoconf 2.50.
1100 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1101 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1102 #include "ansidecl.h"
1104 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1105 if test $gcc_cv_type_clock_t = yes; then
1106 AC_DEFINE(HAVE_CLOCK_T, 1,
1107 [Define if <time.h> defines clock_t.])
1110 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1111 CFLAGS="$saved_CFLAGS"
1113 gcc_AC_INITFINI_ARRAY
1115 # mkdir takes a single argument on some systems.
1116 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1124 # With Setjmp/Longjmp based exception handling.
1125 AC_ARG_ENABLE(sjlj-exceptions,
1126 [ --enable-sjlj-exceptions
1127 arrange to use setjmp/longjmp exception handling],
1128 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1129 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1130 [Define 0/1 to force the choice for exception handling model.])])
1132 # For platforms with the unwind ABI which includes an unwind library,
1133 # libunwind, we can choose to use the system libunwind.
1134 AC_ARG_WITH(system-libunwind,
1135 [ --with-system-libunwind use installed libunwind])
1137 # config.gcc also contains tests of with_system_libunwind.
1138 if test x$with_system_libunwind = xyes; then
1139 AC_DEFINE(HAVE_GETIPINFO, 1,
1140 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1143 # --------------------------------------------------------
1144 # Build, host, and target specific configuration fragments
1145 # --------------------------------------------------------
1147 # Collect build-machine-specific information.
1148 . ${srcdir}/config.build
1150 # Collect host-machine-specific information.
1151 . ${srcdir}/config.host
1155 # Collect target-machine-specific information.
1156 . ${srcdir}/config.gcc
1158 extra_objs="${host_extra_objs} ${extra_objs}"
1159 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1161 # Default the target-machine variables that were not explicitly set.
1162 if test x"$tm_file" = x
1163 then tm_file=$cpu_type/$cpu_type.h; fi
1165 if test x"$extra_headers" = x
1166 then extra_headers=; fi
1168 if test x$md_file = x
1169 then md_file=$cpu_type/$cpu_type.md; fi
1171 if test x$out_file = x
1172 then out_file=$cpu_type/$cpu_type.c; fi
1174 if test x"$tmake_file" = x
1175 then tmake_file=$cpu_type/t-$cpu_type
1178 if test x"$dwarf2" = xyes
1179 then tm_file="$tm_file tm-dwarf2.h"
1182 # Say what files are being used for the output code and MD file.
1183 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1184 echo "Using \`$srcdir/config/$md_file' as machine description file."
1186 # If any of the xm_file variables contain nonexistent files, warn
1187 # about them and drop them.
1190 for x in $build_xm_file; do
1191 if test -f $srcdir/config/$x
1193 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1199 for x in $host_xm_file; do
1200 if test -f $srcdir/config/$x
1202 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1208 for x in $xm_file; do
1209 if test -f $srcdir/config/$x
1211 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1217 for f in $tm_file; do
1220 if test $count = ax; then
1221 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1223 echo "Using the following target machine macro files:"
1224 for f in $tm_file; do
1225 echo " $srcdir/config/$f"
1229 if test x$need_64bit_hwint = xyes; then
1230 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1231 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1234 if test x$use_long_long_for_widest_fast_int = xyes; then
1235 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1236 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1237 efficiently supported by the host hardware.])
1241 for f in $host_xm_file; do
1244 if test $count = a; then
1246 elif test $count = ax; then
1247 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1249 echo "Using the following host machine macro files:"
1250 for f in $host_xm_file; do
1251 echo " $srcdir/config/$f"
1254 echo "Using ${out_host_hook_obj} for host machine hooks."
1256 if test "$host_xm_file" != "$build_xm_file"; then
1258 for f in $build_xm_file; do
1261 if test $count = a; then
1263 elif test $count = ax; then
1264 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1266 echo "Using the following build machine macro files:"
1267 for f in $build_xm_file; do
1268 echo " $srcdir/config/$f"
1275 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1276 gcc_cv_mcontext_underscores,
1278 #include <sys/cdefs.h>
1279 #include <sys/signal.h>
1280 #include <ucontext.h>
1281 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1283 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1284 if test $gcc_cv_mcontext_underscores = yes; then
1285 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1286 [mcontext_t fields start with __])
1295 # Check if a valid thread package
1296 case ${enable_threads} in
1299 target_thread_file='single'
1303 target_thread_file='single'
1305 aix | dce | gnat | irix | posix | posix95 | rtems | \
1306 single | solaris | vxworks | win32 )
1307 target_thread_file=${enable_threads}
1310 echo "${enable_threads} is an unknown thread package" 1>&2
1315 if test x${thread_file} = x; then
1316 # No thread file set by target-specific clauses in config.gcc,
1317 # so use file chosen by default logic above
1318 thread_file=${target_thread_file}
1321 # Make gthr-default.h if we have a thread file.
1323 if test $thread_file != single; then
1324 rm -f gthr-default.h
1325 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
1326 gthread_flags=-DHAVE_GTHR_DEFAULT
1328 AC_SUBST(gthread_flags)
1335 if test x$enable___cxa_atexit = xyes || \
1336 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1337 if test x$host = x$target; then
1339 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1340 # keyed to flag_use_cxa_atexit
1345 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1346 [echo "__cxa_atexit can't be enabled on this target"])
1350 # We can't check for __cxa_atexit when building a cross, so assume
1354 if test x$use_cxa_atexit = xyes; then
1355 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1356 [Define if you want to use __cxa_atexit, rather than atexit, to
1357 register C++ destructors for local statics and global objects.
1358 This is essential for fully standards-compliant handling of
1359 destructors, but requires __cxa_atexit in libc.])
1364 if test x$with_system_libunwind = xyes; then
1365 if test x$host = x$target; then
1366 AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no])
1369 GCC_TARGET_TEMPLATE(HAVE_GETIPINFO)
1370 if test x$use_getipinfo = xyes; then
1371 AC_DEFINE(HAVE_GETIPINFO, 1,
1372 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1374 echo "The system unwind library does not support _Unwind_GetIPInfo."
1377 # Look for a file containing extra machine modes.
1378 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1379 extra_modes_file='$(srcdir)'/config/${extra_modes}
1380 AC_SUBST(extra_modes_file)
1381 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1382 [Define to the name of a file containing a list of extra machine modes
1383 for this architecture.])
1386 # Convert extra_options into a form suitable for Makefile use.
1388 for f in $extra_options; do
1389 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1391 AC_SUBST(extra_opt_files)
1393 # auto-host.h is the file containing items generated by autoconf and is
1394 # the first file included by config.h.
1395 # If host=build, it is correct to have bconfig include auto-host.h
1396 # as well. If host!=build, we are in error and need to do more
1397 # work to find out the build config parameters.
1398 if test x$host = x$build
1400 build_auto=auto-host.h
1402 # We create a subdir, then run autoconf in the subdir.
1403 # To prevent recursion we set host and build for the new
1404 # invocation of configure to the build for this invocation
1411 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1412 *) realsrcdir=../${srcdir};;
1414 saved_CFLAGS="${CFLAGS}"
1415 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1416 ${realsrcdir}/configure \
1417 --enable-languages=${enable_languages-all} \
1418 --target=$target_alias --host=$build_alias --build=$build_alias
1419 CFLAGS="${saved_CFLAGS}"
1421 # We just finished tests for the build machine, so rename
1422 # the file auto-build.h in the gcc directory.
1423 mv auto-host.h ../auto-build.h
1426 build_auto=auto-build.h
1428 AC_SUBST(build_subdir)
1430 tm_file="${tm_file} defaults.h"
1431 tm_p_file="${tm_p_file} tm-preds.h"
1432 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1433 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1434 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1435 # put this back in temporarily.
1436 xm_file="auto-host.h ansidecl.h ${xm_file}"
1443 # Compile in configure arguments.
1444 if test -f configargs.h ; then
1445 # Being re-configured.
1446 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1447 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1449 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1452 # Double all backslashes and backslash all quotes to turn
1453 # gcc_config_arguments into a C string.
1454 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1455 $gcc_config_arguments
1457 gcc_config_arguments_str=`cat conftest.out`
1460 cat > configargs.h <<EOF
1461 /* Generated automatically. */
1462 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1463 static const char thread_model[] = "$thread_file";
1465 static const struct {
1466 const char *name, *value;
1467 } configure_default_options[] = $configure_default_options;
1471 # Internationalization
1472 ZW_GNU_GETTEXT_SISTER_DIR
1474 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1475 # -liconv on the link line twice.
1476 case "$LIBINTL" in *$LIBICONV*)
1480 AC_ARG_ENABLE(secureplt,
1481 [ --enable-secureplt enable -msecure-plt by default for PowerPC],
1484 # Windows32 Registry support for specifying GCC installation paths.
1485 AC_ARG_ENABLE(win32-registry,
1486 [ --disable-win32-registry
1487 disable lookup of installation paths in the
1488 Registry on Windows hosts
1489 --enable-win32-registry enable registry lookup (default)
1490 --enable-win32-registry=KEY
1491 use KEY instead of GCC version as the last portion
1492 of the registry key],,)
1495 win32 | pe | cygwin* | mingw32* | uwin*)
1496 if test "x$enable_win32_registry" != xno; then
1497 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1500 if test "x$enable_win32_registry" != xno; then
1501 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1502 [Define to 1 if installation paths should be looked up in the Windows
1503 Registry. Ignored on non-Windows hosts.])
1505 if test "x$enable_win32_registry" != xyes \
1506 && test "x$enable_win32_registry" != x; then
1507 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1508 [Define to be the last component of the Windows registry key under which
1509 to look for installation paths. The full key used will be
1510 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1511 The default is the GCC version number.])
1517 # Get an absolute path to the GCC top-level source directory
1518 holddir=`${PWDCMD-pwd}`
1520 topdir=`${PWDCMD-pwd}`
1523 # Conditionalize the makefile for this host machine.
1525 for f in ${host_xmake_file}
1527 if test -f ${srcdir}/config/$f
1529 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1533 # Conditionalize the makefile for this target machine.
1535 for f in ${tmake_file}
1537 if test -f ${srcdir}/config/$f
1539 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1542 tmake_file="${tmake_file_}"
1544 # This is a terrible hack which will go away some day.
1545 host_cc_for_libada=${CC}
1546 AC_SUBST(host_cc_for_libada)
1548 out_object_file=`basename $out_file .c`.o
1550 tm_file_list="options.h"
1551 tm_include_list="options.h"
1552 for f in $tm_file; do
1555 f=`echo $f | sed 's/^..//'`
1556 tm_file_list="${tm_file_list} $f"
1557 tm_include_list="${tm_include_list} $f"
1560 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1561 tm_include_list="${tm_include_list} $f"
1564 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1565 tm_include_list="${tm_include_list} config/$f"
1572 for f in $tm_p_file; do
1575 tm_p_file_list="${tm_p_file_list} $f"
1576 tm_p_include_list="${tm_p_include_list} $f"
1579 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1580 tm_p_include_list="${tm_p_include_list} config/$f"
1586 for f in $xm_file; do
1589 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1590 xm_include_list="${xm_include_list} $f"
1593 xm_file_list="${xm_file_list} $f"
1594 xm_include_list="${xm_include_list} $f"
1597 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1598 xm_include_list="${xm_include_list} config/$f"
1604 host_xm_include_list=
1605 for f in $host_xm_file; do
1608 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1609 host_xm_include_list="${host_xm_include_list} $f"
1612 host_xm_file_list="${host_xm_file_list} $f"
1613 host_xm_include_list="${host_xm_include_list} $f"
1616 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1617 host_xm_include_list="${host_xm_include_list} config/$f"
1623 for f in $build_xm_file; do
1626 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1627 build_xm_include_list="${build_xm_include_list} $f"
1629 auto-build.h | auto-host.h )
1630 build_xm_file_list="${build_xm_file_list} $f"
1631 build_xm_include_list="${build_xm_include_list} $f"
1634 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1635 build_xm_include_list="${build_xm_include_list} config/$f"
1640 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1641 # cross-compiler which does not use the native headers and libraries.
1642 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1643 CROSS= AC_SUBST(CROSS)
1644 ALL=all.internal AC_SUBST(ALL)
1645 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1647 if test "x$with_build_sysroot" != x; then
1648 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1650 # This value is used, even on a native system, because
1651 # CROSS_SYSTEM_HEADER_DIR is just
1652 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1653 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1656 if test x$host != x$target
1658 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1660 SYSTEM_HEADER_DIR=$build_system_header_dir
1661 case "$host","$target" in
1662 # Darwin crosses can use the host system's libraries and headers,
1663 # because of the fat library support. Of course, it must be the
1664 # same version of Darwin on both sides. Allow the user to
1665 # just say --target=foo-darwin without a version number to mean
1666 # "the version on this system".
1667 *-*-darwin*,*-*-darwin*)
1668 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1669 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1670 if test $hostos = $targetos -o $targetos = darwin ; then
1672 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1677 i?86-*-*,x86_64-*-* \
1678 | powerpc*-*-*,powerpc64*-*-*)
1679 CROSS="$CROSS -DNATIVE_CROSS" ;;
1681 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1682 SYSTEM_HEADER_DIR=$build_system_header_dir
1685 # If this is a cross-compiler that does not
1686 # have its own set of headers then define
1689 # If this is using newlib, without having the headers available now,
1690 # then define inhibit_libc in LIBGCC2_CFLAGS.
1691 # This prevents libgcc2 from containing any code which requires libc
1694 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1695 test x$with_newlib = xyes ; } &&
1696 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1699 AC_SUBST(inhibit_libc)
1701 # When building gcc with a cross-compiler, we need to adjust things so
1702 # that the generator programs are still built with the native compiler.
1703 # Also, we cannot run fixincludes or fix-header.
1705 # These are the normal (build=host) settings:
1706 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
1707 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
1708 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
1710 # Possibly disable fixproto, on a per-target basis.
1711 case ${use_fixproto} in
1716 STMP_FIXPROTO=stmp-fixproto
1719 AC_SUBST(STMP_FIXPROTO)
1721 # And these apply if build != host, or we are generating coverage data
1722 if test x$build != x$host || test "x$coverage_flags" != x
1724 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1726 if test "x$TARGET_SYSTEM_ROOT" = x; then
1727 if test "x$STMP_FIXPROTO" != x; then
1728 STMP_FIXPROTO=stmp-install-fixproto
1733 # Expand extra_headers to include complete path.
1734 # This substitutes for lots of t-* files.
1736 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1737 for file in ${extra_headers} ; do
1738 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1741 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1742 if test x"$use_gcc_tgmath" = xyes
1743 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1746 # Define collect2 in Makefile.
1747 case $host_can_use_collect2 in
1749 *) collect2='collect2$(exeext)' ;;
1751 AC_SUBST([collect2])
1753 # Add a definition of USE_COLLECT2 if system wants one.
1754 case $use_collect2 in
1755 no) use_collect2= ;;
1758 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1759 xm_defines="${xm_defines} USE_COLLECT2"
1760 case $host_can_use_collect2 in
1762 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1768 # ---------------------------
1769 # Assembler & linker features
1770 # ---------------------------
1772 # Identify the assembler which will work hand-in-glove with the newly
1773 # built GCC, so that we can examine its features. This is the assembler
1774 # which will be driven by the driver program.
1776 # If build != host, and we aren't building gas in-tree, we identify a
1777 # build->target assembler and hope that it will have the same features
1778 # as the host->target assembler we'll be using.
1779 gcc_cv_gas_major_version=
1780 gcc_cv_gas_minor_version=
1781 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1783 m4_pattern_allow([AS_FOR_TARGET])dnl
1784 AS_VAR_SET_IF(gcc_cv_as,, [
1785 if test -x "$DEFAULT_ASSEMBLER"; then
1786 gcc_cv_as="$DEFAULT_ASSEMBLER"
1787 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1788 && test -f ../gas/Makefile \
1789 && test x$build = x$host; then
1790 gcc_cv_as=../gas/as-new$build_exeext
1791 elif test -x as$build_exeext; then
1792 # Build using assembler in the current directory.
1793 gcc_cv_as=./as$build_exeext
1794 elif test -x $AS_FOR_TARGET; then
1795 gcc_cv_as="$AS_FOR_TARGET"
1797 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1800 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1801 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1802 case "$ORIGINAL_AS_FOR_TARGET" in
1803 ./as | ./as$build_exeext) ;;
1804 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1807 AC_MSG_CHECKING(what assembler to use)
1808 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1809 # Single tree build which includes gas. We want to prefer it
1810 # over whatever linker top-level may have detected, since
1811 # we'll use what we're building after installation anyway.
1812 AC_MSG_RESULT(newly built gas)
1814 _gcc_COMPUTE_GAS_VERSION
1815 in_tree_gas_is_elf=no
1816 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1817 || (grep 'obj_format = multi' ../gas/Makefile \
1818 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1820 in_tree_gas_is_elf=yes
1823 AC_MSG_RESULT($gcc_cv_as)
1827 # Identify the linker which will work hand-in-glove with the newly
1828 # built GCC, so that we can examine its features. This is the linker
1829 # which will be driven by the driver program.
1831 # If build != host, and we aren't building gas in-tree, we identify a
1832 # build->target linker and hope that it will have the same features
1833 # as the host->target linker we'll be using.
1834 gcc_cv_gld_major_version=
1835 gcc_cv_gld_minor_version=
1836 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1837 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1839 AS_VAR_SET_IF(gcc_cv_ld,, [
1840 if test -x "$DEFAULT_LINKER"; then
1841 gcc_cv_ld="$DEFAULT_LINKER"
1842 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1843 && test -f ../ld/Makefile \
1844 && test x$build = x$host; then
1845 gcc_cv_ld=../ld/ld-new$build_exeext
1846 elif test -x collect-ld$build_exeext; then
1847 # Build using linker in the current directory.
1848 gcc_cv_ld=./collect-ld$build_exeext
1849 elif test -x $LD_FOR_TARGET; then
1850 gcc_cv_ld="$LD_FOR_TARGET"
1852 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1855 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1856 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
1857 case "$ORIGINAL_LD_FOR_TARGET" in
1858 ./collect-ld | ./collect-ld$build_exeext) ;;
1859 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
1862 AC_MSG_CHECKING(what linker to use)
1863 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
1864 # Single tree build which includes ld. We want to prefer it
1865 # over whatever linker top-level may have detected, since
1866 # we'll use what we're building after installation anyway.
1867 AC_MSG_RESULT(newly built ld)
1869 in_tree_ld_is_elf=no
1870 if (grep 'EMUL = .*elf' ../ld/Makefile \
1871 || grep 'EMUL = .*linux' ../ld/Makefile \
1872 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1873 in_tree_ld_is_elf=yes
1875 for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.in $gcc_cv_ld_gld_srcdir/Makefile.in
1878 gcc_cv_gld_version=`sed -n -e 's/^[ ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1879 if test x$gcc_cv_gld_version != x; then
1883 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1884 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1887 AC_MSG_RESULT($gcc_cv_ld)
1891 # Figure out what nm we will be using.
1892 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1893 AS_VAR_SET_IF(gcc_cv_nm,, [
1894 if test -f $gcc_cv_binutils_srcdir/configure.in \
1895 && test -f ../binutils/Makefile \
1896 && test x$build = x$host; then
1897 gcc_cv_nm=../binutils/nm-new$build_exeext
1898 elif test -x nm$build_exeext; then
1899 gcc_cv_nm=./nm$build_exeext
1900 elif test -x $NM_FOR_TARGET; then
1901 gcc_cv_nm="$NM_FOR_TARGET"
1903 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1906 AC_MSG_CHECKING(what nm to use)
1907 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1908 # Single tree build which includes binutils.
1909 AC_MSG_RESULT(newly built nm)
1912 AC_MSG_RESULT($gcc_cv_nm)
1916 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
1917 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
1918 case "$ORIGINAL_NM_FOR_TARGET" in
1919 ./nm | ./nm$build_exeext) ;;
1920 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
1924 # Figure out what objdump we will be using.
1925 AS_VAR_SET_IF(gcc_cv_objdump,, [
1926 if test -f $gcc_cv_binutils_srcdir/configure.in \
1927 && test -f ../binutils/Makefile \
1928 && test x$build = x$host; then
1929 # Single tree build which includes binutils.
1930 gcc_cv_objdump=../binutils/objdump$build_exeext
1931 elif test -x objdump$build_exeext; then
1932 gcc_cv_objdump=./objdump$build_exeext
1933 elif test -x $OBJDUMP_FOR_TARGET; then
1934 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
1936 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
1939 AC_MSG_CHECKING(what objdump to use)
1940 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
1941 # Single tree build which includes binutils.
1942 AC_MSG_RESULT(newly built objdump)
1943 elif test x$gcc_cv_objdump = x; then
1944 AC_MSG_RESULT(not found)
1946 AC_MSG_RESULT($gcc_cv_objdump)
1949 # Figure out what assembler alignment features are present.
1950 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
1954 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
1955 [Define if your assembler supports .balign and .p2align.])])
1957 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
1960 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
1961 [Define if your assembler supports specifying the maximum number
1962 of bytes to skip when using the GAS .p2align command.])])
1964 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
1967 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
1968 [Define if your assembler supports .literal16.])])
1970 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
1972 [conftest_label1: .word 0
1974 conftest_label2: .word 0
1976 [if test x$gcc_cv_nm != x; then
1977 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1978 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1979 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
1981 else gcc_cv_as_subsection_m1=yes
1983 rm -f conftest.nm1 conftest.nm2
1985 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1986 [Define if your assembler supports .subsection and .subsection -1 starts
1987 emitting at the beginning of your section.])])
1989 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
1992 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
1994 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
1996 [ .weakref foobar, barfnot],,
1997 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
1999 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2002 .NSUBSPA $CODE$,COMDAT],,
2003 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2005 # .hidden needs to be supported in both the assembler and the linker,
2006 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2007 # This is irritatingly difficult to feature test for; we have to check the
2008 # date string after the version number. If we've got an in-tree
2009 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2011 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2012 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2017 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2018 [if test $in_tree_ld = yes ; then
2020 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \
2021 && test $in_tree_ld_is_elf = yes; then
2022 gcc_cv_ld_hidden=yes
2025 gcc_cv_ld_hidden=yes
2026 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2027 if echo "$ld_ver" | grep GNU > /dev/null; then
2029 ld_vers=`echo $ld_ver | sed -n \
2030 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2031 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2032 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2033 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
2034 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
2035 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
2036 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ -].*$,\1,p'`
2037 ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
2038 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2039 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2040 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2041 if test 0"$ld_date" -lt 20020404; then
2042 if test -n "$ld_date"; then
2043 # If there was date string, but was earlier than 2002-04-04, fail
2045 elif test -z "$ld_vers"; then
2046 # If there was no date string nor ld version number, something is wrong
2049 test -z "$ld_vers_patch" && ld_vers_patch=0
2050 if test "$ld_vers_major" -lt 2; then
2052 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2053 gcc_cv_ld_hidden="no"
2054 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2062 hppa64*-*-hpux* | ia64*-*-hpux*)
2063 gcc_cv_ld_hidden=yes
2071 libgcc_visibility=no
2072 AC_SUBST(libgcc_visibility)
2073 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2074 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2075 libgcc_visibility=yes
2076 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2077 [Define if your assembler and linker support .hidden.])
2080 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2081 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2089 [# GAS versions before 2.11 do not support uleb128,
2090 # despite appearing to.
2091 # ??? There exists an elf-specific test that will crash
2092 # the assembler. Perhaps it's better to figure out whether
2093 # arbitrary sections are supported and try the test.
2094 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2095 if echo "$as_ver" | grep GNU > /dev/null; then
2097 as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
2098 as_major=`echo $as_ver | sed 's/\..*//'`
2099 as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
2101 if test $as_major -eq 2 && test $as_minor -lt 11
2103 else gcc_cv_as_leb128=yes
2106 [AC_DEFINE(HAVE_AS_LEB128, 1,
2107 [Define if your assembler supports .sleb128 and .uleb128.])])
2109 # GAS versions up to and including 2.11.0 may mis-optimize
2111 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2119 .section .eh_frame,"aw",@progbits
2121 .4byte .LECIE1-.LSCIE1
2135 .4byte .LEFDE1-.LASFDE1
2137 .4byte .LASFDE1-__FRAME_BEGIN__
2145 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2146 cat > conftest.lit <<EOF
2147 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2148 0010 01000000 12000000 18000000 00000000 ................
2149 0020 08000000 04080000 0044 .........D @&t@
2151 cat > conftest.big <<EOF
2152 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2153 0010 00000001 00000012 00000018 00000000 ................
2154 0020 00000008 04000000 0844 .........D @&t@
2156 # If the assembler didn't choke, and we can objdump,
2157 # and we got the correct data, then succeed.
2158 # The text in the here-document typically retains its unix-style line
2159 # endings, while the output of objdump will use host line endings.
2160 # Therefore, use diff -b for the comparisons.
2161 if test x$gcc_cv_objdump != x \
2162 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2163 | tail -3 > conftest.got \
2164 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2165 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2167 gcc_cv_as_eh_frame=yes
2168 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2169 gcc_cv_as_eh_frame=buggy
2171 # Uh oh, what do we do now?
2172 gcc_cv_as_eh_frame=no
2175 if test $gcc_cv_as_eh_frame = buggy; then
2176 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2177 [Define if your assembler mis-optimizes .eh_frame data.])
2180 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2181 [elf,2,12,0], [--fatal-warnings],
2182 [.section .rodata.str, "aMS", @progbits, 1])
2183 if test $gcc_cv_as_shf_merge = no; then
2184 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2185 [elf,2,12,0], [--fatal-warnings],
2186 [.section .rodata.str, "aMS", %progbits, 1])
2188 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2189 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2190 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2192 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2193 [elf,2,16,0], [--fatal-warnings],
2194 [.section .text,"axG",@progbits,.foo,comdat])
2195 if test $gcc_cv_as_comdat_group = yes; then
2196 gcc_cv_as_comdat_group_percent=no
2198 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2199 [elf,2,16,0], [--fatal-warnings],
2200 [.section .text,"axG",%progbits,.foo,comdat])
2202 if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2204 if test 0"$ld_date" -lt 20050308; then
2205 if test -n "$ld_date"; then
2206 # If there was date string, but was earlier than 2005-03-08, fail
2208 elif test "$ld_vers_major" -lt 2; then
2210 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2215 # assume linkers other than GNU ld don't support COMDAT group
2218 if test $comdat_group = no; then
2219 gcc_cv_as_comdat_group=no
2220 gcc_cv_as_comdat_group_percent=no
2222 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2223 [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2224 [Define 0/1 if your assembler and linker support COMDAT groups.])
2226 # Thread-local storage - the check is heavily parametrized.
2235 .section ".tdata","awT",@progbits
2238 ldq $27,__tls_get_addr($29) !literal!1
2239 lda $16,foo($29) !tlsgd!1
2240 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2241 ldq $27,__tls_get_addr($29) !literal!2
2242 lda $16,foo($29) !tlsldm!2
2243 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2244 ldq $1,foo($29) !gotdtprel
2245 ldah $2,foo($29) !dtprelhi
2246 lda $3,foo($2) !dtprello
2247 lda $4,foo($29) !dtprel
2248 ldq $1,foo($29) !gottprel
2249 ldah $2,foo($29) !tprelhi
2250 lda $3,foo($2) !tprello
2251 lda $4,foo($29) !tprel'
2254 tls_as_opt=--fatal-warnings
2258 .section ".tdata","awT",@progbits
2270 .section ".tdata","awT",@progbits
2274 addil LT%foo-$tls_gdidx$,gp
2275 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2278 addil LT%foo-$tls_ldidx$,gp
2280 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2281 addil LR%foo-$tls_dtpoff$,%ret0
2282 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2284 addil LT%foo-$tls_ieoff$,gp
2285 ldw RT%foo-$tls_ieoff$(%r1),%t2
2288 addil LR%foo-$tls_leoff$,%t1
2289 ldo RR%foo-$tls_leoff$(%r1),%t2'
2292 tls_as_opt=--fatal-warnings
2296 .section ".tdata","awT",%progbits
2309 .section ".tdata","awT",@progbits
2313 leal foo@TLSGD(,%ebx,1), %eax
2314 leal foo@TLSLDM(%ebx), %eax
2315 leal foo@DTPOFF(%eax), %edx
2316 movl foo@GOTTPOFF(%ebx), %eax
2317 subl foo@GOTTPOFF(%ebx), %eax
2318 addl foo@GOTNTPOFF(%ebx), %eax
2319 movl foo@INDNTPOFF, %eax
2320 movl $foo@TPOFF, %eax
2321 subl $foo@TPOFF, %eax
2322 leal foo@NTPOFF(%ecx), %eax'
2325 tls_as_opt=--fatal-warnings
2329 .section ".tdata","awT",@progbits
2333 leaq foo@TLSGD(%rip), %rdi
2334 leaq foo@TLSLD(%rip), %rdi
2335 leaq foo@DTPOFF(%rax), %rdx
2336 movq foo@GOTTPOFF(%rip), %rax
2337 movq $foo@TPOFF, %rax'
2340 tls_as_opt=--fatal-warnings
2344 .section ".tdata","awT",@progbits
2347 addl r16 = @ltoff(@dtpmod(foo#)), gp
2348 addl r17 = @ltoff(@dtprel(foo#)), gp
2349 addl r18 = @ltoff(@tprel(foo#)), gp
2350 addl r19 = @dtprel(foo#), gp
2351 adds r21 = @dtprel(foo#), r13
2352 movl r23 = @dtprel(foo#)
2353 addl r20 = @tprel(foo#), gp
2354 adds r22 = @tprel(foo#), r13
2355 movl r24 = @tprel(foo#)'
2358 tls_as_opt=--fatal-warnings
2362 .section .tdata,"awT",@progbits
2366 addiu $4, $28, %tlsgd(x)
2367 addiu $4, $28, %tlsldm(x)
2368 lui $4, %dtprel_hi(x)
2369 addiu $4, $4, %dtprel_lo(x)
2370 lw $4, %gottprel(x)($28)
2371 lui $4, %tprel_hi(x)
2372 addiu $4, $4, %tprel_lo(x)'
2375 tls_as_opt='-32 --fatal-warnings'
2379 .section ".tdata","awT",@progbits
2387 addi 3,31,ld0@got@tlsgd
2389 addi 3,31,x1@got@tlsld
2392 addis 9,3,x2@dtprel@ha
2393 addi 9,9,x2@dtprel@l
2394 lwz 9,x3@got@tprel(31)
2397 addis 9,2,x2@tprel@ha
2398 addi 9,9,x2@tprel@l'
2401 tls_as_opt="-a32 --fatal-warnings"
2405 .section ".tdata","awT",@progbits
2413 addi 3,2,ld0@got@tlsgd
2419 addi 3,2,x1@got@tlsld
2425 addis 9,3,x2@dtprel@ha
2426 addi 9,9,x2@dtprel@l
2429 ld 9,x3@got@dtprel(2)
2435 tls_as_opt="-a64 --fatal-warnings"
2439 .section ".tdata","awT",@progbits
2448 l %r1,foo@GOTNTPOFF(%r12)
2449 l %r1,0(%r1):tls_load:foo
2450 bas %r14,0(%r1,%r13):tls_gdcall:foo
2451 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2454 tls_as_opt="-m31 --fatal-warnings"
2458 .section ".tdata","awT",@progbits
2466 lg %r1,foo@GOTNTPOFF(%r12)
2467 larl %r1,foo@INDNTPOFF
2468 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2469 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2472 tls_as_opt="-m64 -Aesame --fatal-warnings"
2474 sh-*-* | sh[34]-*-*)
2476 .section ".tdata","awT",@progbits
2486 tls_as_opt=--fatal-warnings
2490 sparc*-sun-solaris2.[56789]*)
2491 # TLS was introduced in the Solaris 9 4/04 release but
2492 # we do not enable it by default on Solaris 9 either.
2493 if test "x$enable_tls" = xyes ; then
2499 sparc*-sun-solaris2.*)
2506 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2508 .section ".tdata",#alloc,#write,#tls
2511 sethi %tgd_hi22(foo), %o0
2512 add %o0, %tgd_lo10(foo), %o1
2513 add %l7, %o1, %o0, %tgd_add(foo)
2514 call __tls_get_addr, %tgd_call(foo)
2515 sethi %tldm_hi22(foo), %l1
2516 add %l1, %tldm_lo10(foo), %l2
2517 add %l7, %l2, %o0, %tldm_add(foo)
2518 call __tls_get_addr, %tldm_call(foo)
2519 sethi %tldo_hix22(foo), %l3
2520 xor %l3, %tldo_lox10(foo), %l4
2521 add %o0, %l4, %l5, %tldo_add(foo)
2522 sethi %tie_hi22(foo), %o3
2523 add %o3, %tie_lo10(foo), %o3
2524 ld [%l7 + %o3], %o2, %tie_ld(foo)
2525 add %g7, %o2, %o4, %tie_add(foo)
2526 sethi %tle_hix22(foo), %l1
2527 xor %l1, %tle_lox10(foo), %o5
2528 ld [%g7 + %o5], %o1'
2533 .section ".tdata","awT",@progbits
2536 sethi %tgd_hi22(foo), %o0
2537 add %o0, %tgd_lo10(foo), %o1
2538 add %l7, %o1, %o0, %tgd_add(foo)
2539 call __tls_get_addr, %tgd_call(foo)
2540 sethi %tldm_hi22(foo), %l1
2541 add %l1, %tldm_lo10(foo), %l2
2542 add %l7, %l2, %o0, %tldm_add(foo)
2543 call __tls_get_addr, %tldm_call(foo)
2544 sethi %tldo_hix22(foo), %l3
2545 xor %l3, %tldo_lox10(foo), %l4
2546 add %o0, %l4, %l5, %tldo_add(foo)
2547 sethi %tie_hi22(foo), %o3
2548 add %o3, %tie_lo10(foo), %o3
2549 ld [%l7 + %o3], %o2, %tie_ld(foo)
2550 add %g7, %o2, %o4, %tie_add(foo)
2551 sethi %tle_hix22(foo), %l1
2552 xor %l1, %tle_lox10(foo), %o5
2553 ld [%g7 + %o5], %o1'
2556 tls_as_opt="-32 --fatal-warnings"
2562 if test "x$enable_tls" = xno ; then
2563 : # TLS explicitly disabled.
2564 elif test "x$enable_tls" = xyes ; then
2565 set_have_as_tls=yes # TLS explicitly enabled.
2566 elif test -z "$tls_first_major"; then
2567 : # If we don't have a check, assume no support.
2569 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2570 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2571 [set_have_as_tls=yes])
2573 if test $set_have_as_tls = yes ; then
2574 AC_DEFINE(HAVE_AS_TLS, 1,
2575 [Define if your assembler supports thread-local storage.])
2578 # Target-specific assembler checks.
2580 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2581 gcc_cv_ld_static_dynamic=no
2582 if test $in_tree_ld = yes ; then
2583 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2584 gcc_cv_ld_static_dynamic=yes
2586 elif test x$gcc_cv_ld != x; then
2587 # Check if linker supports -Bstatic/-Bdynamic option
2588 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2589 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2590 gcc_cv_ld_static_dynamic=yes
2593 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2594 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2595 [Define if your linker supports -Bstatic/-Bdynamic option.])
2597 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2599 if test x"$demangler_in_ld" = xyes; then
2600 AC_MSG_CHECKING(linker --demangle support)
2601 gcc_cv_ld_demangle=no
2602 if test $in_tree_ld = yes; then
2603 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
2604 gcc_cv_ld_demangle=yes
2606 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2607 # Check if the GNU linker supports --demangle option
2608 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2609 gcc_cv_ld_demangle=yes
2612 if test x"$gcc_cv_ld_demangle" = xyes; then
2613 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2614 [Define if your linker supports --demangle option.])
2616 AC_MSG_RESULT($gcc_cv_ld_demangle)
2620 # All TARGET_ABI_OSF targets.
2621 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2622 gcc_GAS_CHECK_FEATURE([explicit relocation support],
2623 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2626 extbl $3, $2, $3 !lituse_bytoff!1
2627 ldq $2, a($29) !literal!1
2628 ldq $4, b($29) !literal!2
2629 ldq_u $3, 0($2) !lituse_base!1
2630 ldq $27, f($29) !literal!5
2631 jsr $26, ($27), f !lituse_jsr!5
2632 ldah $29, 0($26) !gpdisp!3
2633 lda $0, c($29) !gprel
2634 ldah $1, d($29) !gprelhigh
2635 lda $1, d($1) !gprellow
2636 lda $29, 0($29) !gpdisp!3],,
2637 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2638 [Define if your assembler supports explicit relocations.])])
2639 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2640 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2643 ldq $27, a($29) !literal!1
2644 jsr $26, ($27), a !lituse_jsrdirect!1],,
2645 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2646 [Define if your assembler supports the lituse_jsrdirect relocation.])])
2650 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2651 gcc_cv_as_cris_no_mul_bug,[2,15,91],
2652 [-no-mul-bug-abort], [.text],,
2653 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2654 [Define if your assembler supports the -no-mul-bug-abort option.])])
2658 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2659 [.register %g2, #scratch],,
2660 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2661 [Define if your assembler supports .register.])])
2663 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2665 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2666 [Define if your assembler supports -relax option.])])
2668 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2669 gcc_cv_as_sparc_ua_pcrel,,
2677 .uaword %r_disp32(foo)],
2678 [if test x$gcc_cv_ld != x \
2679 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2680 gcc_cv_as_sparc_ua_pcrel=yes
2683 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2684 [Define if your assembler and linker support unaligned PC relative relocs.])
2686 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2687 gcc_cv_as_sparc_ua_pcrel_hidden,,
2692 .uaword %r_disp32(foo)
2693 .byte 0x32, 0x33, 0x34
2698 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2699 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2700 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2701 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2702 if $gcc_cv_objdump -R conftest 2> /dev/null \
2703 | grep 'DISP32' > /dev/null 2>&1; then
2706 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2710 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2711 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2712 ]) # unaligned pcrel relocs
2714 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2715 gcc_cv_as_sparc_offsetable_lo10,,
2718 or %g1, %lo(ab) + 12, %g1
2719 or %g1, %lo(ab + 12), %g1],
2720 [if test x$gcc_cv_objdump != x \
2721 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2722 | grep ' 82106000 82106000' > /dev/null 2>&1; then
2723 gcc_cv_as_sparc_offsetable_lo10=yes
2725 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2726 [Define if your assembler supports offsetable %lo().])])
2730 i[34567]86-*-* | x86_64-*-*)
2733 cygwin* | pe | mingw32*)
2734 # Used for DWARF 2 in PE
2735 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2736 gcc_cv_as_ix86_pe_secrel32,
2742 [if test x$gcc_cv_ld != x \
2743 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2744 gcc_cv_as_ix86_pe_secrel32=yes
2747 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2748 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2752 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2753 gcc_cv_as_ix86_filds_fists,
2754 [2,9,0],, [filds mem; fists mem],,
2755 [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2756 [Define if your assembler uses the new HImode fild and fist notation.])])
2758 gcc_GAS_CHECK_FEATURE([cmov syntax],
2759 gcc_cv_as_ix86_cmov_sun_syntax,,,
2760 [cmovl.l %edx, %eax],,
2761 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2762 [Define if your assembler supports the Sun syntax for cmov.])])
2764 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
2765 gcc_cv_as_ix86_ffreep,,,
2767 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
2768 [Define if your assembler supports the ffreep mnemonic.])])
2770 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
2771 gcc_cv_as_ix86_sahf,,,
2773 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
2774 [Define if your assembler supports the sahf mnemonic.])])
2776 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
2777 gcc_cv_as_ix86_diff_sect_delta,,,
2785 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
2786 [Define if your assembler supports the subtraction of symbols in different sections.])])
2788 # This one is used unconditionally by i386.[ch]; it is to be defined
2789 # to 1 if the feature is present, 0 otherwise.
2790 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2791 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2797 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2798 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2799 [Define true if the assembler supports '.long foo@GOTOFF'.])
2803 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2804 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2806 addl r15 = @ltoffx(x#), gp
2808 ld8.mov r16 = [[r15]], x#],,
2809 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2810 [Define if your assembler supports ltoffx and ldxmov relocations.])])
2816 *-*-aix*) conftest_s=' .machine "pwr5"
2820 gcc_GAS_CHECK_FEATURE([.machine directive support],
2821 gcc_cv_as_machine_directive,,,
2822 [ .machine ppc7400])
2823 if test x$gcc_cv_as_machine_directive != xyes; then
2824 echo "*** This target requires an assembler supporting \".machine\"" >&2
2825 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2826 test x$build = x$target && exit 1
2830 *) conftest_s=' .machine power4
2835 gcc_GAS_CHECK_FEATURE([mfcr field support],
2836 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2838 [AC_DEFINE(HAVE_AS_MFCRF, 1,
2839 [Define if your assembler supports mfcr field.])])
2842 *-*-aix*) conftest_s=' .machine "pwr5"
2845 *) conftest_s=' .machine power5
2850 gcc_GAS_CHECK_FEATURE([popcntb support],
2851 gcc_cv_as_powerpc_popcntb, [2,17,0],,
2853 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
2854 [Define if your assembler supports popcntb field.])])
2857 *-*-aix*) conftest_s=' .machine "pwr5x"
2860 *) conftest_s=' .machine power5
2865 gcc_GAS_CHECK_FEATURE([fp round support],
2866 gcc_cv_as_powerpc_fprnd, [2,17,0],,
2868 [AC_DEFINE(HAVE_AS_FPRND, 1,
2869 [Define if your assembler supports fprnd.])])
2872 *-*-aix*) conftest_s=' .machine "pwr6"
2875 *) conftest_s=' .machine power6
2880 gcc_GAS_CHECK_FEATURE([move fp gpr support],
2881 gcc_cv_as_powerpc_mfpgpr, [9,99,0],,
2883 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
2884 [Define if your assembler supports mffgpr and mftgpr.])])
2887 *-*-aix*) conftest_s=' .csect .text[[PR]]
2889 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
2893 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
2894 *) conftest_s=' .text
2896 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
2899 gcc_GAS_CHECK_FEATURE([rel16 relocs],
2900 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
2902 [AC_DEFINE(HAVE_AS_REL16, 1,
2903 [Define if your assembler supports R_PPC_REL16 relocs.])])
2906 *-*-aix*) conftest_s=' .machine "pwr6"
2909 *) conftest_s=' .machine power6
2914 gcc_GAS_CHECK_FEATURE([compare bytes support],
2915 gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
2917 [AC_DEFINE(HAVE_AS_CMPB, 1,
2918 [Define if your assembler supports cmpb.])])
2921 *-*-aix*) conftest_s=' .machine "pwr6"
2924 *) conftest_s=' .machine power6
2929 gcc_GAS_CHECK_FEATURE([decimal float support],
2930 gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
2932 [AC_DEFINE(HAVE_AS_DFP, 1,
2933 [Define if your assembler supports DFP instructions.])])
2935 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
2936 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
2937 [.gnu_attribute 4,1],,
2938 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
2939 [Define if your assembler supports .gnu_attribute.])])
2943 gcc_GAS_CHECK_FEATURE([explicit relocation support],
2944 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
2945 [ lw $4,%gp_rel(foo)($4)],,
2946 [if test x$target_cpu_default = x
2947 then target_cpu_default=MASK_EXPLICIT_RELOCS
2948 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
2950 gcc_GAS_CHECK_FEATURE([-mno-shared support],
2951 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
2952 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
2953 [Define if the assembler understands -mno-shared.])])
2955 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
2956 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
2957 [.gnu_attribute 4,1],,
2958 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
2959 [Define if your assembler supports .gnu_attribute.])])
2961 gcc_GAS_CHECK_FEATURE([.dtprelword support],
2962 gcc_cv_as_mips_dtprelword, [2,18,0],,
2963 [.section .tdata,"awT",@progbits
2967 .dtprelword x+0x8000],,
2968 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
2969 [Define if your assembler supports .dtprelword.])])
2973 # Mips and HP-UX need the GNU assembler.
2974 # Linux on IA64 might be able to use the Intel assembler.
2977 mips*-*-* | *-*-hpux* )
2978 if test x$gas_flag = xyes \
2979 || test x"$host" != x"$build" \
2980 || test ! -x "$gcc_cv_as" \
2981 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
2984 echo "*** This configuration requires the GNU assembler" >&2
2990 # ??? Not all targets support dwarf2 debug_line, even within a version
2991 # of gas. Moreover, we need to emit a valid instruction to trigger any
2992 # info to the output file. So, as supported targets are added to gas 2.11,
2993 # add some instruction here to (also) show we expect this might work.
2994 # ??? Once 2.11 is released, probably need to add first known working
2995 # version to the per-target configury.
2997 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2998 | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
2999 | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* | spu-*-*)
3002 ia64*-*-* | s390*-*-*)
3009 if test x"$insn" != x; then
3011 .file 1 \"conftest.s\"
3014 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3015 gcc_cv_as_dwarf2_debug_line,
3016 [elf,2,11,0],, [$conftest_s],
3017 [if test x$gcc_cv_objdump != x \
3018 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3019 | grep debug_line > /dev/null 2>&1; then
3020 gcc_cv_as_dwarf2_debug_line=yes
3023 # The .debug_line file table must be in the exact order that
3024 # we specified the files, since these indices are also used
3025 # by DW_AT_decl_file. Approximate this test by testing if
3026 # the assembler bitches if the same index is assigned twice.
3027 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3028 gcc_cv_as_dwarf2_file_buggy,,,
3032 if test $gcc_cv_as_dwarf2_debug_line = yes \
3033 && test $gcc_cv_as_dwarf2_file_buggy = no; then
3034 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
3035 [Define if your assembler supports dwarf2 .file/.loc directives,
3036 and preserves file table indices exactly as given.])
3039 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3040 gcc_cv_as_gdwarf2_flag,
3041 [elf,2,11,0], [--gdwarf2], [$insn],,
3042 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3043 [Define if your assembler supports the --gdwarf2 option.])])
3045 gcc_GAS_CHECK_FEATURE([--gstabs option],
3046 gcc_cv_as_gstabs_flag,
3047 [elf,2,11,0], [--gstabs], [$insn],
3048 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3049 # and warns about it, but still exits successfully. So check for
3051 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3053 else gcc_cv_as_gstabs_flag=yes
3055 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3056 [Define if your assembler supports the --gstabs option.])])
3059 AC_CACHE_CHECK([assembler for tolerance to line number 0],
3060 [gcc_cv_as_line_zero],
3061 [gcc_cv_as_line_zero=no
3062 if test $in_tree_gas = yes; then
3063 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
3064 elif test "x$gcc_cv_as" != x; then
3065 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3066 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3067 test "x`cat conftest.out`" = x
3069 gcc_cv_as_line_zero=yes
3071 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3072 cat conftest.s >&AS_MESSAGE_LOG_FD
3073 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3074 cat conftest.out >&AS_MESSAGE_LOG_FD
3076 rm -f conftest.o conftest.s conftest.out
3078 if test "x$gcc_cv_as_line_zero" = xyes; then
3079 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3080 [Define if the assembler won't complain about a line such as # 0 "" 2.])
3083 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3084 gcc_cv_ld_ro_rw_mix=unknown
3085 if test $in_tree_ld = yes ; then
3086 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \
3087 && test $in_tree_ld_is_elf = yes; then
3088 gcc_cv_ld_ro_rw_mix=read-write
3090 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3091 echo '.section myfoosect, "a"' > conftest1.s
3092 echo '.section myfoosect, "aw"' > conftest2.s
3093 echo '.byte 1' >> conftest2.s
3094 echo '.section myfoosect, "a"' > conftest3.s
3095 echo '.byte 0' >> conftest3.s
3096 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3097 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3098 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3099 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3100 conftest2.o conftest3.o > /dev/null 2>&1; then
3101 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3102 | sed -e '/myfoosect/!d' -e N`
3103 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3104 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3105 gcc_cv_ld_ro_rw_mix=read-only
3107 gcc_cv_ld_ro_rw_mix=read-write
3112 rm -f conftest.* conftest[123].*
3115 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3116 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3117 [Define if your linker links a mix of read-only
3118 and read-write sections into a read-write section.])
3120 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3122 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3123 gcc_cv_ld_eh_frame_hdr=no
3124 if test $in_tree_ld = yes ; then
3125 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \
3126 && test $in_tree_ld_is_elf = yes; then
3127 gcc_cv_ld_eh_frame_hdr=yes
3129 elif test x$gcc_cv_ld != x; then
3130 # Check if linker supports --eh-frame-hdr option
3131 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3132 gcc_cv_ld_eh_frame_hdr=yes
3135 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
3136 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3137 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3138 [Define if your linker supports --eh-frame-hdr option.])
3140 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3142 AC_MSG_CHECKING(linker position independent executable support)
3144 if test $in_tree_ld = yes ; then
3145 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 \
3146 && test $in_tree_ld_is_elf = yes; then
3149 elif test x$gcc_cv_ld != x; then
3150 # Check if linker supports -pie option
3151 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3155 if test x"$gcc_cv_ld_pie" = xyes; then
3156 AC_DEFINE(HAVE_LD_PIE, 1,
3157 [Define if your linker supports -pie option.])
3159 AC_MSG_RESULT($gcc_cv_ld_pie)
3161 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3162 gcc_cv_ld_eh_gc_sections=no
3163 if test $in_tree_ld = yes ; then
3164 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
3165 && test $in_tree_ld_is_elf = yes; then
3166 gcc_cv_ld_eh_gc_sections=yes
3168 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3169 cat > conftest.s <<EOF
3172 .type _start, @function
3175 .size _start, .-_start
3176 .section .text.foo,"ax",@progbits
3177 .type foo, @function
3181 .section .gcc_except_table.foo,"a",@progbits
3184 .section .eh_frame,"a",@progbits
3187 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3188 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3189 | grep "gc-sections option ignored" > /dev/null; then
3190 gcc_cv_ld_eh_gc_sections=no
3191 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3192 gcc_cv_ld_eh_gc_sections=yes
3193 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3194 if test x$gcc_cv_as_comdat_group != xyes; then
3195 gcc_cv_ld_eh_gc_sections=no
3196 cat > conftest.s <<EOF
3199 .type _start, @function
3202 .size _start, .-_start
3203 .section .gnu.linkonce.t.foo,"ax",@progbits
3204 .type foo, @function
3208 .section .gcc_except_table.foo,"a",@progbits
3211 .section .eh_frame,"a",@progbits
3214 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3215 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3216 | grep "gc-sections option ignored" > /dev/null; then
3217 gcc_cv_ld_eh_gc_sections=no
3218 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3219 gcc_cv_ld_eh_gc_sections=yes
3225 rm -f conftest.s conftest.o conftest
3229 # ??? This apparently exposes a binutils bug with PC-relative relocations.
3230 gcc_cv_ld_eh_gc_sections=no
3233 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3234 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3235 [Define if your linker supports garbage collection of
3236 sections in presence of EH frames.])
3238 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3244 AC_CACHE_CHECK(linker --as-needed support,
3245 gcc_cv_ld_as_needed,
3246 [gcc_cv_ld_as_needed=no
3247 if test $in_tree_ld = yes ; then
3248 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
3249 && test $in_tree_ld_is_elf = yes; then
3250 gcc_cv_ld_as_needed=yes
3252 elif test x$gcc_cv_ld != x; then
3253 # Check if linker supports --as-needed and --no-as-needed options
3254 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3255 gcc_cv_ld_as_needed=yes
3259 if test x"$gcc_cv_ld_as_needed" = xyes; then
3260 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3261 [Define if your linker supports --as-needed and --no-as-needed options.])
3264 case "$target:$tm_file" in
3265 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
3266 AC_CACHE_CHECK(linker support for omitting dot symbols,
3267 gcc_cv_ld_no_dot_syms,
3268 [gcc_cv_ld_no_dot_syms=no
3269 if test $in_tree_ld = yes ; then
3270 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
3271 gcc_cv_ld_no_dot_syms=yes
3273 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3274 cat > conftest1.s <<EOF
3278 cat > conftest2.s <<EOF
3279 .section ".opd","aw"
3284 .quad .LEfoo,.TOC.@tocbase,0
3290 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3291 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3292 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3293 gcc_cv_ld_no_dot_syms=yes
3295 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3298 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3299 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3300 [Define if your PowerPC64 linker only needs function descriptor syms.])
3305 AC_CACHE_CHECK(linker --sysroot support,
3307 [gcc_cv_ld_sysroot=no
3308 if test $in_tree_ld = yes ; then
3309 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 ; then
3310 gcc_cv_ld_sysroot=yes
3312 elif test x$gcc_cv_ld != x; then
3313 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3314 gcc_cv_ld_sysroot=yes
3317 if test x"$gcc_cv_ld_sysroot" = xyes; then
3318 AC_DEFINE(HAVE_LD_SYSROOT, 1,
3319 [Define if your linker supports --sysroot.])
3322 if test x$with_sysroot = x && test x$host = x$target \
3323 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3324 && test "$prefix" != "NONE"; then
3325 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3326 [Define to PREFIX/include if cpp should also search that directory.])
3329 # Test for stack protector support in target C library.
3330 AC_CACHE_CHECK(__stack_chk_fail in target C library,
3331 gcc_cv_libc_provides_ssp,
3332 [gcc_cv_libc_provides_ssp=no
3335 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3336 if test "x$with_sysroot" = x; then
3337 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3338 elif test "x$with_build_sysroot" != "x"; then
3339 glibc_header_dir="${with_build_sysroot}/usr/include"
3340 elif test "x$with_sysroot" = xyes; then
3341 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3343 glibc_header_dir="${with_sysroot}/usr/include"
3346 glibc_header_dir=/usr/include
3348 # glibc 2.4 and later provides __stack_chk_fail and
3349 # either __stack_chk_guard, or TLS access to stack guard canary.
3350 if test -f $glibc_header_dir/features.h \
3351 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
3352 $glibc_header_dir/features.h > /dev/null; then
3353 if $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
3354 $glibc_header_dir/features.h > /dev/null; then
3355 gcc_cv_libc_provides_ssp=yes
3356 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+2' \
3357 $glibc_header_dir/features.h > /dev/null \
3358 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
3359 $glibc_header_dir/features.h > /dev/null; then
3360 gcc_cv_libc_provides_ssp=yes
3365 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3366 [echo "no __stack_chk_fail on this target"])
3368 *) gcc_cv_libc_provides_ssp=no ;;
3371 if test x$gcc_cv_libc_provides_ssp = xyes; then
3372 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3373 [Define if your target C library provides stack protector support])
3376 # Check if TFmode long double should be used by default or not.
3377 # Some glibc targets used DFmode long double, but with glibc 2.4
3378 # and later they can use TFmode.
3380 powerpc*-*-linux* | \
3385 AC_ARG_WITH(long-double-128,
3386 [ --with-long-double-128 Use 128-bit long double by default.],
3387 gcc_cv_target_ldbl128="$with_long_double_128",
3388 [gcc_cv_target_ldbl128=no
3389 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3390 if test "x$with_sysroot" = x; then
3391 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3392 elif test "x$with_build_sysroot" != "x"; then
3393 glibc_header_dir="${with_build_sysroot}/usr/include"
3394 elif test "x$with_sysroot" = xyes; then
3395 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3397 glibc_header_dir="${with_sysroot}/usr/include"
3400 glibc_header_dir=/usr/include
3403 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3404 $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
3405 && gcc_cv_target_ldbl128=yes
3410 if test x$gcc_cv_target_ldbl128 = xyes; then
3411 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3412 [Define if TFmode long double should be the default])
3415 # Find out what GC implementation we want, or may, use.
3417 [ --with-gc={page,zone} choose the garbage collection mechanism to use
3425 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3428 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3433 echo "Using $GGC for garbage collection."
3435 # Use the system's zlib library.
3437 zlibinc="-I\$(srcdir)/../zlib"
3438 AC_ARG_WITH(system-zlib,
3439 [ --with-system-zlib use installed libz],
3446 dnl Very limited version of automake's enable-maintainer-mode
3448 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3449 dnl maintainer-mode is disabled by default
3450 AC_ARG_ENABLE(maintainer-mode,
3451 [ --enable-maintainer-mode
3452 enable make rules and dependencies not useful
3453 (and sometimes confusing) to the casual installer],
3454 maintainer_mode=$enableval,
3457 AC_MSG_RESULT($maintainer_mode)
3459 if test "$maintainer_mode" = "yes"; then
3470 # Make empty files to contain the specs and options for each language.
3471 # Then add #include lines to for a compiler that has specs and/or options.
3477 # These (without "all_") are set in each config-lang.in.
3478 # `language' must be a single word so is spelled singularly.
3481 all_outputs='Makefile gccbug libada-mk'
3482 # List of language makefile fragments.
3484 # List of language subdirectory makefiles. Deprecated.
3486 # Additional files for gengtype
3487 all_gtfiles="$target_gtfiles"
3489 # These are the languages that are set in --enable-languages,
3490 # and are available in the GCC tree.
3491 all_selected_languages=
3493 # Add the language fragments.
3494 # Languages are added via two mechanisms. Some information must be
3495 # recorded in makefile variables, these are defined in config-lang.in.
3496 # We accumulate them and plug them into the main Makefile.
3497 # The other mechanism is a set of hooks for each of the main targets
3498 # like `clean', `install', etc.
3500 language_hooks="Make-hooks"
3502 for lang in ${srcdir}/*/config-lang.in
3505 test "$lang" = "${srcdir}/*/config-lang.in" && continue
3507 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
3508 if test "x$lang_alias" = x
3510 echo "$lang doesn't set \$language." 1>&2
3513 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3514 subdirs="$subdirs $subdir"
3515 case ",$enable_languages," in
3517 all_selected_languages="$all_selected_languages $lang_alias"
3518 if test -f $srcdir/$subdir/lang-specs.h; then
3519 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
3531 . ${srcdir}/$subdir/config-lang.in
3532 if test "x$language" = x
3534 echo "${srcdir}/$subdir/config-lang.in doesn't set \$language." 1>&2
3539 case ",$enable_languages," in
3542 for i in $subdir_requires; do
3543 test -f "${srcdir}/$i/config-lang.in" && continue
3551 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$subdir/Make-lang.in"
3552 if test -f $srcdir/$subdir/lang.opt; then
3553 lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"
3555 if test -f $srcdir/$subdir/$subdir-tree.def; then
3556 lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3558 if test -f ${srcdir}/$subdir/Makefile.in
3559 then all_lang_makefiles="$subdir/Makefile"
3561 all_languages="$all_languages $language"
3562 all_compilers="$all_compilers $compilers"
3563 all_outputs="$all_outputs $outputs"
3564 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
3567 # Pick up gtfiles for c
3569 . ${srcdir}/c-config-lang.in
3570 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
3573 for language in $all_selected_languages
3575 check_languages="$check_languages check-$language"
3578 # We link each language in with a set of hooks, reached indirectly via
3579 # lang.${target}. Only do so for selected languages.
3583 target_list="all.cross start.encap rest.encap tags \
3584 install-common install-man install-info install-pdf dvi pdf \
3585 html uninstall info man srcextra srcman srcinfo \
3586 mostlyclean clean distclean maintainer-clean"
3588 for t in $target_list
3591 for lang in $all_selected_languages
3595 echo "lang.$t: $x" >> Make-hooks
3604 echo "dir ." > .gdbinit
3605 echo "dir ${srcdir}" >> .gdbinit
3606 if test x$gdb_needs_out_file_path = xyes
3608 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3610 if test "x$subdirs" != x; then
3613 echo "dir ${srcdir}/$s" >> .gdbinit
3616 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3618 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
3619 AC_SUBST(gcc_tooldir)
3622 # Find a directory in which to install a shared libgcc.
3624 AC_ARG_ENABLE(version-specific-runtime-libs,
3625 [ --enable-version-specific-runtime-libs
3626 specify that runtime libraries should be
3627 installed in a compiler-specific directory])
3629 AC_ARG_WITH(slibdir,
3630 [ --with-slibdir=DIR shared libraries in DIR [[LIBDIR]]],
3631 slibdir="$with_slibdir",
3632 if test "${enable_version_specific_runtime_libs+set}" = set; then
3633 slibdir='$(libsubdir)'
3634 elif test "$host" != "$target"; then
3635 slibdir='$(build_tooldir)/lib'
3641 objdir=`${PWDCMD-pwd}`
3644 AC_ARG_WITH(datarootdir,
3645 [ --with-datarootdir=DIR Use DIR as the data root [[PREFIX/share]]],
3646 datarootdir="\${prefix}/$with_datarootdir",
3647 datarootdir='$(prefix)/share')
3648 AC_SUBST(datarootdir)
3651 [ --with-docdir=DIR Install documentation in DIR [[DATAROOTDIR]]],
3652 docdir="\${prefix}/$with_docdir",
3653 docdir='$(datarootdir)')
3656 AC_ARG_WITH(htmldir,
3657 [ --with-htmldir=DIR html documentation in in DIR [[DOCDIR]]],
3658 htmldir="\${prefix}/$with_htmldir",
3659 htmldir='$(docdir)')
3662 # Substitute configuration variables
3665 AC_SUBST(all_compilers)
3666 AC_SUBST(all_gtfiles)
3667 AC_SUBST(all_lang_makefrags)
3668 AC_SUBST(all_lang_makefiles)
3669 AC_SUBST(all_languages)
3670 AC_SUBST(all_selected_languages)
3671 AC_SUBST(build_exeext)
3672 AC_SUBST(build_install_headers_dir)
3673 AC_SUBST(build_xm_file_list)
3674 AC_SUBST(build_xm_include_list)
3675 AC_SUBST(build_xm_defines)
3676 AC_SUBST(check_languages)
3677 AC_SUBST(cpp_install_dir)
3678 AC_SUBST(xmake_file)
3679 AC_SUBST(tmake_file)
3680 AC_SUBST(extra_gcc_objs)
3681 AC_SUBST(extra_headers_list)
3682 AC_SUBST(extra_objs)
3683 AC_SUBST(extra_parts)
3684 AC_SUBST(extra_passes)
3685 AC_SUBST(extra_programs)
3686 AC_SUBST(float_h_file)
3687 AC_SUBST(gcc_config_arguments)
3688 AC_SUBST(gcc_gxx_include_dir)
3689 AC_SUBST(host_exeext)
3690 AC_SUBST(host_xm_file_list)
3691 AC_SUBST(host_xm_include_list)
3692 AC_SUBST(host_xm_defines)
3693 AC_SUBST(out_host_hook_obj)
3695 AC_SUBST(lang_opt_files)
3696 AC_SUBST(lang_specs_files)
3697 AC_SUBST(lang_tree_files)
3698 AC_SUBST(local_prefix)
3700 AC_SUBST(objc_boehm_gc)
3702 AC_SUBST(out_object_file)
3703 AC_SUBST(thread_file)
3704 AC_SUBST(tm_file_list)
3705 AC_SUBST(tm_include_list)
3706 AC_SUBST(tm_defines)
3707 AC_SUBST(tm_p_file_list)
3708 AC_SUBST(tm_p_include_list)
3709 AC_SUBST(xm_file_list)
3710 AC_SUBST(xm_include_list)
3711 AC_SUBST(xm_defines)
3712 AC_SUBST(c_target_objs)
3713 AC_SUBST(cxx_target_objs)
3714 AC_SUBST(target_cpu_default)
3716 AC_SUBST_FILE(language_hooks)
3719 if test x${build} = x${host} ; then
3720 if test x${host} = x${target} ; then
3721 echo "Links are now set up to build a native compiler for ${target}." 1>&2
3723 echo "Links are now set up to build a cross-compiler" 1>&2
3724 echo " from ${host} to ${target}." 1>&2
3727 if test x${host} = x${target} ; then
3728 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3729 echo " for ${target}." 1>&2
3731 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3732 echo " from ${host} to ${target}." 1>&2
3736 AC_ARG_VAR(GMPLIBS,[How to link GMP])
3737 AC_ARG_VAR(GMPINC,[How to find GMP include files])
3739 # Configure the subdirectories
3740 # AC_CONFIG_SUBDIRS($subdirs)
3742 # Create the Makefile
3743 # and configure language subdirectories
3744 AC_CONFIG_FILES($all_outputs)
3746 AC_CONFIG_COMMANDS([default],
3748 case ${CONFIG_HEADERS} in
3749 *auto-host.h:config.in*)
3752 # Make sure all the subdirs exist.
3753 for d in $subdirs doc build
3755 test -d $d || mkdir $d
3758 [subdirs='$subdirs'])