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