OSDN Git Service

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