OSDN Git Service

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