OSDN Git Service

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