OSDN Git Service

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