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