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