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