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