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