OSDN Git Service

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