OSDN Git Service

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