Mark ChangeLog
[official-gcc.git] / gcc / configure.ac
blobc2c9c5a5fceba739b1d4db88fdc0f1c4de8fe79a
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
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 2, or (at your option) any later
12 #version.
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
17 #for more details.
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING.  If not, write to the Free
21 #Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 #02111-1307, USA.
24 # --------------------------------
25 # Initialization and sanity checks
26 # --------------------------------
28 AC_PREREQ(2.59)
29 AC_INIT
30 AC_CONFIG_SRCDIR(tree.c)
31 AC_CONFIG_HEADER(auto-host.h:config.in)
33 #Set to 1 on a release branch
34 is_release=1
36 # Determine the host, build, and target systems
37 AC_CANONICAL_BUILD
38 AC_CANONICAL_HOST
39 AC_CANONICAL_TARGET
41 # Determine the noncanonical target name, for directory use.
42 ACX_NONCANONICAL_TARGET
44 # Determine the target- and build-specific subdirectories
45 GCC_TOPLEV_SUBDIRS
47 # Set program_transform_name
48 AC_ARG_PROGRAM
50 # Check for bogus environment variables.
51 # Test if LIBRARY_PATH contains the notation for the current directory
52 # since this would lead to problems installing/building glibc.
53 # LIBRARY_PATH contains the current directory if one of the following
54 # is true:
55 # - one of the terminals (":" and ";") is the first or last sign
56 # - two terminals occur directly after each other
57 # - the path contains an element with a dot in it
58 AC_MSG_CHECKING(LIBRARY_PATH variable)
59 changequote(,)dnl
60 case ${LIBRARY_PATH} in
61   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
62     library_path_setting="contains current directory"
63     ;;
64   *)
65     library_path_setting="ok"
66     ;;
67 esac
68 changequote([,])dnl
69 AC_MSG_RESULT($library_path_setting)
70 if test "$library_path_setting" != "ok"; then
71 AC_MSG_ERROR([
72 *** LIBRARY_PATH shouldn't contain the current directory when
73 *** building gcc. Please change the environment variable
74 *** and run configure again.])
77 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
78 # since this would lead to problems installing/building glibc.
79 # GCC_EXEC_PREFIX contains the current directory if one of the following
80 # is true:
81 # - one of the terminals (":" and ";") is the first or last sign
82 # - two terminals occur directly after each other
83 # - the path contains an element with a dot in it
84 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
85 changequote(,)dnl
86 case ${GCC_EXEC_PREFIX} in
87   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
88     gcc_exec_prefix_setting="contains current directory"
89     ;;
90   *)
91     gcc_exec_prefix_setting="ok"
92     ;;
93 esac
94 changequote([,])dnl
95 AC_MSG_RESULT($gcc_exec_prefix_setting)
96 if test "$gcc_exec_prefix_setting" != "ok"; then
97 AC_MSG_ERROR([
98 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
99 *** building gcc. Please change the environment variable
100 *** and run configure again.])
103 TL_AC_GCC_VERSION([$srcdir/..])
105 # -----------
106 # Directories
107 # -----------
109 # Specify the local prefix
110 local_prefix=
111 AC_ARG_WITH(local-prefix,
112 [  --with-local-prefix=DIR specifies directory to put local include],
113 [case "${withval}" in
114 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
115 no)     ;;
116 *)      local_prefix=$with_local_prefix ;;
117 esac])
119 # Default local prefix if it is empty
120 if test x$local_prefix = x; then
121         local_prefix=/usr/local
124 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
125 # passed in by the toplevel make and thus we'd get different behavior
126 # depending on where we built the sources.
127 gcc_gxx_include_dir=
128 # Specify the g++ header file directory
129 AC_ARG_WITH(gxx-include-dir,
130 [  --with-gxx-include-dir=DIR
131                           specifies directory to put g++ header files],
132 [case "${withval}" in
133 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
134 no)     ;;
135 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
136 esac])
138 if test x${gcc_gxx_include_dir} = x; then
139   if test x${enable_version_specific_runtime_libs} = xyes; then
140     gcc_gxx_include_dir='${libsubdir}/include/c++'
141   else
142     libstdcxx_incdir=c++/${gcc_version}
143 changequote(<<, >>)dnl
144     gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
145 changequote([, ])dnl
146   fi
149 AC_ARG_WITH(cpp_install_dir,
150 [  --with-cpp-install-dir=DIR
151                           install the user visible C preprocessor in DIR
152                           (relative to PREFIX) as well as PREFIX/bin],
153 [if test x$withval = xyes; then
154   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
155 elif test x$withval != xno; then
156   cpp_install_dir=$withval
157 fi])
159 # We would like to our source tree to be readonly.  However when releases or
160 # pre-releases are generated, the flex/bison generated files as well as the 
161 # various formats of manuals need to be included along with the rest of the
162 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
163 # just that.
165 AC_MSG_CHECKING([whether to place generated files in the source directory])
166   dnl generated-files-in-srcdir is disabled by default
167   AC_ARG_ENABLE(generated-files-in-srcdir, 
168 [  --enable-generated-files-in-srcdir
169                           put copies of generated files in source dir
170                           intended for creating source tarballs for users
171                           without texinfo bison or flex.],
172       generated_files_in_srcdir=$enableval,
173       generated_files_in_srcdir=no)
175 AC_MSG_RESULT($generated_files_in_srcdir)
177 if test "$generated_files_in_srcdir" = "yes"; then
178   GENINSRC=''
179 else
180   GENINSRC='#'
182 AC_SUBST(GENINSRC)
184 # -------------------
185 # Find default linker
186 # -------------------
188 # With GNU ld
189 AC_ARG_WITH(gnu-ld,
190 [  --with-gnu-ld           arrange to work with GNU ld.],
191 gnu_ld_flag="$with_gnu_ld",
192 gnu_ld_flag=no)
194 # With pre-defined ld
195 AC_ARG_WITH(ld,
196 [  --with-ld               arrange to use the specified ld (full pathname)],
197 DEFAULT_LINKER="$with_ld")
198 if test x"${DEFAULT_LINKER+set}" = x"set"; then
199   if test ! -x "$DEFAULT_LINKER"; then
200     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
201   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
202     gnu_ld_flag=yes
203   fi
204   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
205         [Define to enable the use of a default linker.])
208 AC_MSG_CHECKING([whether a default linker was specified])
209 if test x"${DEFAULT_LINKER+set}" = x"set"; then
210   if test x"$gnu_ld_flag" = x"no"; then
211     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
212   else
213     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
214   fi
215 else
216   AC_MSG_RESULT(no)
219 # With demangler in GNU ld
220 AC_ARG_WITH(demangler-in-ld,
221 [  --with-demangler-in-ld  try to use demangler in GNU ld.],
222 demangler_in_ld="$with_demangler_in_ld",
223 demangler_in_ld=no)
225 # ----------------------
226 # Find default assembler
227 # ----------------------
229 # With GNU as
230 AC_ARG_WITH(gnu-as,
231 [  --with-gnu-as           arrange to work with GNU as],
232 gas_flag="$with_gnu_as",
233 gas_flag=no)
235 AC_ARG_WITH(as,
236 [  --with-as               arrange to use the specified as (full pathname)],
237 DEFAULT_ASSEMBLER="$with_as")
238 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
239   if test ! -x "$DEFAULT_ASSEMBLER"; then
240     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
241   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
242     gas_flag=yes
243   fi
244   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
245         [Define to enable the use of a default assembler.])
248 AC_MSG_CHECKING([whether a default assembler was specified])
249 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
250   if test x"$gas_flag" = x"no"; then
251     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
252   else
253     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
254   fi
255 else
256   AC_MSG_RESULT(no)
259 # ---------------
260 # Find C compiler
261 # ---------------
263 # If a non-executable a.out is present (e.g. created by GNU as above even if
264 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
265 # file, even when creating an executable, so an execution test fails.
266 # Remove possible default executable files to avoid this.
268 # FIXME: This really belongs into AC_PROG_CC and can be removed once
269 # Autoconf includes it.
270 rm -f a.out a.exe b.out
272 # Find the native compiler
273 AC_PROG_CC
274 AM_PROG_CC_C_O
275 # autoconf is lame and doesn't give us any substitution variable for this.
276 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
277   NO_MINUS_C_MINUS_O=yes
278 else
279   OUTPUT_OPTION='-o $@'
281 AC_SUBST(NO_MINUS_C_MINUS_O)
282 AC_SUBST(OUTPUT_OPTION)
284 # -------------------------
285 # Check C compiler features
286 # -------------------------
288 AC_PROG_CPP
289 AC_C_INLINE
291 gcc_AC_C_LONG_LONG
293 # sizeof(char) is 1 by definition.
294 AC_CHECK_SIZEOF(void *)
295 AC_CHECK_SIZEOF(short)
296 AC_CHECK_SIZEOF(int)
297 AC_CHECK_SIZEOF(long)
298 if test $ac_cv_c_long_long = yes; then
299   AC_CHECK_SIZEOF(long long)
301 if test $ac_cv_c___int64 = yes; then
302   AC_CHECK_SIZEOF(__int64)
305 # ---------------------
306 # Warnings and checking
307 # ---------------------
309 # Check $CC warning features (if it's GCC).
310 # We want to use -pedantic, but we don't want warnings about
311 # * 'long long'
312 # * variadic macros
313 # So, we only use -pedantic if we can disable those warnings.
315 AC_CACHE_CHECK(
316   [whether ${CC} accepts -Wno-long-long],
317   [ac_cv_prog_cc_w_no_long_long],
318   [save_CFLAGS="$CFLAGS"
319   CFLAGS="-Wno-long-long"
320   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
321                     [ac_cv_prog_cc_w_no_long_long=yes],
322                     [ac_cv_prog_cc_w_no_long_long=no])
323   CFLAGS="$save_CFLAGS"
324   ])
326 AC_CACHE_CHECK(
327   [whether ${CC} accepts -Wno-variadic-macros],
328   [ac_cv_prog_cc_w_no_variadic_macros],
329   [save_CFLAGS="$CFLAGS"
330   CFLAGS="-Wno-variadic-macros"
331   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
332                     [ac_cv_prog_cc_w_no_variadic_macros=yes],
333                     [ac_cv_prog_cc_w_no_variadic_macros=no])
334   CFLAGS="$save_CFLAGS"
335   ])
337 strict1_warn=
338 if test $ac_cv_prog_cc_w_no_long_long = yes \
339    && test $ac_cv_prog_cc_w_no_variadic_macros = yes ; then
340   strict1_warn="-pedantic -Wno-long-long -Wno-variadic-macros"
342 AC_SUBST(strict1_warn)
344 # Add -Wold-style-definition if it's accepted
345 AC_CACHE_CHECK(
346   [whether ${CC} accepts -Wold-style-definition],
347   [ac_cv_prog_cc_w_old_style_definition],
348   [save_CFLAGS="$CFLAGS"
349   CFLAGS="-Wold-style-definition"
350   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
351                     [ac_cv_prog_cc_w_old_style_definition=yes],
352                     [ac_cv_prog_cc_w_old_style_definition=no])
353   CFLAGS="$save_CFLAGS"
354   ])
355 if test $ac_cv_prog_cc_w_old_style_definition = yes ; then
356   strict1_warn="${strict1_warn} -Wold-style-definition"
359 # Enable -Werror, period.
360 AC_ARG_ENABLE(werror_always, 
361 [  --enable-werror-always         enable -Werror always], [],
362 [enable_werror_always=no])
363 if test x${enable_werror_always} = xyes ; then
364   strict1_warn="${strict1_warn} -Werror"
365   WERROR=-Werror
368 # If the native compiler is GCC, we can enable warnings even in stage1.  
369 # That's useful for people building cross-compilers, or just running a
370 # quick `make'.
371 warn_cflags=
372 if test "x$GCC" = "xyes"; then
373   warn_cflags='$(GCC_WARN_CFLAGS)'
375 AC_SUBST(warn_cflags)
377 # Enable -Werror in bootstrap stage2 and later.
378 AC_ARG_ENABLE(werror, 
379 [  --enable-werror         enable -Werror in bootstrap stage2 and later], [],
380 [if test x$is_release = x ; then
381   # Default to "yes" on development branches.
382   enable_werror=yes
383 else
384   # Default to "no" on release branches.
385   enable_werror=no
386 fi])
387 if test x$enable_werror = xyes ; then
388   WERROR=-Werror
390 AC_SUBST(WERROR)
392 # Enable expensive internal checks
393 AC_ARG_ENABLE(checking,
394 [  --enable-checking[=LIST]
395                           enable expensive run-time checks.  With LIST,
396                           enable only specific categories of checks.
397                           Categories are: assert,fold,gc,gcac,misc,
398                           rtlflag,rtl,tree,valgrind,release,yes,all;],
399 [ac_checking_flags="${enableval}"],[
400 # Determine the default checks.
401 if test x$is_release = x ; then
402   ac_checking_flags=yes
403 else
404   ac_checking_flags=release
405 fi])
406 ac_assert_checking=1
407 ac_checking=
408 ac_tree_checking=
409 ac_rtl_checking=
410 ac_rtlflag_checking=
411 ac_gc_checking=
412 ac_gc_always_collect=
413 ac_fold_checking=
414 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
415 for check in $ac_checking_flags
417         case $check in
418         yes)            ac_assert_checking=1 ; ac_checking=1 ;
419                         ac_tree_checking=1 ; ac_gc_checking=1 ;
420                         ac_rtlflag_checking=1 ;;
421         no)             ac_assert_checking= ; ac_checking= ;
422                         ac_tree_checking= ; ac_rtl_checking= ;
423                         ac_rtlflag_checking= ; ac_gc_checking= ;
424                         ac_gc_always_collect= ; ac_fold_checking= ;;
425         all)            ac_assert_checking=1 ; ac_checking=1 ;
426                         ac_tree_checking=1 ; ac_rtl_checking=1 ;
427                         ac_rtlflag_checking=1 ; ac_gc_checking=1 ;
428                         ac_gc_always_collect=1 ; ac_fold_checking=1 ;;
429         release)        ac_assert_checking=1 ;;
430         assert)         ac_assert_checking=1 ;;
431         fold)           ac_fold_checking=1 ;;
432         gc)             ac_gc_checking=1 ;;
433         gcac)           ac_gc_always_collect=1 ;;
434         misc)           ac_checking=1 ;;
435         rtlflag)        ac_rtlflag_checking=1 ;;
436         rtl)            ac_rtl_checking=1 ;;
437         tree)           ac_tree_checking=1 ;;
438         valgrind)       ac_checking_valgrind=1 ;;
439         *)      AC_MSG_ERROR(unknown check category $check) ;;
440         esac
441 done
442 IFS="$ac_save_IFS"
444 nocommon_flag=""
445 if test x$ac_checking != x ; then
446   AC_DEFINE(ENABLE_CHECKING, 1,
447 [Define if you want more run-time sanity checks.  This one gets a grab
448    bag of miscellaneous but relatively cheap checks.])
449   nocommon_flag=-fno-common
451 AC_SUBST(nocommon_flag)
452 if test x$ac_assert_checking != x ; then
453   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
454 [Define if you want assertions enabled.  This is a cheap check.])
456 if test x$ac_tree_checking != x ; then
457   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
458 [Define if you want all operations on trees (the basic data
459    structure of the front ends) to be checked for dynamic type safety
460    at runtime.  This is moderately expensive.  The tree browser debugging
461    routines will also be enabled by this option.
462    ])
463   TREEBROWSER=tree-browser.o
465 AC_SUBST(TREEBROWSER)
466 if test x$ac_rtl_checking != x ; then
467   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
468 [Define if you want all operations on RTL (the basic data structure
469    of the optimizer and back end) to be checked for dynamic type safety
470    at runtime.  This is quite expensive.])
472 if test x$ac_rtlflag_checking != x ; then
473   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
474 [Define if you want RTL flag accesses to be checked against the RTL
475    codes that are supported for each access macro.  This is relatively
476    cheap.])
478 if test x$ac_gc_checking != x ; then
479   AC_DEFINE(ENABLE_GC_CHECKING, 1,
480 [Define if you want the garbage collector to do object poisoning and
481    other memory allocation checks.  This is quite expensive.])
483 if test x$ac_gc_always_collect != x ; then
484   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
485 [Define if you want the garbage collector to operate in maximally
486    paranoid mode, validating the entire heap and collecting garbage at
487    every opportunity.  This is extremely expensive.])
489 if test x$ac_fold_checking != x ; then
490   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
491 [Define if you want fold checked that it never destructs its argument.
492    This is quite expensive.])
494 valgrind_path_defines=
495 valgrind_command=
497 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
498 dnl # an if statement.  This was the source of very frustrating bugs
499 dnl # in converting to autoconf 2.5x!
500 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
502 if test x$ac_checking_valgrind != x ; then
503   # It is certainly possible that there's valgrind but no valgrind.h.
504   # GCC relies on making annotations so we must have both.
505   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
506   AC_TRY_CPP(
507     [#include <valgrind/memcheck.h>
508 #ifndef VALGRIND_DISCARD
509 #error VALGRIND_DISCARD not defined
510 #endif],
511   [gcc_cv_header_valgrind_memcheck_h=yes],
512   [gcc_cv_header_valgrind_memcheck_h=no])
513   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
514   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
515   AC_TRY_CPP(
516     [#include <memcheck.h>
517 #ifndef VALGRIND_DISCARD
518 #error VALGRIND_DISCARD not defined
519 #endif],
520   [gcc_cv_header_memcheck_h=yes], 
521   gcc_cv_header_memcheck_h=no)
522   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
523   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
524         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
525   if test "x$valgrind_path" = "x" \
526     || (test $have_valgrind_h = no \
527         && test $gcc_cv_header_memcheck_h = no \
528         && test $gcc_cv_header_valgrind_memcheck_h = no); then
529         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
530   fi
531   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
532   valgrind_command="$valgrind_path -q"
533   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
534 [Define if you want to run subprograms and generated programs
535    through valgrind (a memory checker).  This is extremely expensive.])
536   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
537     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
538         [Define if valgrind's valgrind/memcheck.h header is installed.])
539   fi
540   if test $gcc_cv_header_memcheck_h = yes; then
541     AC_DEFINE(HAVE_MEMCHECK_H, 1,
542         [Define if valgrind's memcheck.h header is installed.])
543   fi
545 AC_SUBST(valgrind_path_defines)
546 AC_SUBST(valgrind_command)
548 AC_ARG_ENABLE(mapped-location,
549 [  --enable-mapped-location   location_t is fileline integer cookie],,
550 enable_mapped_location=no)
552 if test "$enable_mapped_location" = yes ; then
553   AC_DEFINE(USE_MAPPED_LOCATION, 1,
554 [Define if location_t is fileline integer cookie.])
557 # Enable code coverage collection
558 AC_ARG_ENABLE(coverage,
559 [  --enable-coverage[=LEVEL]
560                           enable compiler's code coverage collection.
561                           Use to measure compiler performance and locate
562                           unused parts of the compiler. With LEVEL, specify
563                           optimization. Values are opt, noopt,
564                           default is noopt],
565 [case "${enableval}" in
566   yes|noopt)
567     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
568     ;;
569   opt)
570     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
571     ;;
572   no)
573     # a.k.a. --disable-coverage
574     coverage_flags=""
575     ;;
576   *)
577     AC_MSG_ERROR(unknown coverage setting $enableval)
578     ;;
579 esac],
580 [coverage_flags=""])
581 AC_SUBST(coverage_flags)
583 AC_ARG_ENABLE(gather-detailed-mem-stats, 
584 [  --enable-gather-detailed-mem-stats         enable detailed memory allocation stats gathering], [],
585 [enable_gather_detailed_mem_stats=no])
586 if test x$enable_gather_detailed_mem_stats = xyes ; then
587   AC_DEFINE(GATHER_STATISTICS, 1,
588         [Define to enable detailed memory allocation stats gathering.])
591 # -------------------------------
592 # Miscenalleous configure options
593 # -------------------------------
595 # With stabs
596 AC_ARG_WITH(stabs,
597 [  --with-stabs            arrange to use stabs instead of host debug format],
598 stabs="$with_stabs",
599 stabs=no)
601 # Determine whether or not multilibs are enabled.
602 AC_ARG_ENABLE(multilib,
603 [  --enable-multilib       enable library support for multiple ABIs],
604 [], [enable_multilib=yes])
605 AC_SUBST(enable_multilib)
607 # Enable __cxa_atexit for C++.
608 AC_ARG_ENABLE(__cxa_atexit,
609 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
610 [], [])
612 # Enable threads
613 # Pass with no value to take the default
614 # Pass with a value to specify a thread package
615 AC_ARG_ENABLE(threads,
616 [  --enable-threads        enable thread usage for target GCC
617   --enable-threads=LIB    use LIB thread package for target GCC],,
618 [enable_threads=''])
620 AC_ARG_ENABLE(objc-gc,
621 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
622                           the GNU Objective-C runtime],
623 if test x$enable_objc_gc = xno; then
624         objc_boehm_gc=''
625 else
626         objc_boehm_gc=1
628 objc_boehm_gc='')
630 AC_ARG_WITH(dwarf2,
631 [  --with-dwarf2           force the default debug format to be DWARF 2],
632 dwarf2="$with_dwarf2",
633 dwarf2=no)
635 AC_ARG_ENABLE(shared,
636 [  --disable-shared        don't provide a shared libgcc],
638   case $enable_shared in
639   yes | no) ;;
640   *)
641     enable_shared=no
642     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
643     for pkg in $enableval; do
644       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
645         enable_shared=yes
646       fi
647     done
648     IFS="$ac_save_ifs"
649     ;;
650   esac
651 ], [enable_shared=yes])
652 AC_SUBST(enable_shared)
654 AC_ARG_WITH(sysroot,
655 [  --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
657  case ${with_sysroot} in
658  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
659  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
660  esac
661    
662  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
663  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)'
665  if test "x$exec_prefix" = xNONE; then
666   if test "x$prefix" = xNONE; then
667    test_prefix=/usr/local
668   else
669    test_prefix=$prefix
670   fi
671  else
672   test_prefix=$exec_prefix
673  fi
674  case ${TARGET_SYSTEM_ROOT} in
675  "${test_prefix}"|"${test_prefix}/"*|\
676  '${exec_prefix}'|'${exec_prefix}/'*)
677    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
678    TARGET_SYSTEM_ROOT_DEFINE="$t"
679    ;;
680  esac
681 ], [
682  TARGET_SYSTEM_ROOT=
683  TARGET_SYSTEM_ROOT_DEFINE=
684  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
686 AC_SUBST(TARGET_SYSTEM_ROOT)
687 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
688 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
690 # Build with intermodule optimisations
691 AC_ARG_ENABLE(intermodule,
692 [  --enable-intermodule    build the compiler in one step],
693 [case ${enable_intermodule} in
694   yes) onestep="-onestep";;
695   *) onestep="";;
696 esac],
697 [onestep=""])
698 AC_SUBST(onestep)
700 # Sanity check enable_languages in case someone does not run the toplevel
701 # configure # script.
702 AC_ARG_ENABLE(languages,
703 [  --enable-languages=LIST specify which front-ends to build],
704 [case ,${enable_languages}, in
705        ,,|,yes,)
706                 # go safe -- we cannot be much sure without the toplevel
707                 # configure's
708                 # analysis of which target libs are present and usable
709                 enable_languages=c
710                 ;;
711          *,all,*)
712                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
713                 ;;
714         *,c,*)
715                 ;;
716         *)
717                 enable_languages=c,${enable_languages}
718                 ;;
719 esac],
720 [enable_languages=c])
722 subdirs=
723 for lang in ${srcdir}/*/config-lang.in
725         case $lang in
726         # The odd quoting in the next line works around
727         # an apparent bug in bash 1.12 on linux.
728 changequote(,)dnl
729         ${srcdir}/[*]/config-lang.in) ;;
730         *)
731           lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
732           if test "x$lang_alias" = x
733           then
734                 echo "$lang doesn't set \$language." 1>&2
735                 exit 1
736           fi
737           case ",$enable_languages," in
738           *,$lang_alias,*)
739             subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" ;;
740           esac
741           ;;
742 changequote([,])dnl
743         esac
744 done
747 # -------------------------
748 # Checks for other programs
749 # -------------------------
751 AC_PROG_MAKE_SET
753 # Find some useful tools
754 AC_PROG_AWK
755 # We need awk to create options.c and options.h.
756 # Bail out if it's missing.
757 case ${AWK} in
758   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
759 esac
761 gcc_AC_PROG_LN_S
762 ACX_PROG_LN($LN_S)
763 AC_PROG_RANLIB
764 case "${host}" in
765 *-*-darwin*)
766   # By default, the Darwin ranlib will not treat common symbols as
767   # definitions when  building the archive table of contents.  Other 
768   # ranlibs do that; pass an option to the Darwin ranlib that makes
769   # it behave similarly.
770   ranlib_flags="-c" 
771   ;;
773   ranlib_flags=""
774 esac
775 AC_SUBST(ranlib_flags)
776      
777 gcc_AC_PROG_INSTALL
779 # See if cmp has --ignore-initial.
780 gcc_AC_PROG_CMP_IGNORE_INITIAL
782 # See if we have the mktemp command.
783 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
785 MISSING="${CONFIG_SHELL-/bin/sh} $srcdir/../missing"
787 # See if makeinfo has been installed and is modern enough
788 # that we can use it.
789 gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
790   [GNU texinfo.* \([0-9][0-9.]*\)],
791   [4.[2-9]*])
792 if test $gcc_cv_prog_makeinfo_modern = no; then
793   MAKEINFO="$MISSING makeinfo"
794   AC_MSG_WARN([
795 *** Makeinfo is missing or too old.
796 *** Info documentation will not be built.])
797   BUILD_INFO=
798 else
799   BUILD_INFO=info
801 AC_SUBST(BUILD_INFO)
803 # Is pod2man recent enough to regenerate manpages?
804 AC_MSG_CHECKING([for recent Pod::Man])
805 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
806   AC_MSG_RESULT(yes)
807   GENERATED_MANPAGES=generated-manpages
808 else
809   AC_MSG_RESULT(no)
810   GENERATED_MANPAGES=
812 AC_SUBST(GENERATED_MANPAGES)
814 # How about lex?
815 dnl Don't use AC_PROG_LEX; we insist on flex.
816 dnl LEXLIB is not useful in gcc.
817 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
819 # Bison?
820 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
822 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
823 # check for build == host before using them.
825 # NM
826 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
827   && test -d ../binutils ; then
828   NM='$(objdir)/../binutils/nm-new'
829 else
830   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
833 # AR
834 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
835   && test -d ../binutils ; then
836   AR='$(objdir)/../binutils/ar'
837 else
838   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
842 # --------------------
843 # Checks for C headers
844 # --------------------
846 AC_MSG_CHECKING(for GNU C library)
847 AC_CACHE_VAL(gcc_cv_glibc,
848 [AC_TRY_COMPILE(
849   [#include <features.h>],[
850 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
851 #error Not a GNU C library system
852 #endif], 
853   [gcc_cv_glibc=yes], 
854   gcc_cv_glibc=no)])
855 AC_MSG_RESULT($gcc_cv_glibc)
856 if test $gcc_cv_glibc = yes; then
857   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
860 # Need to reject headers which give warnings, so that the -Werror bootstrap
861 # works later. *sigh*  This needs to come before all header checks.
862 AC_PROG_CPP_WERROR
864 AC_HEADER_STDC
865 AC_HEADER_TIME
866 ACX_HEADER_STRING
867 AC_HEADER_SYS_WAIT
868 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
869                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
870                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
871                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
873 # Check for thread headers.
874 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
875 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
877 # These tests can't be done till we know if we have limits.h.
878 gcc_AC_C_CHAR_BIT
879 AC_C_BIGENDIAN_CROSS
881 # --------
882 # UNSORTED
883 # --------
885 # Stage specific cflags for build.
886 stage1_cflags=
887 case $build in
888 vax-*-*)
889   if test x$GCC = xyes
890   then
891     stage1_cflags="-Wa,-J"
892   else
893     stage1_cflags="-J"
894   fi
895   ;;
896 powerpc-*-darwin*)
897   # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
898   # sources; use -no-cpp-precomp to get to GNU cpp.
899   # Apple's GCC has bugs in designated initializer handling, so disable
900   # that too.
901   stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
902   ;;
903 esac
904 AC_SUBST(stage1_cflags)
906 # These libraries may be used by collect2.
907 # We may need a special search path to get them linked.
908 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
909 [save_LIBS="$LIBS"
910 for libs in '' -lld -lmld \
911                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
912                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
914         LIBS="$libs"
915         AC_TRY_LINK_FUNC(ldopen,
916                 [gcc_cv_collect2_libs="$libs"; break])
917 done
918 LIBS="$save_LIBS"
919 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
920 case $gcc_cv_collect2_libs in
921         "none required")        ;;
922         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
923 esac
924 AC_SUBST(COLLECT2_LIBS)
926 # When building Ada code on Alpha, we need exc_resume which is usually in
927 # -lexc.  So test for it.
928 save_LIBS="$LIBS"
929 LIBS=
930 AC_SEARCH_LIBS(exc_resume, exc)
931 GNAT_LIBEXC="$LIBS"
932 LIBS="$save_LIBS"
933 AC_SUBST(GNAT_LIBEXC)
935 # Some systems put ldexp and frexp in libm instead of libc; assume
936 # they're both in the same place.  jcf-dump needs them.
937 save_LIBS="$LIBS"
938 LIBS=
939 AC_SEARCH_LIBS(ldexp, m)
940 LDEXP_LIB="$LIBS"
941 LIBS="$save_LIBS"
942 AC_SUBST(LDEXP_LIB)
944 # Use <inttypes.h> only if it exists,
945 # doesn't clash with <sys/types.h>, and declares intmax_t.
946 AC_MSG_CHECKING(for inttypes.h)
947 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
948 [AC_TRY_COMPILE(
949   [#include <sys/types.h>
950 #include <inttypes.h>],
951   [intmax_t i = -1;],
952   [gcc_cv_header_inttypes_h=yes],
953   gcc_cv_header_inttypes_h=no)])
954 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
955 if test $gcc_cv_header_inttypes_h = yes; then
956   AC_DEFINE(HAVE_INTTYPES_H, 1,
957         [Define if you have a working <inttypes.h> header file.])
960 dnl Disabled until we have a complete test for buggy enum bitfields.
961 dnl gcc_AC_C_ENUM_BF_UNSIGNED
963 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
964   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
965   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
966   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
967   putchar_unlocked putc_unlocked)
968 AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
969         sysconf strsignal getrusage nl_langinfo scandir alphasort \
970         gettimeofday mbstowcs wcswidth mmap mincore setlocale \
971         gcc_UNLOCKED_FUNCS)
973 if test x$ac_cv_func_mbstowcs = xyes; then
974   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
975 [    AC_TRY_RUN([#include <stdlib.h>
976 int main()
978   mbstowcs(0, "", 0);
979   return 0;
981     gcc_cv_func_mbstowcs_works=yes,
982     gcc_cv_func_mbstowcs_works=no,
983     gcc_cv_func_mbstowcs_works=yes)])
984   if test x$gcc_cv_func_mbstowcs_works = xyes; then
985     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
986   [Define this macro if mbstowcs does not crash when its
987    first argument is NULL.])
988   fi
991 AC_CHECK_TYPE(ssize_t, int)
993 # Try to determine the array type of the second argument of getgroups
994 # for the target system (int or gid_t).
995 AC_TYPE_GETGROUPS
996 if test "${target}" = "${build}"; then
997   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
998 else
999   case "${target}" in
1000         # This condition may need some tweaking.  It should include all
1001         # targets where the array type of the second argument of getgroups
1002         # is int and the type of gid_t is not equivalent to int.
1003         *-*-sunos* | *-*-ultrix*)
1004                 TARGET_GETGROUPS_T=int
1005                 ;;
1006         *)
1007                 TARGET_GETGROUPS_T=gid_t
1008                 ;;
1009   esac
1011 AC_SUBST(TARGET_GETGROUPS_T)
1013 gcc_AC_FUNC_PRINTF_PTR
1014 gcc_AC_FUNC_MMAP_BLACKLIST
1016 case "${host}" in
1017 *-*-*vms*)
1018   # Under VMS, vfork works very differently than on Unix. The standard test 
1019   # won't work, and it isn't easily adaptable. It makes more sense to
1020   # just force it.
1021   ac_cv_func_vfork_works=yes
1022   ;;
1023 esac
1024 AC_FUNC_VFORK
1026 AM_ICONV
1027 # Until we have in-tree GNU iconv:
1028 LIBICONV_DEP=
1029 AC_SUBST(LIBICONV_DEP)
1031 AM_LC_MESSAGES
1033 AM_LANGINFO_CODESET
1035 # We will need to find libiberty.h and ansidecl.h
1036 saved_CFLAGS="$CFLAGS"
1037 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1038 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd strsignal \
1039         strstr errno snprintf vasprintf malloc realloc calloc free \
1040         basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1041 #include "ansidecl.h"
1042 #include "system.h"])
1044 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1045 #include "ansidecl.h"
1046 #include "system.h"
1047 #ifdef HAVE_SYS_RESOURCE_H
1048 #include <sys/resource.h>
1049 #endif
1052 AC_TRY_COMPILE([
1053 #include "ansidecl.h"
1054 #include "system.h"
1055 #ifdef HAVE_SYS_RESOURCE_H
1056 #include <sys/resource.h>
1057 #endif
1058 ],[rlim_t l = 0;],,[AC_DEFINE([rlim_t],[long],
1059 [Define to \`long' if <sys/resource.h> doesn't define.])])
1061 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1062 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1063 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1064 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1065 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1066 #include "ansidecl.h"
1067 #include "system.h"
1068 #ifdef HAVE_LDFCN_H
1069 #undef FREAD
1070 #undef FWRITE
1071 #include <ldfcn.h>
1072 #endif
1075 gcc_AC_CHECK_DECLS(times, , ,[
1076 #include "ansidecl.h"
1077 #include "system.h"
1078 #ifdef HAVE_SYS_TIMES_H
1079 #include <sys/times.h>
1080 #endif
1083 # More time-related stuff.
1084 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1085 AC_TRY_COMPILE([
1086 #include "ansidecl.h"
1087 #include "system.h"
1088 #ifdef HAVE_SYS_TIMES_H
1089 #include <sys/times.h>
1090 #endif
1091 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
1092 if test $ac_cv_struct_tms = yes; then
1093   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1094   [Define if <sys/times.h> defines struct tms.])
1097 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1098 # revisit after autoconf 2.50.
1099 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1100 AC_TRY_COMPILE([
1101 #include "ansidecl.h"
1102 #include "system.h"
1103 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
1104 if test $gcc_cv_type_clock_t = yes; then
1105   AC_DEFINE(HAVE_CLOCK_T, 1,
1106   [Define if <time.h> defines clock_t.])
1109 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1110 CFLAGS="$saved_CFLAGS"
1112 gcc_AC_INITFINI_ARRAY
1114 # mkdir takes a single argument on some systems. 
1115 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1117 # File extensions
1118 manext='.1'
1119 objext='.o'
1120 AC_SUBST(manext)
1121 AC_SUBST(objext)
1123 # With Setjmp/Longjmp based exception handling.
1124 AC_ARG_ENABLE(sjlj-exceptions,
1125 [  --enable-sjlj-exceptions
1126                           arrange to use setjmp/longjmp exception handling],
1127 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1128 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1129   [Define 0/1 to force the choice for exception handling model.])])
1131 # For platforms with the unwind ABI which includes an unwind library,
1132 # libunwind, we can choose to use the system libunwind.
1133 AC_ARG_WITH(system-libunwind,
1134 [  --with-system-libunwind use installed libunwind])
1136 # --------------------------------------------------------
1137 # Build, host, and target specific configuration fragments
1138 # --------------------------------------------------------
1140 # Collect build-machine-specific information.
1141 . ${srcdir}/config.build
1143 # Collect host-machine-specific information.
1144 . ${srcdir}/config.host
1146 target_gtfiles=
1148 # Collect target-machine-specific information.
1149 . ${srcdir}/config.gcc
1151 extra_objs="${host_extra_objs} ${extra_objs}"
1152 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1154 # Default the target-machine variables that were not explicitly set.
1155 if test x"$tm_file" = x
1156 then tm_file=$cpu_type/$cpu_type.h; fi
1158 if test x"$extra_headers" = x
1159 then extra_headers=; fi
1161 if test x$md_file = x
1162 then md_file=$cpu_type/$cpu_type.md; fi
1164 if test x$out_file = x
1165 then out_file=$cpu_type/$cpu_type.c; fi
1167 if test x"$tmake_file" = x
1168 then tmake_file=$cpu_type/t-$cpu_type
1171 if test x"$dwarf2" = xyes
1172 then tm_file="$tm_file tm-dwarf2.h"
1175 # Say what files are being used for the output code and MD file.
1176 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1177 echo "Using \`$srcdir/config/$md_file' as machine description file."
1179 # If any of the xm_file variables contain nonexistent files, warn
1180 # about them and drop them.
1183 for x in $build_xm_file; do
1184   if    test -f $srcdir/config/$x
1185   then      bx="$bx $x"
1186   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1187   fi
1188 done
1189 build_xm_file="$bx"
1192 for x in $host_xm_file; do
1193   if    test -f $srcdir/config/$x
1194   then      hx="$hx $x"
1195   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1196   fi
1197 done
1198 host_xm_file="$hx"
1201 for x in $xm_file; do
1202   if    test -f $srcdir/config/$x
1203   then      tx="$tx $x"
1204   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1205   fi
1206 done
1207 xm_file="$tx"
1209 count=a
1210 for f in $tm_file; do
1211         count=${count}x
1212 done
1213 if test $count = ax; then
1214         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1215 else
1216         echo "Using the following target machine macro files:"
1217         for f in $tm_file; do
1218                 echo "  $srcdir/config/$f"
1219         done
1222 if test x$need_64bit_hwint = xyes; then
1223         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1224 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1227 if test x$use_long_long_for_widest_fast_int = xyes; then
1228         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1229 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1230 efficiently supported by the host hardware.])
1233 count=a
1234 for f in $host_xm_file; do
1235         count=${count}x
1236 done
1237 if test $count = a; then
1238         :
1239 elif test $count = ax; then
1240         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1241 else
1242         echo "Using the following host machine macro files:"
1243         for f in $host_xm_file; do
1244                 echo "  $srcdir/config/$f"
1245         done
1247 echo "Using ${out_host_hook_obj} for host machine hooks."
1249 if test "$host_xm_file" != "$build_xm_file"; then
1250         count=a
1251         for f in $build_xm_file; do
1252                 count=${count}x
1253         done
1254         if test $count = a; then
1255                 :
1256         elif test $count = ax; then
1257                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1258         else
1259                 echo "Using the following build machine macro files:"
1260                 for f in $build_xm_file; do
1261                         echo "  $srcdir/config/$f"
1262                 done
1263         fi
1266 # ---------
1267 # Threading
1268 # ---------
1270 # Check if a valid thread package
1271 case ${enable_threads} in
1272   "" | no)
1273     # No threads
1274     target_thread_file='single'
1275     ;;
1276   yes)
1277     # default
1278     target_thread_file='single'
1279     ;;
1280   aix | dce | gnat | irix | posix | posix95 | rtems | \
1281   single | solaris | vxworks | win32 )
1282     target_thread_file=${enable_threads}
1283     ;;
1284   *)
1285     echo "${enable_threads} is an unknown thread package" 1>&2
1286     exit 1
1287     ;;
1288 esac
1290 if test x${thread_file} = x; then
1291   # No thread file set by target-specific clauses in config.gcc,
1292   # so use file chosen by default logic above
1293   thread_file=${target_thread_file}
1296 # Make gthr-default.h if we have a thread file.
1297 gthread_flags=
1298 if test $thread_file != single; then
1299   rm -f gthr-default.h
1300   echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
1301   gthread_flags=-DHAVE_GTHR_DEFAULT
1303 AC_SUBST(gthread_flags)
1305 # --------
1306 # UNSORTED
1307 # --------
1309 use_cxa_atexit=no
1310 if test x$enable___cxa_atexit = xyes || \
1311    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1312   if test x$host = x$target; then
1313     AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1314         [echo "__cxa_atexit can't be enabled on this target"])
1315   else
1316     # We can't check for __cxa_atexit when building a cross, so assume
1317     # it is available 
1318     use_cxa_atexit=yes
1319   fi
1320   if test x$use_cxa_atexit = xyes; then
1321     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
1322       [Define if you want to use __cxa_atexit, rather than atexit, to
1323       register C++ destructors for local statics and global objects.
1324       This is essential for fully standards-compliant handling of
1325       destructors, but requires __cxa_atexit in libc.])
1326   fi
1329 # Look for a file containing extra machine modes.
1330 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1331   extra_modes_file='$(srcdir)'/config/${extra_modes}
1332   AC_SUBST(extra_modes_file)
1333   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1334   [Define to the name of a file containing a list of extra machine modes
1335    for this architecture.])
1338 # auto-host.h is the file containing items generated by autoconf and is
1339 # the first file included by config.h.
1340 # If host=build, it is correct to have bconfig include auto-host.h
1341 # as well.  If host!=build, we are in error and need to do more 
1342 # work to find out the build config parameters.
1343 if test x$host = x$build
1344 then
1345         build_auto=auto-host.h
1346 else
1347         # We create a subdir, then run autoconf in the subdir.
1348         # To prevent recursion we set host and build for the new
1349         # invocation of configure to the build for this invocation
1350         # of configure. 
1351         tempdir=build.$$
1352         rm -rf $tempdir
1353         mkdir $tempdir
1354         cd $tempdir
1355         case ${srcdir} in
1356         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1357         *) realsrcdir=../${srcdir};;
1358         esac
1359         saved_CFLAGS="${CFLAGS}"
1360         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1361         ${realsrcdir}/configure \
1362                 --enable-languages=${enable_languages-all} \
1363                 --target=$target_alias --host=$build_alias --build=$build_alias
1364         CFLAGS="${saved_CFLAGS}"
1366         # We just finished tests for the build machine, so rename
1367         # the file auto-build.h in the gcc directory.
1368         mv auto-host.h ../auto-build.h
1369         cd ..
1370         rm -rf $tempdir
1371         build_auto=auto-build.h
1373 AC_SUBST(build_subdir)
1375 tm_file="${tm_file} defaults.h"
1376 tm_p_file="${tm_p_file} tm-preds.h"
1377 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1378 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1379 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1380 # put this back in temporarily.
1381 xm_file="ansidecl.h ${xm_file}"
1383 # --------
1384 # UNSORTED
1385 # --------
1387 changequote(,)dnl
1388 # Compile in configure arguments.
1389 if test -f configargs.h ; then
1390         # Being re-configured.
1391         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1392         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1393 else
1394         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1397 # Double all backslashes and backslash all quotes to turn
1398 # gcc_config_arguments into a C string.
1399 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1400 $gcc_config_arguments
1402 gcc_config_arguments_str=`cat conftest.out`
1403 rm -f conftest.out
1405 cat > configargs.h <<EOF
1406 /* Generated automatically. */
1407 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1408 static const char thread_model[] = "$thread_file";
1410 static const struct {
1411   const char *name, *value;
1412 } configure_default_options[] = $configure_default_options;
1414 changequote([,])dnl
1416 # Internationalization
1417 PACKAGE=gcc
1418 VERSION="$gcc_version"
1419 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",
1420   [The name of this program for internationalization purposes.])
1421 AC_SUBST(PACKAGE)
1422 AC_SUBST(VERSION)
1424 ZW_GNU_GETTEXT_SISTER_DIR
1426 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1427 # -liconv on the link line twice.
1428 case "$LIBINTL" in *$LIBICONV*)
1429         LIBICONV= ;;
1430 esac
1432 # Windows32 Registry support for specifying GCC installation paths.
1433 AC_ARG_ENABLE(win32-registry,
1434 [  --disable-win32-registry
1435                           disable lookup of installation paths in the
1436                           Registry on Windows hosts
1437   --enable-win32-registry enable registry lookup (default)
1438   --enable-win32-registry=KEY
1439                           use KEY instead of GCC version as the last portion
1440                           of the registry key],,)
1441 case $host_os in
1442         win32 | pe | cygwin* | mingw32* | uwin*)
1443 AC_MSG_CHECKING(whether windows registry support is requested)
1444 if test "x$enable_win32_registry" != xno; then
1445   AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1446 [Define to 1 if installation paths should be looked up in Windows32
1447    Registry. Ignored on non windows32 hosts.])
1448   AC_MSG_RESULT(yes)
1449   AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
1450 else
1451   AC_MSG_RESULT(no)
1454 # Check if user specified a different registry key.
1455 case "x${enable_win32_registry}" in
1456 x | xyes)
1457   # default.
1458   gcc_cv_win32_registry_key="$VERSION"
1459   ;;
1460 xno)
1461   # no registry lookup.
1462   gcc_cv_win32_registry_key=''
1463   ;;
1465   # user-specified key.
1466   gcc_cv_win32_registry_key="$enable_win32_registry"
1467   ;;
1468 esac
1470 if test "x$enable_win32_registry" != xno; then
1471   AC_MSG_CHECKING(registry key on windows hosts)
1472   AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1473         [Define to be the last portion of registry key on windows hosts.])
1474   AC_MSG_RESULT($gcc_cv_win32_registry_key)
1477 esac
1479 # Get an absolute path to the GCC top-level source directory
1480 holddir=`${PWDCMD-pwd}`
1481 cd $srcdir
1482 topdir=`${PWDCMD-pwd}`
1483 cd $holddir
1485 # Conditionalize the makefile for this host machine.
1486 xmake_file=
1487 for f in ${host_xmake_file}
1489         if test -f ${srcdir}/config/$f
1490         then
1491                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1492         fi
1493 done
1495 # Conditionalize the makefile for this target machine.
1496 tmake_file_=
1497 for f in ${tmake_file}
1499         if test -f ${srcdir}/config/$f
1500         then
1501                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1502         fi
1503 done
1504 tmake_file="${tmake_file_}"
1506 # If the host doesn't support symlinks, modify CC in
1507 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1508 # Otherwise, we can use "CC=$(CC)".
1509 rm -f symtest.tem
1510 case "$LN_S" in
1511         *-s*)
1512                 cc_set_by_configure="\$(CC)"
1513                 quoted_cc_set_by_configure="\$(CC)"
1514                 stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1515                 quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1516                 ;;
1517         *)
1518                 cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1519                 quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1520                 stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1521                 quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1522                 ;;
1523 esac
1525 # This is a terrible hack which will go away when a gnattools directory
1526 # is created.
1527 cc_for_cross_gnattools=${CC}
1528 AC_SUBST(cc_for_cross_gnattools)
1530 out_object_file=`basename $out_file .c`.o
1532 tm_file_list=
1533 tm_include_list=
1534 for f in $tm_file; do
1535   case $f in
1536     defaults.h )
1537        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1538        tm_include_list="${tm_include_list} $f"
1539        ;;
1540     * )
1541        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1542        tm_include_list="${tm_include_list} config/$f"
1543        ;;
1544   esac
1545 done
1547 tm_p_file_list=
1548 tm_p_include_list=
1549 for f in $tm_p_file; do
1550   case $f in
1551     tm-preds.h )
1552        tm_p_file_list="${tm_p_file_list} $f"
1553        tm_p_include_list="${tm_p_include_list} $f"
1554        ;;
1555     * )
1556        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1557        tm_p_include_list="${tm_p_include_list} config/$f"
1558   esac
1559 done
1561 xm_file_list=
1562 xm_include_list=
1563 for f in $xm_file; do
1564   case $f in
1565     ansidecl.h )
1566        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1567        xm_include_list="${xm_include_list} $f"
1568        ;;
1569     auto-host.h )
1570        xm_file_list="${xm_file_list} $f"
1571        xm_include_list="${xm_include_list} $f"
1572        ;;
1573     * )
1574        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1575        xm_include_list="${xm_include_list} config/$f"
1576        ;;
1577   esac
1578 done
1580 host_xm_file_list=
1581 host_xm_include_list=
1582 for f in $host_xm_file; do
1583   case $f in
1584     ansidecl.h )
1585        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1586        host_xm_include_list="${host_xm_include_list} $f"
1587        ;;
1588     auto-host.h )
1589        host_xm_file_list="${host_xm_file_list} $f"
1590        host_xm_include_list="${host_xm_include_list} $f"
1591        ;;
1592     * )
1593        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1594        host_xm_include_list="${host_xm_include_list} config/$f"
1595        ;;
1596   esac
1597 done
1599 build_xm_file_list=
1600 for f in $build_xm_file; do
1601   case $f in
1602     ansidecl.h )
1603        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1604        build_xm_include_list="${build_xm_include_list} $f"
1605        ;;
1606     auto-build.h | auto-host.h )
1607        build_xm_file_list="${build_xm_file_list} $f"
1608        build_xm_include_list="${build_xm_include_list} $f"
1609        ;;
1610     * )
1611        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1612        build_xm_include_list="${build_xm_include_list} config/$f"
1613        ;;
1614   esac
1615 done
1617 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1618 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1619 CROSS=                                          AC_SUBST(CROSS)
1620 ALL=all.internal                                AC_SUBST(ALL)
1621 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1622 if test x$host != x$target
1623 then
1624         CROSS="-DCROSS_COMPILE"
1625         ALL=all.cross
1626         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1627         case "$host","$target" in
1628         # Darwin crosses can use the host system's libraries and headers,
1629         # because of the fat library support.  Of course, it must be the
1630         # same version of Darwin on both sides.  Allow the user to
1631         # just say --target=foo-darwin without a version number to mean
1632         # "the version on this system".
1633             *-*-darwin*,*-*-darwin*)
1634                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1635                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1636                 if test $hostos = $targetos -o $targetos = darwin ; then
1637                     CROSS=
1638                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1639                     with_headers=yes
1640                 fi
1641                 ;;
1643             i?86-*-*,x86_64-*-* \
1644             | powerpc*-*-*,powerpc64*-*-*)
1645                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1646         esac
1647 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1648         # This is just $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)
1649         SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1652 # If this is a cross-compiler that does not
1653 # have its own set of headers then define
1654 # inhibit_libc
1656 # If this is using newlib, without having the headers available now,
1657 # then define inhibit_libc in LIBGCC2_CFLAGS.
1658 # This prevents libgcc2 from containing any code which requires libc
1659 # support.
1660 inhibit_libc=
1661 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1662        test x$with_newlib = xyes ; } &&
1663      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1664        inhibit_libc=-Dinhibit_libc
1666 AC_SUBST(inhibit_libc)
1668 # When building gcc with a cross-compiler, we need to adjust things so
1669 # that the generator programs are still built with the native compiler.
1670 # Also, we cannot run fixincludes or fix-header.
1672 # These are the normal (build=host) settings:
1673 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
1674 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1675 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1677 # Possibly disable fixproto, on a per-target basis.
1678 case ${use_fixproto} in
1679   no)
1680     STMP_FIXPROTO=
1681     ;;
1682   yes)
1683     STMP_FIXPROTO=stmp-fixproto
1684     ;;
1685 esac
1686 AC_SUBST(STMP_FIXPROTO)
1688 # And these apply if build != host, or we are generating coverage data
1689 if test x$build != x$host || test "x$coverage_flags" != x
1690 then
1691     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1693     if test "x$TARGET_SYSTEM_ROOT" = x; then
1694         if test "x$STMP_FIXPROTO" != x; then
1695           STMP_FIXPROTO=stmp-install-fixproto
1696         fi
1697     fi
1700 # Expand extra_headers to include complete path.
1701 # This substitutes for lots of t-* files.
1702 extra_headers_list=
1703 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1704 for file in ${extra_headers} ; do
1705   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1706 done
1708 # Define collect2 in Makefile.
1709 case $host_can_use_collect2 in
1710   no) collect2= ;;
1711   *) collect2='collect2$(exeext)' ;;
1712 esac
1713 AC_SUBST([collect2])
1715 # Add a definition of USE_COLLECT2 if system wants one.
1716 case $use_collect2 in
1717   no) use_collect2= ;;
1718   "") ;;
1719   *) 
1720     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1721     xm_defines="${xm_defines} USE_COLLECT2"
1722     case $host_can_use_collect2 in
1723       no)
1724         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1725         ;;
1726     esac
1727     ;;
1728 esac
1730 # ---------------------------
1731 # Assembler & linker features
1732 # ---------------------------
1734 # Identify the assembler which will work hand-in-glove with the newly
1735 # built GCC, so that we can examine its features.  This is the assembler
1736 # which will be driven by the driver program.
1738 # If build != host, and we aren't building gas in-tree, we identify a
1739 # build->target assembler and hope that it will have the same features
1740 # as the host->target assembler we'll be using.
1741 AC_MSG_CHECKING(what assembler to use)
1742 in_tree_gas=no
1743 gcc_cv_as=
1744 gcc_cv_gas_major_version=
1745 gcc_cv_gas_minor_version=
1746 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1747 if test -x "$DEFAULT_ASSEMBLER"; then
1748         gcc_cv_as="$DEFAULT_ASSEMBLER"
1749 elif test -x as$build_exeext; then
1750         # Build using assembler in the current directory.
1751         gcc_cv_as=./as$build_exeext
1752 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1753      && test -f ../gas/Makefile \
1754      && test x$build = x$host; then
1755   # Single tree build which includes gas.  We want to prefer it
1756   # over whatever linker top-level may have detected, since
1757   # we'll use what we're building after installation anyway.
1758   in_tree_gas=yes
1759   _gcc_COMPUTE_GAS_VERSION
1760   rm -f as$build_exeext
1761   $LN_S ../gas/as-new$build_exeext as$build_exeext 2>/dev/null
1762   in_tree_gas_is_elf=no
1763   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1764      || (grep 'obj_format = multi' ../gas/Makefile \
1765          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1766   then
1767     in_tree_gas_is_elf=yes
1768   fi
1769 m4_pattern_allow([AS_FOR_TARGET])dnl
1770 elif test -x "$AS_FOR_TARGET"; then
1771         gcc_cv_as="$AS_FOR_TARGET"
1772 elif test -x "$AS" && test x$host = x$target; then
1773         gcc_cv_as="$AS"
1776 if test "x$gcc_cv_as" = x; then
1777         # Search the same directories that the installed compiler will
1778         # search.  Else we may find the wrong assembler and lose.  If we
1779         # do not find a suitable assembler binary, then try the user's
1780         # path.
1781         #
1782         # Also note we have to check MD_EXEC_PREFIX before checking the
1783         # user's path.  Unfortunately, there is no good way to get at the
1784         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1785         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1786         # to be fixed as part of the make/configure rewrite too.
1788         if test "x$exec_prefix" = xNONE; then
1789                 if test "x$prefix" = xNONE; then
1790                         test_prefix=/usr/local
1791                 else
1792                         test_prefix=$prefix
1793                 fi
1794         else
1795                 test_prefix=$exec_prefix
1796         fi
1798         # If the loop below does not find an assembler, then use whatever
1799         # one we can find in the users's path.
1800         # user's path.
1801         if test "x$program_prefix" != xNONE; then
1802                 gcc_cv_as=${program_prefix}as$build_exeext
1803         else
1804                 gcc_cv_as=`echo as | sed "${program_transform_name}"`$build_exeext
1805         fi
1807         if test x$host = x$build; then
1808             test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
1809                        $test_prefix/libexec/gcc/$target_noncanonical \
1810                        /usr/lib/gcc/$target_noncanonical/$gcc_version \
1811                        /usr/lib/gcc/$target_noncanonical \
1812                        $test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
1813                        $test_prefix/$target_noncanonical/bin"
1814         else
1815             test_dirs=
1816         fi
1818         if test x$host = x$target; then
1819             test_dirs="$test_dirs \
1820                    /usr/libexec \
1821                    /usr/ccs/gcc \
1822                    /usr/ccs/bin \
1823                    /udk/usr/ccs/bin \
1824                    /bsd43/usr/lib/cmplrs/cc \
1825                    /usr/cross64/usr/bin \
1826                    /usr/lib/cmplrs/cc \
1827                    /sysv/usr/lib/cmplrs/cc \
1828                    /svr4/usr/lib/cmplrs/cc \
1829                    /usr/bin"
1830         fi
1832         for dir in $test_dirs; do
1833                 if test -x $dir/as$build_exeext; then
1834                         gcc_cv_as=$dir/as$build_exeext
1835                         break;
1836                 fi
1837         done
1839 case $in_tree_gas in
1840   yes)
1841     AC_MSG_RESULT("newly built gas")
1842     ;;
1843   no)
1844     AC_MSG_RESULT($gcc_cv_as)
1845     ;;
1846 esac
1848 # Identify the linker which will work hand-in-glove with the newly
1849 # built GCC, so that we can examine its features.  This is the linker
1850 # which will be driven by the driver program.
1852 # If build != host, and we aren't building gas in-tree, we identify a
1853 # build->target linker and hope that it will have the same features
1854 # as the host->target linker we'll be using.
1855 AC_MSG_CHECKING(what linker to use)
1856 in_tree_ld=no
1857 gcc_cv_ld=
1858 gcc_cv_gld_major_version=
1859 gcc_cv_gld_minor_version=
1860 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1861 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1862 if test -x "$DEFAULT_LINKER"; then
1863         gcc_cv_ld="$DEFAULT_LINKER"
1864 elif test -x collect-ld$build_exeext; then
1865         # Build using linker in the current directory.
1866         gcc_cv_ld=./collect-ld$build_exeext
1867 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1868      && test -f ../ld/Makefile \
1869      && test x$build = x$host; then
1870         # Single tree build which includes ld.  We want to prefer it
1871         # over whatever linker top-level may have detected, since
1872         # we'll use what we're building after installation anyway.
1873         in_tree_ld=yes
1874         in_tree_ld_is_elf=no
1875         if (grep 'EMUL = .*elf' ../ld/Makefile \
1876             || grep 'EMUL = .*linux' ../ld/Makefile \
1877             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1878           in_tree_ld_is_elf=yes
1879         fi
1880         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
1881         do
1882 changequote(,)dnl
1883                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1884 changequote([,])dnl
1885                 if test x$gcc_cv_gld_version != x; then
1886                         break
1887                 fi
1888         done
1889 changequote(,)dnl
1890         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1891         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1892 changequote([,])dnl
1893         rm -f collect-ld$build_exeext
1894         $LN_S ../ld/ld-new$build_exeext collect-ld$build_exeext 2>/dev/null
1895 elif test -x "$LD_FOR_TARGET"; then
1896         gcc_cv_ld="$LD_FOR_TARGET"
1897 elif test -x "$LD" && test x$host = x$target; then
1898         gcc_cv_ld="$LD"
1901 if test "x$gcc_cv_ld" = x; then
1902         # Search the same directories that the installed compiler will
1903         # search.  Else we may find the wrong linker and lose.  If we
1904         # do not find a suitable linker binary, then try the user's
1905         # path.
1906         #
1907         # Also note we have to check MD_EXEC_PREFIX before checking the
1908         # user's path.  Unfortunately, there is no good way to get at the
1909         # value of MD_EXEC_PREFIX here.  So we do a brute force search
1910         # through all the known MD_EXEC_PREFIX values.  Ugh.  This needs
1911         # to be fixed as part of the make/configure rewrite too.
1913         if test "x$exec_prefix" = xNONE; then
1914                 if test "x$prefix" = xNONE; then
1915                         test_prefix=/usr/local
1916                 else
1917                         test_prefix=$prefix
1918                 fi
1919         else
1920                 test_prefix=$exec_prefix
1921         fi
1923         # If the loop below does not find an linker, then use whatever
1924         # one we can find in the users's path.
1925         # user's path.
1926         if test "x$program_prefix" != xNONE; then
1927                 gcc_cv_ld=${program_prefix}ld$build_exeext
1928         else
1929                 gcc_cv_ld=`echo ld | sed "${program_transform_name}"`$build_exeext
1930         fi
1932         if test x$host = x$build; then
1933             test_dirs="$test_prefix/libexec/gcc/$target_noncanonical/$gcc_version \
1934                        $test_prefix/libexec/gcc/$target_noncanonical \
1935                        /usr/lib/gcc/$target_noncanonical/$gcc_version \
1936                        /usr/lib/gcc/$target_noncanonical \
1937                        $test_prefix/$target_noncanonical/bin/$target_noncanonical/$gcc_version \
1938                        $test_prefix/$target_noncanonical/bin"
1939         else
1940             test_dirs=
1941         fi
1943         if test x$host = x$target; then
1944             test_dirs="$test_dirs \
1945                    /usr/libexec \
1946                    /usr/ccs/gcc \
1947                    /usr/ccs/bin \
1948                    /udk/usr/ccs/bin \
1949                    /bsd43/usr/lib/cmplrs/cc \
1950                    /usr/cross64/usr/bin \
1951                    /usr/lib/cmplrs/cc \
1952                    /sysv/usr/lib/cmplrs/cc \
1953                    /svr4/usr/lib/cmplrs/cc \
1954                    /usr/bin"
1955         fi
1957         for dir in $test_dirs; do
1958                 if test -x $dir/ld$build_exeext; then
1959                         gcc_cv_ld=$dir/ld$build_exeext
1960                         break;
1961                 fi
1962         done
1964 case $in_tree_ld in
1965   yes)
1966     AC_MSG_RESULT("newly built ld")
1967     ;;
1968   no)
1969     AC_MSG_RESULT($gcc_cv_ld)
1970     ;;
1971 esac
1973 # Figure out what nm we will be using.
1974 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1975 AC_MSG_CHECKING(what nm to use)
1976 in_tree_nm=no
1977 if test -x nm$build_exeext; then
1978         gcc_cv_nm=./nm$build_exeext
1979 elif test -f $gcc_cv_binutils_srcdir/configure.in \
1980      && test -f ../binutils/Makefile; then
1981         # Single tree build which includes binutils.
1982         in_tree_nm=yes
1983         gcc_cv_nm=./nm$build_exeext
1984         rm -f nm$build_exeext
1985         $LN_S ../binutils/nm-new$build_exeext nm$build_exeext 2>/dev/null
1986 elif test "x$program_prefix" != xNONE; then
1987         gcc_cv_nm=${program_prefix}nm$build_exeext
1988 else
1989         gcc_cv_nm=`echo nm | sed "${program_transform_name}"`$build_exeext
1991 case $in_tree_nm in
1992   yes) AC_MSG_RESULT("newly built nm") ;;
1993   no)  AC_MSG_RESULT($gcc_cv_nm) ;;
1994 esac
1996 # Figure out what objdump we will be using.
1997 AC_MSG_CHECKING(what objdump to use)
1998 in_tree_objdump=no
1999 if test -x objdump$build_exeext; then
2000         gcc_cv_objdump=./objdump$build_exeext
2001 elif test -f $gcc_cv_binutils_srcdir/configure.in \
2002      && test -f ../binutils/Makefile; then
2003         # Single tree build which includes binutils.
2004         in_tree_objdump=yes
2005         gcc_cv_objdump=./objdump$build_exeext
2006         rm -f objdump$build_exeext
2007         $LN_S ../binutils/objdump$build_exeext objdump$build_exeext 2>/dev/null
2008 elif test "x$program_prefix" != xNONE; then
2009         gcc_cv_objdump=${program_prefix}objdump$build_exeext
2010 else
2011         gcc_cv_objdump=`echo objdump | \
2012                 sed "${program_transform_name}"`$build_exeext
2014 case $in_tree_objdump in
2015   yes) AC_MSG_RESULT("newly built objdump") ;;
2016   no)  AC_MSG_RESULT($gcc_cv_objdump) ;;
2017 esac
2019 # Figure out what assembler alignment features are present.
2020 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2021  [2,6,0],,
2022 [.balign 4
2023 .p2align 2],,
2024 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2025   [Define if your assembler supports .balign and .p2align.])])
2027 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2028  [2,8,0],,
2029  [.p2align 4,,7],,
2030 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2031   [Define if your assembler supports specifying the maximum number
2032    of bytes to skip when using the GAS .p2align command.])])
2034 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2035  [elf,2,9,0],,
2036  [conftest_label1: .word 0
2037 .subsection -1
2038 conftest_label2: .word 0
2039 .previous],
2040  [if test x$gcc_cv_nm != x; then
2041     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2042     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2043     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2044     then :
2045     else gcc_cv_as_subsection_m1=yes
2046     fi
2047     rm -f conftest.nm1 conftest.nm2
2048   fi],
2049  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2050   [Define if your assembler supports .subsection and .subsection -1 starts
2051    emitting at the beginning of your section.])])
2053 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2054  [2,2,0],,
2055  [      .weak foobar],,
2056 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2058 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2059  [2,15,91],,
2060  [      .SPACE $TEXT$
2061         .NSUBSPA $CODE$,COMDAT],,
2062 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2064 # .hidden needs to be supported in both the assembler and the linker,
2065 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2066 # This is irritatingly difficult to feature test for; we have to check the
2067 # date string after the version number.  If we've got an in-tree
2068 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2069 # to be safe.
2070 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2071 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2072  [elf,2,13,0],,
2073 [       .hidden foobar
2074 foobar:])
2076 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2077 [if test $in_tree_ld = yes ; then
2078   gcc_cv_ld_hidden=no
2079   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 \
2080      && test $in_tree_ld_is_elf = yes; then
2081      gcc_cv_ld_hidden=yes
2082   fi
2083 else
2084   gcc_cv_ld_hidden=yes
2085   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2086   if echo "$ld_ver" | grep GNU > /dev/null; then
2087 changequote(,)dnl
2088     ld_vers=`echo $ld_ver | sed -n \
2089         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2090         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2091         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2092         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)[  ].*$,\1,p' \
2093         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[     ].*$,\1,p' \
2094         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[        ].*$,\1,p'`
2095     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'`
2096     if test 0"$ld_date" -lt 20020404; then
2097       if test -n "$ld_date"; then
2098         # If there was date string, but was earlier than 2002-04-04, fail
2099         gcc_cv_ld_hidden=no
2100       elif test -z "$ld_vers"; then
2101         # If there was no date string nor ld version number, something is wrong
2102         gcc_cv_ld_hidden=no
2103       else
2104         ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2105         ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2106         ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2107         test -z "$ld_vers_patch" && ld_vers_patch=0
2108         if test "$ld_vers_major" -lt 2; then
2109           gcc_cv_ld_hidden=no
2110         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2111           gcc_cv_ld_hidden="no"
2112         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2113           gcc_cv_ld_hidden=no
2114         fi
2115       fi
2116 changequote([,])dnl
2117     fi
2118   else
2119     case "${target}" in
2120       hppa64*-*-hpux* | ia64*-*-hpux*)
2121         gcc_cv_ld_hidden=yes
2122         ;;
2123       *)
2124         gcc_cv_ld_hidden=no
2125         ;;
2126     esac
2127   fi
2128 fi])
2129 libgcc_visibility=no
2130 AC_SUBST(libgcc_visibility)
2131 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2132   libgcc_visibility=yes
2133   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2134   [Define if your assembler and linker support .hidden.])
2137 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2138 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2139   [elf,2,11,0],,
2140 [       .data
2141         .uleb128 L2 - L1
2143         .uleb128 1280
2144         .sleb128 -1010
2145 L2:],
2146  [# GAS versions before 2.11 do not support uleb128,
2147   # despite appearing to.
2148   # ??? There exists an elf-specific test that will crash
2149   # the assembler.  Perhaps it's better to figure out whether
2150   # arbitrary sections are supported and try the test.
2151   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2152   if echo "$as_ver" | grep GNU > /dev/null; then
2153 changequote(,)dnl
2154     as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
2155     as_major=`echo $as_ver | sed 's/\..*//'`
2156     as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
2157 changequote([,])dnl
2158     if test $as_major -eq 2 && test $as_minor -lt 11
2159     then :
2160     else gcc_cv_as_leb128=yes
2161     fi
2162   fi],
2163   [AC_DEFINE(HAVE_AS_LEB128, 1,
2164     [Define if your assembler supports .sleb128 and .uleb128.])])
2166 # GAS versions up to and including 2.11.0 may mis-optimize
2167 # .eh_frame data.
2168 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2169   [elf,2,12,0],,
2170 [       .text
2171 .LFB1:
2172         .4byte  0
2173 .L1:
2174         .4byte  0
2175 .LFE1:
2176         .section        .eh_frame,"aw",@progbits
2177 __FRAME_BEGIN__:
2178         .4byte  .LECIE1-.LSCIE1
2179 .LSCIE1:
2180         .4byte  0x0
2181         .byte   0x1
2182         .ascii "z\0"
2183         .byte   0x1
2184         .byte   0x78
2185         .byte   0x1a
2186         .byte   0x0
2187         .byte   0x4
2188         .4byte  1
2189         .p2align 1
2190 .LECIE1:
2191 .LSFDE1:
2192         .4byte  .LEFDE1-.LASFDE1
2193 .LASFDE1:
2194         .4byte  .LASFDE1-__FRAME_BEGIN__
2195         .4byte  .LFB1
2196         .4byte  .LFE1-.LFB1
2197         .byte   0x4
2198         .4byte  .LFE1-.LFB1
2199         .byte   0x4
2200         .4byte  .L1-.LFB1
2201 .LEFDE1:],
2202 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2203 cat > conftest.lit <<EOF
2204  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2205  0010 01000000 12000000 18000000 00000000  ................
2206  0020 08000000 04080000 0044               .........D      @&t@
2208 cat > conftest.big <<EOF
2209  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2210  0010 00000001 00000012 00000018 00000000  ................
2211  0020 00000008 04000000 0844               .........D      @&t@
2213   # If the assembler didn't choke, and we can objdump,
2214   # and we got the correct data, then succeed.
2215   if test x$gcc_cv_objdump != x \
2216   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2217      | tail -3 > conftest.got \
2218   && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
2219     || cmp conftest.big conftest.got > /dev/null 2>&1; }
2220   then
2221     gcc_cv_as_eh_frame=yes
2222   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2223     gcc_cv_as_eh_frame=buggy
2224   else
2225     # Uh oh, what do we do now?
2226     gcc_cv_as_eh_frame=no
2227   fi])
2229 if test $gcc_cv_as_eh_frame = buggy; then
2230   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2231   [Define if your assembler mis-optimizes .eh_frame data.])
2234 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2235  [elf,2,12,0], [--fatal-warnings],
2236  [.section .rodata.str, "aMS", @progbits, 1])
2237 if test $gcc_cv_as_shf_merge = no; then
2238   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2239     [elf,2,12,0], [--fatal-warnings],
2240     [.section .rodata.str, "aMS", %progbits, 1])
2242 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2243   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2244 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2246 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2247  [elf,2,15,91], [--fatal-warnings],
2248  [.section .text,"axG",@progbits,.foo,comdat])
2249 if test $gcc_cv_as_comdat_group = yes; then
2250   gcc_cv_as_comdat_group_percent=no
2251 else
2252  gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2253    [elf,2,15,91], [--fatal-warnings],
2254    [.section .text,"axG",%progbits,.foo,comdat])
2256 AC_DEFINE_UNQUOTED(HAVE_GAS_COMDAT_GROUP,
2257   [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2258 [Define 0/1 if your assembler supports COMDAT group.])
2260 # Thread-local storage - the check is heavily parametrized.
2261 conftest_s=
2262 tls_first_major=
2263 tls_first_minor=
2264 tls_as_opt=
2265 case "$target" in
2266 changequote(,)dnl
2267   alpha*-*-*)
2268     conftest_s='
2269         .section ".tdata","awT",@progbits
2270 foo:    .long   25
2271         .text
2272         ldq     $27,__tls_get_addr($29)         !literal!1
2273         lda     $16,foo($29)                    !tlsgd!1
2274         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2275         ldq     $27,__tls_get_addr($29)         !literal!2
2276         lda     $16,foo($29)                    !tlsldm!2
2277         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2278         ldq     $1,foo($29)                     !gotdtprel
2279         ldah    $2,foo($29)                     !dtprelhi
2280         lda     $3,foo($2)                      !dtprello
2281         lda     $4,foo($29)                     !dtprel
2282         ldq     $1,foo($29)                     !gottprel
2283         ldah    $2,foo($29)                     !tprelhi
2284         lda     $3,foo($2)                      !tprello
2285         lda     $4,foo($29)                     !tprel'
2286         tls_first_major=2
2287         tls_first_minor=13
2288         tls_as_opt=--fatal-warnings
2289         ;;
2290   frv*-*-*)
2291     conftest_s='
2292         .section ".tdata","awT",@progbits
2293 x:      .long   25
2294         .text
2295         call    #gettlsoff(x)'
2296         tls_first_major=2
2297         tls_first_minor=14
2298         ;;
2299   i[34567]86-*-*)
2300     conftest_s='
2301         .section ".tdata","awT",@progbits
2302 foo:    .long   25
2303         .text
2304         movl    %gs:0, %eax
2305         leal    foo@TLSGD(,%ebx,1), %eax
2306         leal    foo@TLSLDM(%ebx), %eax
2307         leal    foo@DTPOFF(%eax), %edx
2308         movl    foo@GOTTPOFF(%ebx), %eax
2309         subl    foo@GOTTPOFF(%ebx), %eax
2310         addl    foo@GOTNTPOFF(%ebx), %eax
2311         movl    foo@INDNTPOFF, %eax
2312         movl    $foo@TPOFF, %eax
2313         subl    $foo@TPOFF, %eax
2314         leal    foo@NTPOFF(%ecx), %eax'
2315         tls_first_major=2
2316         tls_first_minor=14
2317         tls_as_opt=--fatal-warnings
2318         ;;
2319   x86_64-*-*)
2320     conftest_s='
2321         .section ".tdata","awT",@progbits
2322 foo:    .long   25
2323         .text
2324         movq    %fs:0, %rax
2325         leaq    foo@TLSGD(%rip), %rdi
2326         leaq    foo@TLSLD(%rip), %rdi
2327         leaq    foo@DTPOFF(%rax), %rdx
2328         movq    foo@GOTTPOFF(%rip), %rax
2329         movq    $foo@TPOFF, %rax'
2330         tls_first_major=2
2331         tls_first_minor=14
2332         tls_as_opt=--fatal-warnings
2333         ;;
2334   ia64-*-*)
2335     conftest_s='
2336         .section ".tdata","awT",@progbits
2337 foo:    data8   25
2338         .text
2339         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2340         addl    r17 = @ltoff(@dtprel(foo#)), gp
2341         addl    r18 = @ltoff(@tprel(foo#)), gp
2342         addl    r19 = @dtprel(foo#), gp
2343         adds    r21 = @dtprel(foo#), r13
2344         movl    r23 = @dtprel(foo#)
2345         addl    r20 = @tprel(foo#), gp
2346         adds    r22 = @tprel(foo#), r13
2347         movl    r24 = @tprel(foo#)'
2348         tls_first_major=2
2349         tls_first_minor=13
2350         tls_as_opt=--fatal-warnings
2351         ;;
2352   powerpc-*-*)
2353     conftest_s='
2354         .section ".tdata","awT",@progbits
2355         .align 2
2356 ld0:    .space 4
2357 ld1:    .space 4
2358 x1:     .space 4
2359 x2:     .space 4
2360 x3:     .space 4
2361         .text
2362         addi 3,31,ld0@got@tlsgd
2363         bl __tls_get_addr
2364         addi 3,31,x1@got@tlsld
2365         bl __tls_get_addr
2366         addi 9,3,x1@dtprel
2367         addis 9,3,x2@dtprel@ha
2368         addi 9,9,x2@dtprel@l
2369         lwz 9,x3@got@tprel(31)
2370         add 9,9,x@tls
2371         addi 9,2,x1@tprel
2372         addis 9,2,x2@tprel@ha
2373         addi 9,9,x2@tprel@l'
2374         tls_first_major=2
2375         tls_first_minor=14
2376         tls_as_opt="-a32 --fatal-warnings"
2377         ;;
2378   powerpc64-*-*)
2379     conftest_s='
2380         .section ".tdata","awT",@progbits
2381         .align 3
2382 ld0:    .space 8
2383 ld1:    .space 8
2384 x1:     .space 8
2385 x2:     .space 8
2386 x3:     .space 8
2387         .text
2388         addi 3,2,ld0@got@tlsgd
2389         bl .__tls_get_addr
2390         nop
2391         addi 3,2,ld1@toc
2392         bl .__tls_get_addr
2393         nop
2394         addi 3,2,x1@got@tlsld
2395         bl .__tls_get_addr
2396         nop
2397         addi 9,3,x1@dtprel
2398         bl .__tls_get_addr
2399         nop
2400         addis 9,3,x2@dtprel@ha
2401         addi 9,9,x2@dtprel@l
2402         bl .__tls_get_addr
2403         nop
2404         ld 9,x3@got@dtprel(2)
2405         add 9,9,3
2406         bl .__tls_get_addr
2407         nop'
2408         tls_first_major=2
2409         tls_first_minor=14
2410         tls_as_opt="-a64 --fatal-warnings"
2411         ;;
2412   s390-*-*)
2413     conftest_s='
2414         .section ".tdata","awT",@progbits
2415 foo:    .long   25
2416         .text
2417         .long   foo@TLSGD
2418         .long   foo@TLSLDM
2419         .long   foo@DTPOFF
2420         .long   foo@NTPOFF
2421         .long   foo@GOTNTPOFF
2422         .long   foo@INDNTPOFF
2423         l       %r1,foo@GOTNTPOFF(%r12)
2424         l       %r1,0(%r1):tls_load:foo
2425         bas     %r14,0(%r1,%r13):tls_gdcall:foo
2426         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
2427         tls_first_major=2
2428         tls_first_minor=14
2429         tls_as_opt="-m31 --fatal-warnings"
2430         ;;
2431   s390x-*-*)
2432     conftest_s='
2433         .section ".tdata","awT",@progbits
2434 foo:    .long   25
2435         .text
2436         .quad   foo@TLSGD
2437         .quad   foo@TLSLDM
2438         .quad   foo@DTPOFF
2439         .quad   foo@NTPOFF
2440         .quad   foo@GOTNTPOFF
2441         lg      %r1,foo@GOTNTPOFF(%r12)
2442         larl    %r1,foo@INDNTPOFF
2443         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
2444         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2445         tls_first_major=2
2446         tls_first_minor=14
2447         tls_as_opt="-m64 -Aesame --fatal-warnings"
2448         ;;
2449   sh-*-* | sh[34]-*-*)
2450     conftest_s='
2451         .section ".tdata","awT",@progbits
2452 foo:    .long   25
2453         .text
2454         .long   foo@TLSGD
2455         .long   foo@TLSLDM
2456         .long   foo@DTPOFF
2457         .long   foo@GOTTPOFF
2458         .long   foo@TPOFF'
2459         tls_first_major=2
2460         tls_first_minor=13
2461         tls_as_opt=--fatal-warnings
2462         ;;
2463   sparc*-*-*)
2464     case "$target" in
2465       sparc*-sun-solaris2.*)
2466         on_solaris=yes
2467         ;;
2468       *)
2469         on_solaris=no
2470         ;;
2471     esac
2472     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2473       conftest_s='
2474         .section ".tdata",#alloc,#write,#tls
2475 foo:    .long   25
2476         .text
2477         sethi   %tgd_hi22(foo), %o0
2478         add     %o0, %tgd_lo10(foo), %o1
2479         add     %l7, %o1, %o0, %tgd_add(foo)
2480         call    __tls_get_addr, %tgd_call(foo)
2481         sethi   %tldm_hi22(foo), %l1
2482         add     %l1, %tldm_lo10(foo), %l2
2483         add     %l7, %l2, %o0, %tldm_add(foo)
2484         call    __tls_get_addr, %tldm_call(foo)
2485         sethi   %tldo_hix22(foo), %l3
2486         xor     %l3, %tldo_lox10(foo), %l4
2487         add     %o0, %l4, %l5, %tldo_add(foo)
2488         sethi   %tie_hi22(foo), %o3
2489         add     %o3, %tie_lo10(foo), %o3
2490         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2491         add     %g7, %o2, %o4, %tie_add(foo)
2492         sethi   %tle_hix22(foo), %l1
2493         xor     %l1, %tle_lox10(foo), %o5
2494         ld      [%g7 + %o5], %o1'
2495         tls_first_major=0
2496         tls_first_minor=0
2497     else
2498       conftest_s='
2499         .section ".tdata","awT",@progbits
2500 foo:    .long   25
2501         .text
2502         sethi   %tgd_hi22(foo), %o0
2503         add     %o0, %tgd_lo10(foo), %o1
2504         add     %l7, %o1, %o0, %tgd_add(foo)
2505         call    __tls_get_addr, %tgd_call(foo)
2506         sethi   %tldm_hi22(foo), %l1
2507         add     %l1, %tldm_lo10(foo), %l2
2508         add     %l7, %l2, %o0, %tldm_add(foo)
2509         call    __tls_get_addr, %tldm_call(foo)
2510         sethi   %tldo_hix22(foo), %l3
2511         xor     %l3, %tldo_lox10(foo), %l4
2512         add     %o0, %l4, %l5, %tldo_add(foo)
2513         sethi   %tie_hi22(foo), %o3
2514         add     %o3, %tie_lo10(foo), %o3
2515         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2516         add     %g7, %o2, %o4, %tie_add(foo)
2517         sethi   %tle_hix22(foo), %l1
2518         xor     %l1, %tle_lox10(foo), %o5
2519         ld      [%g7 + %o5], %o1'
2520         tls_first_major=2
2521         tls_first_minor=14
2522         tls_as_opt="-32 --fatal-warnings"
2523       fi
2524         ;;
2525 changequote([,])dnl
2526 esac
2527 if test -z "$tls_first_major"; then
2528   : # If we don't have a check, assume no support.
2529 else
2530   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2531   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2532   [AC_DEFINE(HAVE_AS_TLS, 1,
2533             [Define if your assembler supports thread-local storage.])])
2536 # Target-specific assembler checks.
2538 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2539 gcc_cv_ld_static_dynamic=no
2540 if test $in_tree_ld = yes ; then
2541   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2542     gcc_cv_ld_static_dynamic=yes
2543   fi
2544 elif test x$gcc_cv_ld != x; then
2545         # Check if linker supports -Bstatic/-Bdynamic option
2546         if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2547           && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2548                 gcc_cv_ld_static_dynamic=yes
2549         fi
2551 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2552         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2553 [Define if your linker supports -Bstatic/-Bdynamic option.])
2555 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2557 if test x"$demangler_in_ld" = xyes; then
2558   AC_MSG_CHECKING(linker --demangle support)
2559   gcc_cv_ld_demangle=no
2560   if test $in_tree_ld = yes; then
2561     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 \
2562       gcc_cv_ld_demangle=yes
2563     fi
2564   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2565     # Check if the GNU linker supports --demangle option
2566     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2567       gcc_cv_ld_demangle=yes
2568     fi
2569   fi
2570   if test x"$gcc_cv_ld_demangle" = xyes; then
2571     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2572 [Define if your linker supports --demangle option.])
2573   fi
2574   AC_MSG_RESULT($gcc_cv_ld_demangle)
2577 case "$target" in
2578   # All TARGET_ABI_OSF targets.
2579   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2580     gcc_GAS_CHECK_FEATURE([explicit relocation support],
2581         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2582 [       .set nomacro
2583         .text
2584         extbl   $3, $2, $3      !lituse_bytoff!1
2585         ldq     $2, a($29)      !literal!1
2586         ldq     $4, b($29)      !literal!2
2587         ldq_u   $3, 0($2)       !lituse_base!1
2588         ldq     $27, f($29)     !literal!5
2589         jsr     $26, ($27), f   !lituse_jsr!5
2590         ldah    $29, 0($26)     !gpdisp!3
2591         lda     $0, c($29)      !gprel
2592         ldah    $1, d($29)      !gprelhigh
2593         lda     $1, d($1)       !gprellow
2594         lda     $29, 0($29)     !gpdisp!3],,
2595     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2596   [Define if your assembler supports explicit relocations.])])
2597     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2598         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2599 [       .set nomacro
2600         .text
2601         ldq     $27, a($29)     !literal!1
2602         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
2603     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2604   [Define if your assembler supports the lituse_jsrdirect relocation.])])
2605     ;;
2607   cris-*-*)
2608     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2609       gcc_cv_as_cris_no_mul_bug,[2,15,91],
2610       [-no-mul-bug-abort], [.text],,
2611       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2612                 [Define if your assembler supports the -no-mul-bug-abort option.])])
2613     ;;
2615   sparc*-*-*)
2616     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2617       [.register %g2, #scratch],,
2618       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2619                 [Define if your assembler supports .register.])])
2621     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2622       [-relax], [.text],,
2623       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2624                 [Define if your assembler supports -relax option.])])
2626     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2627       gcc_cv_as_sparc_ua_pcrel,,
2628       [-K PIC],
2629 [.text
2630 foo:
2631         nop
2632 .data
2633 .align 4
2634 .byte 0
2635 .uaword %r_disp32(foo)],
2636       [if test x$gcc_cv_ld != x \
2637        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2638          gcc_cv_as_sparc_ua_pcrel=yes
2639        fi
2640        rm -f conftest],
2641       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2642                 [Define if your assembler and linker support unaligned PC relative relocs.])
2644       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2645         gcc_cv_as_sparc_ua_pcrel_hidden,,
2646         [-K PIC],
2647 [.data
2648 .align 4
2649 .byte 0x31
2650 .uaword %r_disp32(foo)
2651 .byte 0x32, 0x33, 0x34
2652 .global foo
2653 .hidden foo
2654 foo:
2655 .skip 4],
2656         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2657          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2658          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2659             | grep ' 31000000 07323334' > /dev/null 2>&1; then
2660             if $gcc_cv_objdump -R conftest 2> /dev/null \
2661                | grep 'DISP32' > /dev/null 2>&1; then
2662                 :
2663             else
2664                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2665             fi
2666          fi
2667          rm -f conftest],
2668          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2669                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2670     ]) # unaligned pcrel relocs
2672     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2673       gcc_cv_as_sparc_offsetable_lo10,,
2674       [-xarch=v9],
2675 [.text
2676         or %g1, %lo(ab) + 12, %g1
2677         or %g1, %lo(ab + 12), %g1],
2678       [if test x$gcc_cv_objdump != x \
2679        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2680           | grep ' 82106000 82106000' > /dev/null 2>&1; then
2681          gcc_cv_as_sparc_offsetable_lo10=yes
2682        fi],
2683        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2684                  [Define if your assembler supports offsetable %lo().])])
2685     ;;
2687 changequote(,)dnl
2688   i[34567]86-*-* | x86_64-*-*)
2689 changequote([,])dnl
2690     case $target_os in
2691       cygwin* | pe | mingw32*)
2692         # Used for DWARF 2 in PE
2693         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2694           gcc_cv_as_ix86_pe_secrel32,
2695           [2,15,91],,
2696 [.text
2697 foo:    nop
2698 .data
2699         .secrel32 foo],
2700           [if test x$gcc_cv_ld != x \
2701            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2702              gcc_cv_as_ix86_pe_secrel32=yes
2703            fi
2704            rm -f conftest],
2705           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2706             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2707         ;;
2708     esac
2710     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2711        gcc_cv_as_ix86_filds_fists,
2712       [2,9,0],, [filds mem; fists mem],,
2713       [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2714         [Define if your assembler uses the new HImode fild and fist notation.])])
2716     gcc_GAS_CHECK_FEATURE([cmov syntax],
2717       gcc_cv_as_ix86_cmov_sun_syntax,,,
2718       [cmovl.l %edx, %eax],,
2719       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2720         [Define if your assembler supports the Sun syntax for cmov.])])
2722     # This one is used unconditionally by i386.[ch]; it is to be defined
2723     # to 1 if the feature is present, 0 otherwise.
2724     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2725         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2726 [       .text
2727 .L0:
2728         nop
2729         .data
2730         .long .L0@GOTOFF])
2731     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2732       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2733       [Define true if the assembler supports '.long foo@GOTOFF'.])
2734     ;;
2736   ia64*-*-*)
2737     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2738         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2739 [       .text
2740         addl r15 = @ltoffx(x#), gp
2741         ;;
2742         ld8.mov r16 = [[r15]], x#],,
2743     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2744           [Define if your assembler supports ltoffx and ldxmov relocations.])])
2746     ;;
2748   powerpc*-*-*)
2749     case $target in
2750       *-*-aix*) conftest_s='    .csect .text[[PR]]
2751         mfcr 3,128';;
2752       *-*-darwin*)
2753         gcc_GAS_CHECK_FEATURE([.machine directive support],
2754           gcc_cv_as_machine_directive,,,
2755           [     .machine ppc7400])
2756         if test x$gcc_cv_as_machine_directive != xyes; then
2757           echo "*** This target requires an assembler supporting \".machine\"" >&2
2758           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2759           test x$build = x$target && exit 1
2760         fi
2761         conftest_s='    .text
2762         mfcr r3,128';;
2763       *) conftest_s='   .machine power4
2764         .text
2765         mfcr 3,128';;
2766     esac
2768     gcc_GAS_CHECK_FEATURE([mfcr field support],
2769       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2770       [$conftest_s],,
2771       [AC_DEFINE(HAVE_AS_MFCRF, 1,
2772           [Define if your assembler supports mfcr field.])])
2773     ;;
2775   mips*-*-*)
2776     gcc_GAS_CHECK_FEATURE([explicit relocation support],
2777       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
2778 [       lw $4,%gp_rel(foo)($4)],,
2779       [if test x$target_cpu_default = x
2780        then target_cpu_default=MASK_EXPLICIT_RELOCS
2781        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
2782        fi])
2784     if test x$gas_flag = xyes \
2785        || test x"$host" != x"$build" \
2786        || test ! -x "$gcc_cv_as" \
2787        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
2788       :
2789     else
2790       echo "*** This configuration requires the GNU assembler" >&2
2791       exit 1
2792     fi
2793     ;;
2794 esac
2795 # ??? Not all targets support dwarf2 debug_line, even within a version
2796 # of gas.  Moreover, we need to emit a valid instruction to trigger any
2797 # info to the output file.  So, as supported targets are added to gas 2.11,
2798 # add some instruction here to (also) show we expect this might work.
2799 # ??? Once 2.11 is released, probably need to add first known working
2800 # version to the per-target configury.
2801 case "$target" in
2802   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2803   | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
2804   | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-*)
2805     insn="nop"
2806     ;;
2807   ia64*-*-* | s390*-*-*)
2808     insn="nop 0"
2809     ;;
2810   mmix-*-*)
2811     insn="swym 0"
2812     ;;
2813 esac
2814 if test x"$insn" != x; then
2815  conftest_s="\
2816         .file 1 \"conftest.s\"
2817         .loc 1 3 0
2818         $insn"
2819  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
2820   gcc_cv_as_dwarf2_debug_line,
2821   [elf,2,11,0],, [$conftest_s],
2822   [if test x$gcc_cv_objdump != x \
2823    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
2824       | grep debug_line > /dev/null 2>&1; then
2825      gcc_cv_as_dwarf2_debug_line=yes
2826    fi])
2828 # The .debug_line file table must be in the exact order that
2829 # we specified the files, since these indices are also used
2830 # by DW_AT_decl_file.  Approximate this test by testing if
2831 # the assembler bitches if the same index is assigned twice.
2832  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
2833   gcc_cv_as_dwarf2_file_buggy,,,
2834 [       .file 1 "foo.s"
2835         .file 1 "bar.s"])
2837  if test $gcc_cv_as_dwarf2_debug_line = yes \
2838  && test $gcc_cv_as_dwarf2_file_buggy = no; then
2839         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
2840   [Define if your assembler supports dwarf2 .file/.loc directives,
2841    and preserves file table indices exactly as given.])
2842  fi
2844  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
2845   gcc_cv_as_gdwarf2_flag,
2846   [elf,2,11,0], [--gdwarf2], [$insn],,
2847   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2848 [Define if your assembler supports the --gdwarf2 option.])])
2850  gcc_GAS_CHECK_FEATURE([--gstabs option],
2851   gcc_cv_as_gstabs_flag,
2852   [elf,2,11,0], [--gstabs], [$insn],
2853   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
2854    # and warns about it, but still exits successfully.  So check for
2855    # this.
2856    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
2857    then :
2858    else gcc_cv_as_gstabs_flag=yes
2859    fi],
2860   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2861 [Define if your assembler supports the --gstabs option.])])
2864 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2865 gcc_cv_ld_ro_rw_mix=unknown
2866 if test $in_tree_ld = yes ; then
2867   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 \
2868      && test $in_tree_ld_is_elf = yes; then
2869     gcc_cv_ld_ro_rw_mix=read-write
2870   fi
2871 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2872   echo '.section myfoosect, "a"' > conftest1.s
2873   echo '.section myfoosect, "aw"' > conftest2.s
2874   echo '.byte 1' >> conftest2.s
2875   echo '.section myfoosect, "a"' > conftest3.s
2876   echo '.byte 0' >> conftest3.s
2877   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2878      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2879      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2880      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2881         conftest2.o conftest3.o > /dev/null 2>&1; then
2882     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2883                          | sed -e '/myfoosect/!d' -e N`
2884     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2885       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2886         gcc_cv_ld_ro_rw_mix=read-only
2887       else
2888         gcc_cv_ld_ro_rw_mix=read-write
2889       fi
2890     fi
2891   fi
2892 changequote(,)dnl
2893   rm -f conftest.* conftest[123].*
2894 changequote([,])dnl
2896 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2897         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2898   [Define if your linker links a mix of read-only
2899    and read-write sections into a read-write section.])
2901 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2903 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2904 gcc_cv_ld_eh_frame_hdr=no
2905 if test $in_tree_ld = yes ; then
2906   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 \
2907      && test $in_tree_ld_is_elf = yes; then
2908     gcc_cv_ld_eh_frame_hdr=yes
2909   fi
2910 elif test x$gcc_cv_ld != x; then
2911         # Check if linker supports --eh-frame-hdr option
2912         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2913                 gcc_cv_ld_eh_frame_hdr=yes
2914         fi
2916 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2917         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2918 [Define if your linker supports --eh-frame-hdr option.])
2920 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2922 AC_MSG_CHECKING(linker position independent executable support)
2923 gcc_cv_ld_pie=no
2924 if test $in_tree_ld = yes ; then
2925   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 \
2926      && test $in_tree_ld_is_elf = yes; then
2927     gcc_cv_ld_pie=yes
2928   fi
2929 elif test x$gcc_cv_ld != x; then
2930         # Check if linker supports -pie option
2931         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
2932                 gcc_cv_ld_pie=yes
2933         fi
2935 if test x"$gcc_cv_ld_pie" = xyes; then
2936         AC_DEFINE(HAVE_LD_PIE, 1,
2937 [Define if your linker supports -pie option.])
2939 AC_MSG_RESULT($gcc_cv_ld_pie)
2941 # --------
2942 # UNSORTED
2943 # --------
2945 AC_CACHE_CHECK(linker --as-needed support,
2946 gcc_cv_ld_as_needed,
2947 [gcc_cv_ld_as_needed=no
2948 if test $in_tree_ld = yes ; then
2949   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 \
2950      && test $in_tree_ld_is_elf = yes; then
2951     gcc_cv_ld_as_needed=yes
2952   fi
2953 elif test x$gcc_cv_ld != x; then
2954         # Check if linker supports --as-needed and --no-as-needed options
2955         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
2956                 gcc_cv_ld_as_needed=yes
2957         fi
2960 if test x"$gcc_cv_ld_as_needed" = xyes; then
2961         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
2962 [Define if your linker supports --as-needed and --no-as-needed options.])
2965 case "$target:$tm_file" in
2966   powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
2967     AC_CACHE_CHECK(linker support for omitting dot symbols,
2968     gcc_cv_ld_no_dot_syms,
2969     [gcc_cv_ld_no_dot_syms=no
2970     if test $in_tree_ld = yes ; then
2971       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
2972         gcc_cv_ld_no_dot_syms=yes
2973       fi
2974     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
2975       cat > conftest1.s <<EOF
2976         .text
2977         bl .foo
2979       cat > conftest2.s <<EOF
2980         .section ".opd","aw"
2981         .align 3
2982         .globl foo
2983         .type foo,@function
2984 foo:
2985         .quad .LEfoo,.TOC.@tocbase,0
2986         .text
2987 .LEfoo:
2988         blr
2989         .size foo,.-.LEfoo
2991       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
2992          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
2993          && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
2994         gcc_cv_ld_no_dot_syms=yes
2995       fi
2996       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
2997     fi
2998     ])
2999     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3000       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3001     [Define if your PowerPC64 linker only needs function descriptor syms.])
3002     fi
3003     ;;
3004 esac
3006 if test x$with_sysroot = x && test x$host = x$target \
3007    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
3008   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3009 [Define to PREFIX/include if cpp should also search that directory.])
3012 # Find out what GC implementation we want, or may, use.
3013 AC_ARG_WITH(gc,
3014 [  --with-gc={page,zone}   choose the garbage collection mechanism to use
3015                           with the compiler],
3016 [case "$withval" in
3017   page | zone)
3018     GGC=ggc-$withval
3019     ;;
3020   *)
3021     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3022     ;;
3023 esac],
3024 [GGC=ggc-page])
3025 AC_SUBST(GGC)
3026 echo "Using $GGC for garbage collection."
3028 # Use the system's zlib library.
3029 zlibdir=-L../zlib
3030 zlibinc="-I\$(srcdir)/../zlib"
3031 AC_ARG_WITH(system-zlib,
3032 [  --with-system-zlib      use installed libz],
3033 zlibdir=
3034 zlibinc=
3036 AC_SUBST(zlibdir)
3037 AC_SUBST(zlibinc)
3039 dnl Very limited version of automake's enable-maintainer-mode
3041 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3042   dnl maintainer-mode is disabled by default
3043   AC_ARG_ENABLE(maintainer-mode,
3044 [  --enable-maintainer-mode
3045                           enable make rules and dependencies not useful
3046                           (and sometimes confusing) to the casual installer],
3047       maintainer_mode=$enableval,
3048       maintainer_mode=no)
3050 AC_MSG_RESULT($maintainer_mode)
3052 if test "$maintainer_mode" = "yes"; then
3053   MAINT=''
3054 else
3055   MAINT='#'
3057 AC_SUBST(MAINT)dnl
3059 # --------------
3060 # Language hooks
3061 # --------------
3063 # Make empty files to contain the specs and options for each language.
3064 # Then add #include lines to for a compiler that has specs and/or options.
3066 lang_opt_files=
3067 lang_specs_files=
3068 lang_tree_files=
3069 for subdir in . $subdirs
3071         if test -f $srcdir/$subdir/lang.opt; then
3072             lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"
3073         fi
3074         if test -f $srcdir/$subdir/lang-specs.h; then
3075             lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
3076         fi
3077         if test -f $srcdir/$subdir/$subdir-tree.def; then
3078             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3079         fi
3080 done
3082 # These (without "all_") are set in each config-lang.in.
3083 # `language' must be a single word so is spelled singularly.
3084 all_languages=
3085 all_boot_languages=
3086 all_compilers=
3087 all_stagestuff=
3088 all_outputs='Makefile gccbug mklibgcc libada-mk'
3089 # List of language makefile fragments.
3090 all_lang_makefrags=
3091 # List of language subdirectory makefiles.  Deprecated.
3092 all_lang_makefiles=
3093 # Files for gengtype
3094 all_gtfiles="$target_gtfiles"
3095 # Files for gengtype with language
3096 all_gtfiles_files_langs=
3097 all_gtfiles_files_files=
3099 # Add the language fragments.
3100 # Languages are added via two mechanisms.  Some information must be
3101 # recorded in makefile variables, these are defined in config-lang.in.
3102 # We accumulate them and plug them into the main Makefile.
3103 # The other mechanism is a set of hooks for each of the main targets
3104 # like `clean', `install', etc.
3106 language_hooks="Make-hooks"
3108 for s in $subdirs
3110                 language=
3111                 boot_language=
3112                 compilers=
3113                 stagestuff=
3114                 outputs=
3115                 gtfiles=
3116                 . ${srcdir}/$s/config-lang.in
3117                 if test "x$language" = x
3118                 then
3119                         echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
3120                         exit 1
3121                 fi
3122                 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$s/Make-lang.in"
3123                 if test -f ${srcdir}/$s/Makefile.in
3124                 then all_lang_makefiles="$s/Makefile"
3125                 fi
3126                 all_languages="$all_languages $language"
3127                 if test "x$boot_language" = xyes
3128                 then
3129                         all_boot_languages="$all_boot_languages $language"
3130                 fi
3131                 all_compilers="$all_compilers $compilers"
3132                 all_stagestuff="$all_stagestuff $stagestuff"
3133                 all_outputs="$all_outputs $outputs"
3134                 all_gtfiles="$all_gtfiles $gtfiles"
3135                 for f in $gtfiles
3136                 do
3137                          all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
3138                          all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
3139                 done
3140 done
3142 # Pick up gtfiles for c
3143 gtfiles=
3144 s="c"
3145 . ${srcdir}/c-config-lang.in
3146 all_gtfiles="$all_gtfiles $gtfiles"
3147 for f in $gtfiles
3149         all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
3150         all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
3151 done
3153 check_languages=
3154 for language in $all_languages
3156                 check_languages="$check_languages check-$language"
3157 done
3159 # We link each language in with a set of hooks, reached indirectly via
3160 # lang.${target}.
3162 rm -f Make-hooks
3163 touch Make-hooks
3164 target_list="all.build all.cross start.encap rest.encap tags \
3165         install-normal install-common install-man \
3166         uninstall info man srcextra srcman srcinfo \
3167         mostlyclean clean distclean maintainer-clean \
3168         stage1 stage2 stage3 stage4 stageprofile stagefeedback"
3169 for t in $target_list
3171         x=
3172         for lang in $all_languages
3173         do
3174                         x="$x $lang.$t"
3175         done
3176         echo "lang.$t: $x" >> Make-hooks
3177 done
3179 # --------
3180 # UNSORTED
3181 # --------
3183 # Create .gdbinit.
3185 echo "dir ." > .gdbinit
3186 echo "dir ${srcdir}" >> .gdbinit
3187 if test x$gdb_needs_out_file_path = xyes
3188 then
3189         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3191 if test "x$subdirs" != x; then
3192         for s in $subdirs
3193         do
3194                 echo "dir ${srcdir}/$s" >> .gdbinit
3195         done
3197 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3199 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
3200 # absolute path for gcc_tooldir based on inserting the number of up-directory
3201 # movements required to get from $(exec_prefix) to $(prefix) into the basic
3202 # $(libsubdir)/@(unlibsubdir) based path.
3203 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
3204 # make and thus we'd get different behavior depending on where we built the
3205 # sources.
3206 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
3207     gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_noncanonical)'
3208 else
3209 changequote(<<, >>)dnl
3210 # An explanation of the sed strings:
3211 #  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
3212 #  -e 's|/$||'            match a trailing forward slash and eliminates it
3213 #  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
3214 #  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
3216 # (*) Note this pattern overwrites the first character of the string
3217 # with a forward slash if one is not already present.  This is not a
3218 # problem because the exact names of the sub-directories concerned is
3219 # unimportant, just the number of them matters.
3221 # The practical upshot of these patterns is like this:
3223 #  prefix     exec_prefix        result
3224 #  ------     -----------        ------
3225 #   /foo        /foo/bar          ../
3226 #   /foo/       /foo/bar          ../
3227 #   /foo        /foo/bar/         ../
3228 #   /foo/       /foo/bar/         ../
3229 #   /foo        /foo/bar/ugg      ../../
3231     dollar='$$'
3232     gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_noncanonical)"
3233 changequote([, ])dnl
3235 AC_SUBST(gcc_tooldir)
3236 AC_SUBST(dollar)
3238 # Find a directory in which to install a shared libgcc.
3240 AC_ARG_ENABLE(version-specific-runtime-libs,
3241 [  --enable-version-specific-runtime-libs
3242                           specify that runtime libraries should be
3243                           installed in a compiler-specific directory])
3245 AC_ARG_WITH(slibdir,
3246 [  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
3247 slibdir="$with_slibdir",
3248 if test "${enable_version_specific_runtime_libs+set}" = set; then
3249   slibdir='$(libsubdir)'
3250 elif test "$host" != "$target"; then
3251   slibdir='$(build_tooldir)/lib'
3252 else
3253   slibdir='$(libdir)'
3255 AC_SUBST(slibdir)
3257 objdir=`${PWDCMD-pwd}`
3258 AC_SUBST(objdir)
3260 # Substitute configuration variables
3261 AC_SUBST(subdirs)
3262 AC_SUBST(srcdir)
3263 AC_SUBST(all_boot_languages)
3264 AC_SUBST(all_compilers)
3265 AC_SUBST(all_gtfiles)
3266 AC_SUBST(all_gtfiles_files_langs)
3267 AC_SUBST(all_gtfiles_files_files)
3268 AC_SUBST(all_lang_makefrags)
3269 AC_SUBST(all_lang_makefiles)
3270 AC_SUBST(all_languages)
3271 AC_SUBST(all_stagestuff)
3272 AC_SUBST(build_exeext)
3273 AC_SUBST(build_install_headers_dir)
3274 AC_SUBST(build_xm_file_list)
3275 AC_SUBST(build_xm_include_list)
3276 AC_SUBST(build_xm_defines)
3277 AC_SUBST(check_languages)
3278 AC_SUBST(cc_set_by_configure)
3279 AC_SUBST(quoted_cc_set_by_configure)
3280 AC_SUBST(cpp_install_dir)
3281 AC_SUBST(xmake_file)
3282 AC_SUBST(tmake_file)
3283 AC_SUBST(extra_gcc_objs)
3284 AC_SUBST(extra_headers_list)
3285 AC_SUBST(extra_objs)
3286 AC_SUBST(extra_parts)
3287 AC_SUBST(extra_passes)
3288 AC_SUBST(extra_programs)
3289 AC_SUBST(float_h_file)
3290 AC_SUBST(gcc_config_arguments)
3291 AC_SUBST(gcc_gxx_include_dir)
3292 AC_SUBST(libstdcxx_incdir)
3293 AC_SUBST(host_exeext)
3294 AC_SUBST(host_xm_file_list)
3295 AC_SUBST(host_xm_include_list)
3296 AC_SUBST(host_xm_defines)
3297 AC_SUBST(out_host_hook_obj)
3298 AC_SUBST(install)
3299 AC_SUBST(lang_opt_files)
3300 AC_SUBST(lang_specs_files)
3301 AC_SUBST(lang_tree_files)
3302 AC_SUBST(local_prefix)
3303 AC_SUBST(md_file)
3304 AC_SUBST(objc_boehm_gc)
3305 AC_SUBST(out_file)
3306 AC_SUBST(out_object_file)
3307 AC_SUBST(stage_prefix_set_by_configure)
3308 AC_SUBST(quoted_stage_prefix_set_by_configure)
3309 AC_SUBST(thread_file)
3310 AC_SUBST(tm_file_list)
3311 AC_SUBST(tm_include_list)
3312 AC_SUBST(tm_defines)
3313 AC_SUBST(tm_p_file_list)
3314 AC_SUBST(tm_p_include_list)
3315 AC_SUBST(xm_file_list)
3316 AC_SUBST(xm_include_list)
3317 AC_SUBST(xm_defines)
3318 AC_SUBST(c_target_objs)
3319 AC_SUBST(cxx_target_objs)
3320 AC_SUBST(target_cpu_default)
3322 AC_SUBST_FILE(language_hooks)
3324 TL_AC_GNU_MAKE_GCC_LIB_PATH
3326 # Echo link setup.
3327 if test x${build} = x${host} ; then
3328   if test x${host} = x${target} ; then
3329     echo "Links are now set up to build a native compiler for ${target}." 1>&2
3330   else
3331     echo "Links are now set up to build a cross-compiler" 1>&2
3332     echo " from ${host} to ${target}." 1>&2
3333   fi
3334 else
3335   if test x${host} = x${target} ; then
3336     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3337     echo " for ${target}." 1>&2
3338   else
3339     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3340     echo " from ${host} to ${target}." 1>&2
3341   fi
3344 AC_ARG_VAR(GMPLIBS,[How to link GMP])
3345 AC_ARG_VAR(GMPINC,[How to find GMP include files])
3347 # Configure the subdirectories
3348 # AC_CONFIG_SUBDIRS($subdirs)
3350 # Create the Makefile
3351 # and configure language subdirectories
3352 AC_CONFIG_FILES($all_outputs)
3354 AC_CONFIG_COMMANDS([default],
3356 case ${CONFIG_HEADERS} in
3357   *auto-host.h:config.in*)
3358   echo > cstamp-h ;;
3359 esac
3360 # Make sure all the subdirs exist.
3361 for d in $subdirs doc build
3363     test -d $d || mkdir $d
3364 done
3365 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
3366 # bootstrapping and the installation procedure can still use
3367 # CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
3368 # FLAGS_TO_PASS has been modified to solve the problem there.
3369 # This is virtually a duplicate of what happens in configure.lang; we do
3370 # an extra check to make sure this only happens if ln -s can be used.
3371 case "$LN_S" in
3372   *-s*)
3373     for d in ${subdirs} ; do
3374         STARTDIR=`${PWDCMD-pwd}`
3375         cd $d
3376         for t in stage1 stage2 stage3 stage4 stageprofile stagefeedback include
3377         do
3378                 rm -f $t
3379                 $LN_S ../$t $t 2>/dev/null
3380         done
3381         cd $STARTDIR
3382     done
3383   ;;
3384 esac
3385 ], 
3386 [subdirs='$subdirs'])
3387 AC_OUTPUT