OSDN Git Service

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