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]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-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
1984  ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
1985  if echo "$ld_ver" | grep GNU > /dev/null; then
1986changequote(,)dnl
1987    ld_vers=`echo $ld_ver | sed -n \
1988	-e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \
1989	-e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*\)[	 ].*$,\1,p' \
1990	-e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[	 ].*$,\1,p' \
1991	-e 's,^.*[ 	 ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ 	].*$,\1,p' \
1992	-e 's,^.*[	 ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[	 -].*$,\1,p'`
1993    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'`
1994    ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
1995    ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
1996    ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
1997changequote([,])dnl
1998  fi
1999
2000AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2001[if test $in_tree_ld = yes ; then
2002  gcc_cv_ld_hidden=no
2003  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 \
2004     && test $in_tree_ld_is_elf = yes; then
2005     gcc_cv_ld_hidden=yes
2006  fi
2007else
2008  gcc_cv_ld_hidden=yes
2009changequote(,)dnl
2010  if echo "$ld_ver" | grep GNU > /dev/null; then
2011    if test 0"$ld_date" -lt 20020404; then
2012      if test -n "$ld_date"; then
2013	# If there was date string, but was earlier than 2002-04-04, fail
2014	gcc_cv_ld_hidden=no
2015      elif test -z "$ld_vers"; then
2016	# If there was no date string nor ld version number, something is wrong
2017	gcc_cv_ld_hidden=no
2018      else
2019	test -z "$ld_vers_patch" && ld_vers_patch=0
2020	if test "$ld_vers_major" -lt 2; then
2021	  gcc_cv_ld_hidden=no
2022	elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2023	  gcc_cv_ld_hidden="no"
2024	elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2025	  gcc_cv_ld_hidden=no
2026	fi
2027      fi
2028changequote([,])dnl
2029    fi
2030  else
2031    case "${target}" in
2032      hppa64*-*-hpux* | ia64*-*-hpux*)
2033	gcc_cv_ld_hidden=yes
2034	;;
2035      *)
2036	gcc_cv_ld_hidden=no
2037	;;
2038    esac
2039  fi
2040fi])
2041libgcc_visibility=no
2042AC_SUBST(libgcc_visibility)
2043GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2044if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2045  libgcc_visibility=yes
2046  AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2047  [Define if your assembler and linker support .hidden.])
2048fi
2049
2050# Check if we have .[us]leb128, and support symbol arithmetic with it.
2051gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2052  [elf,2,11,0],,
2053[	.data
2054	.uleb128 L2 - L1
2055L1:
2056	.uleb128 1280
2057	.sleb128 -1010
2058L2:],
2059 [# GAS versions before 2.11 do not support uleb128,
2060  # despite appearing to.
2061  # ??? There exists an elf-specific test that will crash
2062  # the assembler.  Perhaps it's better to figure out whether
2063  # arbitrary sections are supported and try the test.
2064  as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2065  if echo "$as_ver" | grep GNU > /dev/null; then
2066changequote(,)dnl
2067    as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
2068    as_major=`echo $as_ver | sed 's/\..*//'`
2069    as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
2070changequote([,])dnl
2071    if test $as_major -eq 2 && test $as_minor -lt 11
2072    then :
2073    else gcc_cv_as_leb128=yes
2074    fi
2075  fi],
2076  [AC_DEFINE(HAVE_AS_LEB128, 1,
2077    [Define if your assembler supports .sleb128 and .uleb128.])])
2078
2079# GAS versions up to and including 2.11.0 may mis-optimize
2080# .eh_frame data.
2081gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2082  [elf,2,12,0],,
2083[	.text
2084.LFB1:
2085	.4byte	0
2086.L1:
2087	.4byte	0
2088.LFE1:
2089	.section	.eh_frame,"aw",@progbits
2090__FRAME_BEGIN__:
2091	.4byte	.LECIE1-.LSCIE1
2092.LSCIE1:
2093	.4byte	0x0
2094	.byte	0x1
2095	.ascii "z\0"
2096	.byte	0x1
2097	.byte	0x78
2098	.byte	0x1a
2099	.byte	0x0
2100	.byte	0x4
2101	.4byte	1
2102	.p2align 1
2103.LECIE1:
2104.LSFDE1:
2105	.4byte	.LEFDE1-.LASFDE1
2106.LASFDE1:
2107	.4byte	.LASFDE1-__FRAME_BEGIN__
2108	.4byte	.LFB1
2109	.4byte	.LFE1-.LFB1
2110	.byte	0x4
2111	.4byte	.LFE1-.LFB1
2112	.byte	0x4
2113	.4byte	.L1-.LFB1
2114.LEFDE1:],
2115[  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2116cat > conftest.lit <<EOF
2117 0000 10000000 00000000 017a0001 781a0004  .........z..x...
2118 0010 01000000 12000000 18000000 00000000  ................
2119 0020 08000000 04080000 0044               .........D      @&t@
2120EOF
2121cat > conftest.big <<EOF
2122 0000 00000010 00000000 017a0001 781a0004  .........z..x...
2123 0010 00000001 00000012 00000018 00000000  ................
2124 0020 00000008 04000000 0844               .........D      @&t@
2125EOF
2126  # If the assembler didn't choke, and we can objdump,
2127  # and we got the correct data, then succeed.
2128  if test x$gcc_cv_objdump != x \
2129  && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2130     | tail -3 > conftest.got \
2131  && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
2132    || cmp conftest.big conftest.got > /dev/null 2>&1; }
2133  then
2134    gcc_cv_as_eh_frame=yes
2135  elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2136    gcc_cv_as_eh_frame=buggy
2137  else
2138    # Uh oh, what do we do now?
2139    gcc_cv_as_eh_frame=no
2140  fi])
2141
2142if test $gcc_cv_as_eh_frame = buggy; then
2143  AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2144  [Define if your assembler mis-optimizes .eh_frame data.])
2145fi
2146
2147gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2148 [elf,2,12,0], [--fatal-warnings],
2149 [.section .rodata.str, "aMS", @progbits, 1])
2150if test $gcc_cv_as_shf_merge = no; then
2151  gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2152    [elf,2,12,0], [--fatal-warnings],
2153    [.section .rodata.str, "aMS", %progbits, 1])
2154fi
2155AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2156  [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2157[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2158
2159gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2160 [elf,2,16,0], [--fatal-warnings],
2161 [.section .text,"axG",@progbits,.foo,comdat])
2162if test $gcc_cv_as_comdat_group = yes; then
2163  gcc_cv_as_comdat_group_percent=no
2164else
2165 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2166   [elf,2,16,0], [--fatal-warnings],
2167   [.section .text,"axG",%progbits,.foo,comdat])
2168fi
2169if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2170  comdat_group=yes
2171  if test 0"$ld_date" -lt 20050308; then
2172    if test -n "$ld_date"; then
2173      # If there was date string, but was earlier than 2005-03-08, fail
2174      comdat_group=no
2175    elif test "$ld_vers_major" -lt 2; then
2176      comdat_group=no
2177    elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2178      comdat_group=no
2179    fi
2180  fi
2181else
2182  # assume linkers other than GNU ld don't support COMDAT group
2183  comdat_group=no
2184fi
2185if test $comdat_group = no; then
2186  gcc_cv_as_comdat_group=no
2187  gcc_cv_as_comdat_group_percent=no
2188fi
2189AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2190  [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2191[Define 0/1 if your assembler and linker support COMDAT groups.])
2192
2193# Thread-local storage - the check is heavily parametrized.
2194conftest_s=
2195tls_first_major=
2196tls_first_minor=
2197tls_as_opt=
2198case "$target" in
2199changequote(,)dnl
2200  alpha*-*-*)
2201    conftest_s='
2202	.section ".tdata","awT",@progbits
2203foo:	.long	25
2204	.text
2205	ldq	$27,__tls_get_addr($29)		!literal!1
2206	lda	$16,foo($29)			!tlsgd!1
2207	jsr	$26,($27),__tls_get_addr	!lituse_tlsgd!1
2208	ldq	$27,__tls_get_addr($29)		!literal!2
2209	lda	$16,foo($29)			!tlsldm!2
2210	jsr	$26,($27),__tls_get_addr	!lituse_tlsldm!2
2211	ldq	$1,foo($29)			!gotdtprel
2212	ldah	$2,foo($29)			!dtprelhi
2213	lda	$3,foo($2)			!dtprello
2214	lda	$4,foo($29)			!dtprel
2215	ldq	$1,foo($29)			!gottprel
2216	ldah	$2,foo($29)			!tprelhi
2217	lda	$3,foo($2)			!tprello
2218	lda	$4,foo($29)			!tprel'
2219	tls_first_major=2
2220	tls_first_minor=13
2221	tls_as_opt=--fatal-warnings
2222	;;
2223  frv*-*-*)
2224    conftest_s='
2225	.section ".tdata","awT",@progbits
2226x:      .long   25
2227        .text
2228        call    #gettlsoff(x)'
2229	tls_first_major=2
2230	tls_first_minor=14
2231	;;
2232  hppa*-*-linux* | hppa*-*-netbsd*)
2233    conftest_s='
2234t1:	.reg	%r20
2235t2:	.reg	%r21
2236gp:	.reg	%r19
2237	.section ".tdata","awT",@progbits
2238foo:	.long	25
2239	.text
2240	.align	4
2241	addil LT%foo-$tls_gdidx$,gp
2242	ldo RT%foo-$tls_gdidx$(%r1),%arg0
2243	b __tls_get_addr
2244	nop 		
2245	addil LT%foo-$tls_ldidx$,gp
2246	b __tls_get_addr
2247	ldo RT%foo-$tls_ldidx$(%r1),%arg0
2248	addil LR%foo-$tls_dtpoff$,%ret0
2249	ldo RR%foo-$tls_dtpoff$(%r1),%t1
2250	mfctl %cr27,%t1 		
2251	addil LT%foo-$tls_ieoff$,gp
2252	ldw RT%foo-$tls_ieoff$(%r1),%t2
2253	add %t1,%t2,%t3 		
2254	mfctl %cr27,%t1 		
2255	addil LR%foo-$tls_leoff$,%t1
2256	ldo RR%foo-$tls_leoff$(%r1),%t2'
2257	tls_first_major=2
2258	tls_first_minor=15
2259	tls_as_opt=--fatal-warnings
2260	;;
2261  arm*-*-*)
2262    conftest_s='
2263	.section ".tdata","awT",%progbits
2264foo:	.long	25
2265	.text
2266.word foo(gottpoff)
2267.word foo(tpoff)
2268.word foo(tlsgd)
2269.word foo(tlsldm)
2270.word foo(tlsldo)'
2271	tls_first_major=2
2272	tls_first_minor=17
2273	;;
2274  i[34567]86-*-*)
2275    conftest_s='
2276	.section ".tdata","awT",@progbits
2277foo:	.long	25
2278	.text
2279	movl	%gs:0, %eax
2280	leal	foo@TLSGD(,%ebx,1), %eax
2281	leal	foo@TLSLDM(%ebx), %eax
2282	leal	foo@DTPOFF(%eax), %edx
2283	movl	foo@GOTTPOFF(%ebx), %eax
2284	subl	foo@GOTTPOFF(%ebx), %eax
2285	addl	foo@GOTNTPOFF(%ebx), %eax
2286	movl	foo@INDNTPOFF, %eax
2287	movl	$foo@TPOFF, %eax
2288	subl	$foo@TPOFF, %eax
2289	leal	foo@NTPOFF(%ecx), %eax'
2290	tls_first_major=2
2291	tls_first_minor=14
2292	tls_as_opt=--fatal-warnings
2293	;;
2294  x86_64-*-*)
2295    conftest_s='
2296	.section ".tdata","awT",@progbits
2297foo:	.long	25
2298	.text
2299	movq	%fs:0, %rax
2300	leaq	foo@TLSGD(%rip), %rdi
2301	leaq	foo@TLSLD(%rip), %rdi
2302	leaq	foo@DTPOFF(%rax), %rdx
2303	movq	foo@GOTTPOFF(%rip), %rax
2304	movq	$foo@TPOFF, %rax'
2305	tls_first_major=2
2306	tls_first_minor=14
2307	tls_as_opt=--fatal-warnings
2308	;;
2309  ia64-*-*)
2310    conftest_s='
2311	.section ".tdata","awT",@progbits
2312foo:	data8	25
2313	.text
2314	addl	r16 = @ltoff(@dtpmod(foo#)), gp
2315	addl	r17 = @ltoff(@dtprel(foo#)), gp
2316	addl	r18 = @ltoff(@tprel(foo#)), gp
2317	addl	r19 = @dtprel(foo#), gp
2318	adds	r21 = @dtprel(foo#), r13
2319	movl	r23 = @dtprel(foo#)
2320	addl	r20 = @tprel(foo#), gp
2321	adds	r22 = @tprel(foo#), r13
2322	movl	r24 = @tprel(foo#)'
2323	tls_first_major=2
2324	tls_first_minor=13
2325	tls_as_opt=--fatal-warnings
2326	;;
2327  mips*-*-*)
2328    conftest_s='
2329	.section .tdata,"awT",@progbits
2330x:
2331	.word 2
2332	.text
2333	addiu $4, $28, %tlsgd(x)
2334	addiu $4, $28, %tlsldm(x)
2335	lui $4, %dtprel_hi(x)
2336	addiu $4, $4, %dtprel_lo(x)
2337	lw $4, %gottprel(x)($28)
2338	lui $4, %tprel_hi(x)
2339	addiu $4, $4, %tprel_lo(x)'
2340	tls_first_major=2
2341	tls_first_minor=16
2342	tls_as_opt='-32 --fatal-warnings'
2343	;;
2344  powerpc-*-*)
2345    conftest_s='
2346	.section ".tdata","awT",@progbits
2347	.align 2
2348ld0:	.space 4
2349ld1:	.space 4
2350x1:	.space 4
2351x2:	.space 4
2352x3:	.space 4
2353	.text
2354	addi 3,31,ld0@got@tlsgd
2355	bl __tls_get_addr
2356	addi 3,31,x1@got@tlsld
2357	bl __tls_get_addr
2358	addi 9,3,x1@dtprel
2359	addis 9,3,x2@dtprel@ha
2360	addi 9,9,x2@dtprel@l
2361	lwz 9,x3@got@tprel(31)
2362	add 9,9,x@tls
2363	addi 9,2,x1@tprel
2364	addis 9,2,x2@tprel@ha
2365	addi 9,9,x2@tprel@l'
2366	tls_first_major=2
2367	tls_first_minor=14
2368	tls_as_opt="-a32 --fatal-warnings"
2369	;;
2370  powerpc64-*-*)
2371    conftest_s='
2372	.section ".tdata","awT",@progbits
2373	.align 3
2374ld0:	.space 8
2375ld1:	.space 8
2376x1:	.space 8
2377x2:	.space 8
2378x3:	.space 8
2379	.text
2380	addi 3,2,ld0@got@tlsgd
2381	bl .__tls_get_addr
2382	nop
2383	addi 3,2,ld1@toc
2384	bl .__tls_get_addr
2385	nop
2386	addi 3,2,x1@got@tlsld
2387	bl .__tls_get_addr
2388	nop
2389	addi 9,3,x1@dtprel
2390	bl .__tls_get_addr
2391	nop
2392	addis 9,3,x2@dtprel@ha
2393	addi 9,9,x2@dtprel@l
2394	bl .__tls_get_addr
2395	nop
2396	ld 9,x3@got@dtprel(2)
2397	add 9,9,3
2398	bl .__tls_get_addr
2399	nop'
2400	tls_first_major=2
2401	tls_first_minor=14
2402	tls_as_opt="-a64 --fatal-warnings"
2403	;;
2404  s390-*-*)
2405    conftest_s='
2406	.section ".tdata","awT",@progbits
2407foo:	.long	25
2408	.text
2409	.long	foo@TLSGD
2410	.long	foo@TLSLDM
2411	.long	foo@DTPOFF
2412	.long	foo@NTPOFF
2413	.long	foo@GOTNTPOFF
2414	.long	foo@INDNTPOFF
2415	l	%r1,foo@GOTNTPOFF(%r12)
2416	l	%r1,0(%r1):tls_load:foo
2417	bas	%r14,0(%r1,%r13):tls_gdcall:foo
2418	bas	%r14,0(%r1,%r13):tls_ldcall:foo'
2419	tls_first_major=2
2420	tls_first_minor=14
2421	tls_as_opt="-m31 --fatal-warnings"
2422	;;
2423  s390x-*-*)
2424    conftest_s='
2425	.section ".tdata","awT",@progbits
2426foo:	.long	25
2427	.text
2428	.quad	foo@TLSGD
2429	.quad	foo@TLSLDM
2430	.quad	foo@DTPOFF
2431	.quad	foo@NTPOFF
2432	.quad	foo@GOTNTPOFF
2433	lg	%r1,foo@GOTNTPOFF(%r12)
2434	larl	%r1,foo@INDNTPOFF
2435	brasl	%r14,__tls_get_offset@PLT:tls_gdcall:foo
2436	brasl	%r14,__tls_get_offset@PLT:tls_ldcall:foo'
2437	tls_first_major=2
2438	tls_first_minor=14
2439	tls_as_opt="-m64 -Aesame --fatal-warnings"
2440	;;
2441  sh-*-* | sh[34]-*-* | sh*l*-*-*)
2442    conftest_s='
2443	.section ".tdata","awT",@progbits
2444foo:	.long	25
2445	.text
2446	.long	foo@TLSGD
2447	.long	foo@TLSLDM
2448	.long	foo@DTPOFF
2449	.long	foo@GOTTPOFF
2450	.long	foo@TPOFF'
2451	tls_first_major=2
2452	tls_first_minor=13
2453	tls_as_opt=--fatal-warnings
2454	;;
2455  sparc*-*-*)
2456    case "$target" in
2457      sparc*-sun-solaris2.[56789]*)
2458	# TLS was introduced in the Solaris 9 4/04 release but
2459	# we do not enable it by default on Solaris 9 either.
2460	if test "x$enable_tls" = xyes ; then
2461	  on_solaris=yes
2462	else
2463	  enable_tls=no;
2464	fi
2465	;;
2466      sparc*-sun-solaris2.*)
2467	on_solaris=yes
2468	;;
2469      *)
2470	on_solaris=no
2471	;;
2472    esac
2473    if test x$on_solaris = xyes && test x$gas_flag = xno; then
2474      conftest_s='
2475	.section ".tdata",#alloc,#write,#tls
2476foo:	.long	25
2477	.text
2478	sethi	%tgd_hi22(foo), %o0
2479	add	%o0, %tgd_lo10(foo), %o1
2480	add	%l7, %o1, %o0, %tgd_add(foo)
2481	call	__tls_get_addr, %tgd_call(foo)
2482	sethi	%tldm_hi22(foo), %l1
2483	add	%l1, %tldm_lo10(foo), %l2
2484	add	%l7, %l2, %o0, %tldm_add(foo)
2485	call	__tls_get_addr, %tldm_call(foo)
2486	sethi	%tldo_hix22(foo), %l3
2487	xor	%l3, %tldo_lox10(foo), %l4
2488	add	%o0, %l4, %l5, %tldo_add(foo)
2489	sethi	%tie_hi22(foo), %o3
2490	add	%o3, %tie_lo10(foo), %o3
2491	ld	[%l7 + %o3], %o2, %tie_ld(foo)
2492	add	%g7, %o2, %o4, %tie_add(foo)
2493	sethi	%tle_hix22(foo), %l1
2494	xor	%l1, %tle_lox10(foo), %o5
2495	ld	[%g7 + %o5], %o1'
2496	tls_first_major=0
2497	tls_first_minor=0
2498    else
2499      conftest_s='
2500	.section ".tdata","awT",@progbits
2501foo:	.long	25
2502	.text
2503	sethi	%tgd_hi22(foo), %o0
2504	add	%o0, %tgd_lo10(foo), %o1
2505	add	%l7, %o1, %o0, %tgd_add(foo)
2506	call	__tls_get_addr, %tgd_call(foo)
2507	sethi	%tldm_hi22(foo), %l1
2508	add	%l1, %tldm_lo10(foo), %l2
2509	add	%l7, %l2, %o0, %tldm_add(foo)
2510	call	__tls_get_addr, %tldm_call(foo)
2511	sethi	%tldo_hix22(foo), %l3
2512	xor	%l3, %tldo_lox10(foo), %l4
2513	add	%o0, %l4, %l5, %tldo_add(foo)
2514	sethi	%tie_hi22(foo), %o3
2515	add	%o3, %tie_lo10(foo), %o3
2516	ld	[%l7 + %o3], %o2, %tie_ld(foo)
2517	add	%g7, %o2, %o4, %tie_add(foo)
2518	sethi	%tle_hix22(foo), %l1
2519	xor	%l1, %tle_lox10(foo), %o5
2520	ld	[%g7 + %o5], %o1'
2521	tls_first_major=2
2522	tls_first_minor=14
2523	tls_as_opt="-32 --fatal-warnings"
2524      fi
2525	;;
2526changequote([,])dnl
2527esac
2528set_have_as_tls=no
2529if test "x$enable_tls" = xno ; then
2530  : # TLS explicitly disabled.
2531elif test "x$enable_tls" = xyes ; then
2532  set_have_as_tls=yes # TLS explicitly enabled.
2533elif test -z "$tls_first_major"; then
2534  : # If we don't have a check, assume no support.
2535else
2536  gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2537  [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2538  [set_have_as_tls=yes])
2539fi
2540if test $set_have_as_tls = yes ; then
2541  AC_DEFINE(HAVE_AS_TLS, 1,
2542	    [Define if your assembler supports thread-local storage.])
2543fi
2544
2545# Target-specific assembler checks.
2546
2547AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2548gcc_cv_ld_static_dynamic=no
2549if test $in_tree_ld = yes ; then
2550  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2551    gcc_cv_ld_static_dynamic=yes
2552  fi
2553elif test x$gcc_cv_ld != x; then
2554	# Check if linker supports -Bstatic/-Bdynamic option
2555	if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2556	  && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2557		gcc_cv_ld_static_dynamic=yes
2558	fi
2559fi
2560if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2561	AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2562[Define if your linker supports -Bstatic/-Bdynamic option.])
2563fi
2564AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2565
2566if test x"$demangler_in_ld" = xyes; then
2567  AC_MSG_CHECKING(linker --demangle support)
2568  gcc_cv_ld_demangle=no
2569  if test $in_tree_ld = yes; then
2570    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 \
2571      gcc_cv_ld_demangle=yes
2572    fi
2573  elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2574    # Check if the GNU linker supports --demangle option
2575    if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2576      gcc_cv_ld_demangle=yes
2577    fi
2578  fi
2579  if test x"$gcc_cv_ld_demangle" = xyes; then
2580    AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2581[Define if your linker supports --demangle option.])
2582  fi
2583  AC_MSG_RESULT($gcc_cv_ld_demangle)
2584fi
2585
2586case "$target" in
2587  # All TARGET_ABI_OSF targets.
2588  alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2589    gcc_GAS_CHECK_FEATURE([explicit relocation support],
2590	gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2591[	.set nomacro
2592	.text
2593	extbl	$3, $2, $3	!lituse_bytoff!1
2594	ldq	$2, a($29)	!literal!1
2595	ldq	$4, b($29)	!literal!2
2596	ldq_u	$3, 0($2)	!lituse_base!1
2597	ldq	$27, f($29)	!literal!5
2598	jsr	$26, ($27), f	!lituse_jsr!5
2599	ldah	$29, 0($26)	!gpdisp!3
2600	lda	$0, c($29)	!gprel
2601	ldah	$1, d($29)	!gprelhigh
2602	lda	$1, d($1)	!gprellow
2603	lda	$29, 0($29)	!gpdisp!3],,
2604    [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2605  [Define if your assembler supports explicit relocations.])])
2606    gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2607	gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2608[	.set nomacro
2609	.text
2610	ldq	$27, a($29)	!literal!1
2611	jsr	$26, ($27), a	!lituse_jsrdirect!1],,
2612    [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2613  [Define if your assembler supports the lituse_jsrdirect relocation.])])
2614    ;;
2615
2616  cris-*-*)
2617    gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2618      gcc_cv_as_cris_no_mul_bug,[2,15,91],
2619      [-no-mul-bug-abort], [.text],,
2620      [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2621		[Define if your assembler supports the -no-mul-bug-abort option.])])
2622    ;;
2623
2624  sparc*-*-*)
2625    gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2626      [.register %g2, #scratch],,
2627      [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2628		[Define if your assembler supports .register.])])
2629
2630    gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2631      [-relax], [.text],,
2632      [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2633		[Define if your assembler supports -relax option.])])
2634
2635    gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2636      gcc_cv_as_sparc_ua_pcrel,,
2637      [-K PIC],
2638[.text
2639foo:
2640	nop
2641.data
2642.align 4
2643.byte 0
2644.uaword %r_disp32(foo)],
2645      [if test x$gcc_cv_ld != x \
2646       && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2647	 gcc_cv_as_sparc_ua_pcrel=yes
2648       fi
2649       rm -f conftest],
2650      [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2651		[Define if your assembler and linker support unaligned PC relative relocs.])
2652
2653      gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2654	gcc_cv_as_sparc_ua_pcrel_hidden,,
2655	[-K PIC],
2656[.data
2657.align 4
2658.byte 0x31
2659.uaword %r_disp32(foo)
2660.byte 0x32, 0x33, 0x34
2661.global foo
2662.hidden foo
2663foo:
2664.skip 4],
2665	[if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2666	 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2667	 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2668	    | grep ' 31000000 07323334' > /dev/null 2>&1; then
2669	    if $gcc_cv_objdump -R conftest 2> /dev/null \
2670	       | grep 'DISP32' > /dev/null 2>&1; then
2671		:
2672	    else
2673		gcc_cv_as_sparc_ua_pcrel_hidden=yes
2674	    fi
2675	 fi
2676	 rm -f conftest],
2677	 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2678		   [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2679    ]) # unaligned pcrel relocs
2680
2681    gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2682      gcc_cv_as_sparc_offsetable_lo10,,
2683      [-xarch=v9],
2684[.text
2685	or %g1, %lo(ab) + 12, %g1
2686	or %g1, %lo(ab + 12), %g1],
2687      [if test x$gcc_cv_objdump != x \
2688       && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2689          | grep ' 82106000 82106000' > /dev/null 2>&1; then
2690	 gcc_cv_as_sparc_offsetable_lo10=yes
2691       fi],
2692       [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2693	         [Define if your assembler supports offsetable %lo().])])
2694    ;;
2695
2696changequote(,)dnl
2697  i[34567]86-*-* | x86_64-*-*)
2698changequote([,])dnl
2699    case $target_os in
2700      cygwin* | pe | mingw32*)
2701	# Used for DWARF 2 in PE
2702	gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2703	  gcc_cv_as_ix86_pe_secrel32,
2704	  [2,15,91],,
2705[.text
2706foo:	nop
2707.data
2708	.secrel32 foo],
2709	  [if test x$gcc_cv_ld != x \
2710	   && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2711	     gcc_cv_as_ix86_pe_secrel32=yes
2712	   fi
2713	   rm -f conftest],
2714	  [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2715	    [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2716	;;
2717    esac
2718
2719    gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2720       gcc_cv_as_ix86_filds_fists,
2721      [2,9,0],, [filds mem; fists mem],,
2722      [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2723        [Define if your assembler uses the new HImode fild and fist notation.])])
2724
2725    gcc_GAS_CHECK_FEATURE([cmov syntax],
2726      gcc_cv_as_ix86_cmov_sun_syntax,,,
2727      [cmovl.l %edx, %eax],,
2728      [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2729        [Define if your assembler supports the Sun syntax for cmov.])])
2730
2731    # This one is used unconditionally by i386.[ch]; it is to be defined
2732    # to 1 if the feature is present, 0 otherwise.
2733    gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2734        gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2735[	.text
2736.L0:
2737	nop
2738	.data
2739	.long .L0@GOTOFF])
2740    AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2741      [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2742      [Define true if the assembler supports '.long foo@GOTOFF'.])
2743    ;;
2744
2745  ia64*-*-*)
2746    gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2747	gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2748[	.text
2749	addl r15 = @ltoffx(x#), gp
2750	;;
2751	ld8.mov r16 = [[r15]], x#],,
2752    [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2753	  [Define if your assembler supports ltoffx and ldxmov relocations.])])
2754
2755    ;;
2756
2757  powerpc*-*-*)
2758    case $target in
2759      *-*-aix*) conftest_s='	.machine "pwr5"
2760	.csect .text[[PR]]
2761	mfcr 3,128';;
2762      *-*-darwin*)
2763	gcc_GAS_CHECK_FEATURE([.machine directive support],
2764	  gcc_cv_as_machine_directive,,,
2765	  [	.machine ppc7400])
2766	if test x$gcc_cv_as_machine_directive != xyes; then
2767	  echo "*** This target requires an assembler supporting \".machine\"" >&2
2768	  echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2769	  test x$build = x$target && exit 1
2770	fi
2771	conftest_s='	.text
2772	mfcr r3,128';;
2773      *) conftest_s='	.machine power4
2774	.text
2775	mfcr 3,128';;
2776    esac
2777
2778    gcc_GAS_CHECK_FEATURE([mfcr field support],
2779      gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2780      [$conftest_s],,
2781      [AC_DEFINE(HAVE_AS_MFCRF, 1,
2782	  [Define if your assembler supports mfcr field.])])
2783
2784    case $target in
2785      *-*-aix*) conftest_s='	.machine "pwr5"
2786	.csect .text[[PR]]
2787	popcntb 3,3';;
2788      *) conftest_s='	.machine power5
2789	.text
2790	popcntb 3,3';;
2791    esac
2792
2793    gcc_GAS_CHECK_FEATURE([popcntb support],
2794      gcc_cv_as_powerpc_popcntb, [2,17,0],,
2795      [$conftest_s],,
2796      [AC_DEFINE(HAVE_AS_POPCNTB, 1,
2797	  [Define if your assembler supports popcntb field.])])
2798
2799    case $target in
2800      *-*-aix*) conftest_s='	.machine "pwr5x"
2801	.csect .text[[PR]]
2802	frin 1,1';;
2803      *) conftest_s='	.machine power5
2804	.text
2805	frin 1,1';;
2806    esac
2807
2808    gcc_GAS_CHECK_FEATURE([fp round support],
2809      gcc_cv_as_powerpc_fprnd, [2,17,0],,
2810      [$conftest_s],,
2811      [AC_DEFINE(HAVE_AS_FPRND, 1,
2812	  [Define if your assembler supports fprnd.])])
2813
2814    case $target in
2815      *-*-aix*) conftest_s='	.csect .text[[PR]]
2816LCF..0:
2817	addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
2818      *-*-darwin*)
2819	conftest_s='	.text
2820LCF0:
2821	addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
2822      *) conftest_s='	.text
2823.LCF0:
2824	addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
2825    esac
2826
2827    gcc_GAS_CHECK_FEATURE([rel16 relocs],
2828      gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
2829      [$conftest_s],,
2830      [AC_DEFINE(HAVE_AS_REL16, 1,
2831	  [Define if your assembler supports R_PPC_REL16 relocs.])])
2832    ;;
2833
2834  mips*-*-*)
2835    gcc_GAS_CHECK_FEATURE([explicit relocation support],
2836      gcc_cv_as_mips_explicit_relocs, [2,14,0],,
2837[	lw $4,%gp_rel(foo)($4)],,
2838      [if test x$target_cpu_default = x
2839       then target_cpu_default=MASK_EXPLICIT_RELOCS
2840       else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
2841       fi])
2842    ;;
2843esac
2844
2845# Mips and HP-UX need the GNU assembler.
2846# Linux on IA64 might be able to use the Intel assembler.
2847
2848case "$target" in
2849  mips*-*-* | *-*-hpux* )
2850    if test x$gas_flag = xyes \
2851       || test x"$host" != x"$build" \
2852       || test ! -x "$gcc_cv_as" \
2853       || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
2854      :
2855    else
2856      echo "*** This configuration requires the GNU assembler" >&2
2857      exit 1
2858    fi
2859    ;;
2860esac
2861
2862# ??? Not all targets support dwarf2 debug_line, even within a version
2863# of gas.  Moreover, we need to emit a valid instruction to trigger any
2864# info to the output file.  So, as supported targets are added to gas 2.11,
2865# add some instruction here to (also) show we expect this might work.
2866# ??? Once 2.11 is released, probably need to add first known working
2867# version to the per-target configury.
2868case "$target" in
2869  i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2870  | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
2871  | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-*)
2872    insn="nop"
2873    ;;
2874  ia64*-*-* | s390*-*-*)
2875    insn="nop 0"
2876    ;;
2877  mmix-*-*)
2878    insn="swym 0"
2879    ;;
2880esac
2881if test x"$insn" != x; then
2882 conftest_s="\
2883	.file 1 \"conftest.s\"
2884	.loc 1 3 0
2885	$insn"
2886 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
2887  gcc_cv_as_dwarf2_debug_line,
2888  [elf,2,11,0],, [$conftest_s],
2889  [if test x$gcc_cv_objdump != x \
2890   && $gcc_cv_objdump -h conftest.o 2> /dev/null \
2891      | grep debug_line > /dev/null 2>&1; then
2892     gcc_cv_as_dwarf2_debug_line=yes
2893   fi])
2894
2895# The .debug_line file table must be in the exact order that
2896# we specified the files, since these indices are also used
2897# by DW_AT_decl_file.  Approximate this test by testing if
2898# the assembler bitches if the same index is assigned twice.
2899 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
2900  gcc_cv_as_dwarf2_file_buggy,,,
2901[	.file 1 "foo.s"
2902	.file 1 "bar.s"])
2903
2904 if test $gcc_cv_as_dwarf2_debug_line = yes \
2905 && test $gcc_cv_as_dwarf2_file_buggy = no; then
2906	AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
2907  [Define if your assembler supports dwarf2 .file/.loc directives,
2908   and preserves file table indices exactly as given.])
2909 fi
2910
2911 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
2912  gcc_cv_as_gdwarf2_flag,
2913  [elf,2,11,0], [--gdwarf2], [$insn],,
2914  [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2915[Define if your assembler supports the --gdwarf2 option.])])
2916
2917 gcc_GAS_CHECK_FEATURE([--gstabs option],
2918  gcc_cv_as_gstabs_flag,
2919  [elf,2,11,0], [--gstabs], [$insn],
2920  [# The native Solaris 9/Intel assembler doesn't understand --gstabs
2921   # and warns about it, but still exits successfully.  So check for
2922   # this.
2923   if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
2924   then :
2925   else gcc_cv_as_gstabs_flag=yes
2926   fi],
2927  [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2928[Define if your assembler supports the --gstabs option.])])
2929fi
2930
2931AC_MSG_CHECKING(linker read-only and read-write section mixing)
2932gcc_cv_ld_ro_rw_mix=unknown
2933if test $in_tree_ld = yes ; then
2934  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 \
2935     && test $in_tree_ld_is_elf = yes; then
2936    gcc_cv_ld_ro_rw_mix=read-write
2937  fi
2938elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2939  echo '.section myfoosect, "a"' > conftest1.s
2940  echo '.section myfoosect, "aw"' > conftest2.s
2941  echo '.byte 1' >> conftest2.s
2942  echo '.section myfoosect, "a"' > conftest3.s
2943  echo '.byte 0' >> conftest3.s
2944  if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2945     && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2946     && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2947     && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2948	conftest2.o conftest3.o > /dev/null 2>&1; then
2949    gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2950			 | sed -e '/myfoosect/!d' -e N`
2951    if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2952      if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2953	gcc_cv_ld_ro_rw_mix=read-only
2954      else
2955	gcc_cv_ld_ro_rw_mix=read-write
2956      fi
2957    fi
2958  fi
2959changequote(,)dnl
2960  rm -f conftest.* conftest[123].*
2961changequote([,])dnl
2962fi
2963if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2964	AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2965  [Define if your linker links a mix of read-only
2966   and read-write sections into a read-write section.])
2967fi
2968AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2969
2970AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2971gcc_cv_ld_eh_frame_hdr=no
2972if test $in_tree_ld = yes ; then
2973  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 \
2974     && test $in_tree_ld_is_elf = yes; then
2975    gcc_cv_ld_eh_frame_hdr=yes
2976  fi
2977elif test x$gcc_cv_ld != x; then
2978	# Check if linker supports --eh-frame-hdr option
2979	if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2980		gcc_cv_ld_eh_frame_hdr=yes
2981	fi
2982fi
2983GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
2984if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2985	AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2986[Define if your linker supports --eh-frame-hdr option.])
2987fi
2988AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2989
2990AC_MSG_CHECKING(linker position independent executable support)
2991gcc_cv_ld_pie=no
2992if test $in_tree_ld = yes ; then
2993  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 \
2994     && test $in_tree_ld_is_elf = yes; then
2995    gcc_cv_ld_pie=yes
2996  fi
2997elif test x$gcc_cv_ld != x; then
2998	# Check if linker supports -pie option
2999	if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3000		gcc_cv_ld_pie=yes
3001	fi
3002fi
3003if test x"$gcc_cv_ld_pie" = xyes; then
3004	AC_DEFINE(HAVE_LD_PIE, 1,
3005[Define if your linker supports -pie option.])
3006fi
3007AC_MSG_RESULT($gcc_cv_ld_pie)
3008
3009# --------
3010# UNSORTED
3011# --------
3012
3013AC_CACHE_CHECK(linker --as-needed support,
3014gcc_cv_ld_as_needed,
3015[gcc_cv_ld_as_needed=no
3016if test $in_tree_ld = yes ; then
3017  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 \
3018     && test $in_tree_ld_is_elf = yes; then
3019    gcc_cv_ld_as_needed=yes
3020  fi
3021elif test x$gcc_cv_ld != x; then
3022	# Check if linker supports --as-needed and --no-as-needed options
3023	if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3024		gcc_cv_ld_as_needed=yes
3025	fi
3026fi
3027])
3028if test x"$gcc_cv_ld_as_needed" = xyes; then
3029	AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3030[Define if your linker supports --as-needed and --no-as-needed options.])
3031fi
3032
3033case "$target:$tm_file" in
3034  powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
3035    AC_CACHE_CHECK(linker support for omitting dot symbols,
3036    gcc_cv_ld_no_dot_syms,
3037    [gcc_cv_ld_no_dot_syms=no
3038    if test $in_tree_ld = yes ; then
3039      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
3040        gcc_cv_ld_no_dot_syms=yes
3041      fi
3042    elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3043      cat > conftest1.s <<EOF
3044	.text
3045	bl .foo
3046EOF
3047      cat > conftest2.s <<EOF
3048	.section ".opd","aw"
3049	.align 3
3050	.globl foo
3051	.type foo,@function
3052foo:
3053	.quad .LEfoo,.TOC.@tocbase,0
3054	.text
3055.LEfoo:
3056	blr
3057	.size foo,.-.LEfoo
3058EOF
3059      if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3060         && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3061         && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3062        gcc_cv_ld_no_dot_syms=yes
3063      fi
3064      rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3065    fi
3066    ])
3067    if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3068      AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3069    [Define if your PowerPC64 linker only needs function descriptor syms.])
3070    fi
3071    ;;
3072esac
3073
3074AC_CACHE_CHECK(linker --sysroot support,
3075  gcc_cv_ld_sysroot,
3076  [gcc_cv_ld_sysroot=no
3077  if test $in_tree_ld = yes ; then
3078      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
3079        gcc_cv_ld_sysroot=yes
3080      fi
3081  elif test x$gcc_cv_ld != x; then 
3082    if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3083      gcc_cv_ld_sysroot=yes
3084    fi
3085  fi])
3086if test x"$gcc_cv_ld_sysroot" = xyes; then
3087  AC_DEFINE(HAVE_LD_SYSROOT, 1,
3088  [Define if your linker supports --sysroot.])
3089fi	  
3090
3091if test x$with_sysroot = x && test x$host = x$target \
3092   && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
3093  AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3094[Define to PREFIX/include if cpp should also search that directory.])
3095fi
3096
3097# Test for stack protector support in target C library.
3098AC_CACHE_CHECK(__stack_chk_fail in target C library,
3099  gcc_cv_libc_provides_ssp,
3100  [case "$target" in
3101    *-*-linux*)
3102      gcc_cv_libc_provides_ssp=no
3103      if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3104	if test "x$with_sysroot" = x; then
3105	  glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3106	elif test "x$with_sysroot" = xyes; then
3107	  glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3108	else
3109	  glibc_header_dir="${with_sysroot}/usr/include"
3110	fi
3111      else
3112	glibc_header_dir=/usr/include
3113      fi
3114      # glibc 2.4 and later provides __stack_chk_fail and
3115      # either __stack_chk_guard, or TLS access to stack guard canary.
3116      if test -f $glibc_header_dir/features.h \
3117	 && $EGREP '^@<:@ 	@:>@*#[ 	]*define[ 	]+__GNU_LIBRARY__[ 	]+([1-9][0-9]|[6-9])' \
3118	    $glibc_header_dir/features.h > /dev/null; then
3119	if $EGREP '^@<:@ 	@:>@*#[ 	]*define[ 	]+__GLIBC__[ 	]+([1-9][0-9]|[3-9])' \
3120	   $glibc_header_dir/features.h > /dev/null; then
3121	  gcc_cv_libc_provides_ssp=yes
3122	elif $EGREP '^@<:@ 	@:>@*#[ 	]*define[ 	]+__GLIBC__[ 	]+2' \
3123	     $glibc_header_dir/features.h > /dev/null \
3124	     && $EGREP '^@<:@ 	@:>@*#[ 	]*define[ 	]+__GLIBC_MINOR__[ 	]+([1-9][0-9]|[4-9])' \
3125	     $glibc_header_dir/features.h > /dev/null; then
3126	  gcc_cv_libc_provides_ssp=yes
3127	fi
3128      fi ;;
3129    *-*-netbsd*)
3130      AC_CHECK_FUNCS(__stack_chk_guard,[gcc_cv_libc_provides_ssp=yes],
3131        [gcc_cv_libc_provides_ssp=no]) ;;
3132    *) gcc_cv_libc_provides_ssp=no ;;
3133  esac])
3134if test x$gcc_cv_libc_provides_ssp = xyes; then
3135  AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3136	    [Define if your target C library provides stack protector support])
3137fi
3138
3139# Find out what GC implementation we want, or may, use.
3140AC_ARG_WITH(gc,
3141[  --with-gc={page,zone}   choose the garbage collection mechanism to use
3142                          with the compiler],
3143[case "$withval" in
3144  page)
3145    GGC=ggc-$withval
3146    ;;
3147  zone)
3148    GGC=ggc-$withval
3149    AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3150    ;;
3151  *)
3152    AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3153    ;;
3154esac],
3155[GGC=ggc-page])
3156AC_SUBST(GGC)
3157echo "Using $GGC for garbage collection."
3158
3159# Use the system's zlib library.
3160zlibdir=-L../zlib
3161zlibinc="-I\$(srcdir)/../zlib"
3162AC_ARG_WITH(system-zlib,
3163[  --with-system-zlib      use installed libz],
3164zlibdir=
3165zlibinc=
3166)
3167AC_SUBST(zlibdir)
3168AC_SUBST(zlibinc)
3169
3170dnl Very limited version of automake's enable-maintainer-mode
3171
3172AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3173  dnl maintainer-mode is disabled by default
3174  AC_ARG_ENABLE(maintainer-mode,
3175[  --enable-maintainer-mode
3176                          enable make rules and dependencies not useful
3177                          (and sometimes confusing) to the casual installer],
3178      maintainer_mode=$enableval,
3179      maintainer_mode=no)
3180
3181AC_MSG_RESULT($maintainer_mode)
3182
3183if test "$maintainer_mode" = "yes"; then
3184  MAINT=''
3185else
3186  MAINT='#'
3187fi
3188AC_SUBST(MAINT)dnl
3189
3190# --------------
3191# Language hooks
3192# --------------
3193
3194# Make empty files to contain the specs and options for each language.
3195# Then add #include lines to for a compiler that has specs and/or options.
3196
3197lang_opt_files=
3198lang_specs_files=
3199lang_tree_files=
3200for subdir in . $subdirs
3201do
3202	if test -f $srcdir/$subdir/lang.opt; then
3203	    lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"
3204	fi
3205	if test -f $srcdir/$subdir/lang-specs.h; then
3206	    lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
3207	fi
3208	if test -f $srcdir/$subdir/$subdir-tree.def; then
3209	    lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3210	fi
3211done
3212
3213# These (without "all_") are set in each config-lang.in.
3214# `language' must be a single word so is spelled singularly.
3215all_languages=
3216all_boot_languages=
3217all_compilers=
3218all_stagestuff=
3219all_outputs='Makefile gccbug mklibgcc libada-mk'
3220# List of language makefile fragments.
3221all_lang_makefrags=
3222# List of language subdirectory makefiles.  Deprecated.
3223all_lang_makefiles=
3224# Files for gengtype
3225all_gtfiles="$target_gtfiles"
3226# Files for gengtype with language
3227all_gtfiles_files_langs=
3228all_gtfiles_files_files=
3229
3230# Add the language fragments.
3231# Languages are added via two mechanisms.  Some information must be
3232# recorded in makefile variables, these are defined in config-lang.in.
3233# We accumulate them and plug them into the main Makefile.
3234# The other mechanism is a set of hooks for each of the main targets
3235# like `clean', `install', etc.
3236
3237language_hooks="Make-hooks"
3238
3239for s in $subdirs
3240do
3241		language=
3242		boot_language=
3243		compilers=
3244		stagestuff=
3245		outputs=
3246		gtfiles=
3247		. ${srcdir}/$s/config-lang.in
3248		if test "x$language" = x
3249		then
3250			echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
3251			exit 1
3252		fi
3253		all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$s/Make-lang.in"
3254		if test -f ${srcdir}/$s/Makefile.in
3255		then all_lang_makefiles="$s/Makefile"
3256		fi
3257		all_languages="$all_languages $language"
3258		if test "x$boot_language" = xyes
3259		then
3260			all_boot_languages="$all_boot_languages $language"
3261		fi
3262		all_compilers="$all_compilers $compilers"
3263		all_stagestuff="$all_stagestuff $stagestuff"
3264		all_outputs="$all_outputs $outputs"
3265		all_gtfiles="$all_gtfiles $gtfiles"
3266                for f in $gtfiles
3267                do
3268                         all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
3269                         all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
3270                done
3271done
3272
3273# Pick up gtfiles for c
3274gtfiles=
3275s="c"
3276. ${srcdir}/c-config-lang.in
3277all_gtfiles="$all_gtfiles $gtfiles"
3278for f in $gtfiles
3279do
3280        all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
3281        all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
3282done
3283
3284check_languages=
3285for language in $all_languages
3286do
3287		check_languages="$check_languages check-$language"
3288done
3289
3290# We link each language in with a set of hooks, reached indirectly via
3291# lang.${target}.
3292
3293rm -f Make-hooks
3294touch Make-hooks
3295target_list="all.build all.cross start.encap rest.encap tags \
3296	install-normal install-common install-man \
3297	uninstall info man srcextra srcman srcinfo \
3298	mostlyclean clean distclean maintainer-clean \
3299	stage1 stage2 stage3 stage4 stageprofile stagefeedback"
3300for t in $target_list
3301do
3302	x=
3303	for lang in $all_languages
3304	do
3305			x="$x $lang.$t"
3306	done
3307	echo "lang.$t: $x" >> Make-hooks
3308done
3309
3310# --------
3311# UNSORTED
3312# --------
3313
3314# Create .gdbinit.
3315
3316echo "dir ." > .gdbinit
3317echo "dir ${srcdir}" >> .gdbinit
3318if test x$gdb_needs_out_file_path = xyes
3319then
3320	echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3321fi
3322if test "x$subdirs" != x; then
3323	for s in $subdirs
3324	do
3325		echo "dir ${srcdir}/$s" >> .gdbinit
3326	done
3327fi
3328echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3329
3330# If $(exec_prefix) exists and is not the same as $(prefix), then compute an
3331# absolute path for gcc_tooldir based on inserting the number of up-directory
3332# movements required to get from $(exec_prefix) to $(prefix) into the basic
3333# $(libsubdir)/@(unlibsubdir) based path.
3334# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
3335# make and thus we'd get different behavior depending on where we built the
3336# sources.
3337if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
3338    gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_noncanonical)'
3339else
3340changequote(<<, >>)dnl
3341# An explanation of the sed strings:
3342#  -e 's|^\$(prefix)||'   matches and eliminates 'prefix' from 'exec_prefix'
3343#  -e 's|/$||'            match a trailing forward slash and eliminates it
3344#  -e 's|^[^/]|/|'        forces the string to start with a forward slash (*)
3345#  -e 's|/[^/]*|../|g'    replaces each occurrence of /<directory> with ../
3346#
3347# (*) Note this pattern overwrites the first character of the string
3348# with a forward slash if one is not already present.  This is not a
3349# problem because the exact names of the sub-directories concerned is
3350# unimportant, just the number of them matters.
3351#
3352# The practical upshot of these patterns is like this:
3353#
3354#  prefix     exec_prefix        result
3355#  ------     -----------        ------
3356#   /foo        /foo/bar          ../
3357#   /foo/       /foo/bar          ../
3358#   /foo        /foo/bar/         ../
3359#   /foo/       /foo/bar/         ../
3360#   /foo        /foo/bar/ugg      ../../
3361#
3362    dollar='$$'
3363    gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_noncanonical)"
3364changequote([, ])dnl
3365fi
3366AC_SUBST(gcc_tooldir)
3367AC_SUBST(dollar)
3368
3369# Find a directory in which to install a shared libgcc.
3370
3371AC_ARG_ENABLE(version-specific-runtime-libs,
3372[  --enable-version-specific-runtime-libs
3373                          specify that runtime libraries should be
3374                          installed in a compiler-specific directory])
3375
3376AC_ARG_WITH(slibdir,
3377[  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
3378slibdir="$with_slibdir",
3379if test "${enable_version_specific_runtime_libs+set}" = set; then
3380  slibdir='$(libsubdir)'
3381elif test "$host" != "$target"; then
3382  slibdir='$(build_tooldir)/lib'
3383else
3384  slibdir='$(libdir)'
3385fi)
3386AC_SUBST(slibdir)
3387
3388objdir=`${PWDCMD-pwd}`
3389AC_SUBST(objdir)
3390
3391# Substitute configuration variables
3392AC_SUBST(subdirs)
3393AC_SUBST(srcdir)
3394AC_SUBST(all_boot_languages)
3395AC_SUBST(all_compilers)
3396AC_SUBST(all_gtfiles)
3397AC_SUBST(all_gtfiles_files_langs)
3398AC_SUBST(all_gtfiles_files_files)
3399AC_SUBST(all_lang_makefrags)
3400AC_SUBST(all_lang_makefiles)
3401AC_SUBST(all_languages)
3402AC_SUBST(all_stagestuff)
3403AC_SUBST(build_exeext)
3404AC_SUBST(build_install_headers_dir)
3405AC_SUBST(build_xm_file_list)
3406AC_SUBST(build_xm_include_list)
3407AC_SUBST(build_xm_defines)
3408AC_SUBST(check_languages)
3409AC_SUBST(cc_set_by_configure)
3410AC_SUBST(quoted_cc_set_by_configure)
3411AC_SUBST(cpp_install_dir)
3412AC_SUBST(xmake_file)
3413AC_SUBST(tmake_file)
3414AC_SUBST(extra_gcc_objs)
3415AC_SUBST(extra_headers_list)
3416AC_SUBST(extra_objs)
3417AC_SUBST(extra_parts)
3418AC_SUBST(extra_passes)
3419AC_SUBST(extra_programs)
3420AC_SUBST(float_h_file)
3421AC_SUBST(gcc_config_arguments)
3422AC_SUBST(gcc_gxx_include_dir)
3423AC_SUBST(libstdcxx_incdir)
3424AC_SUBST(host_exeext)
3425AC_SUBST(host_xm_file_list)
3426AC_SUBST(host_xm_include_list)
3427AC_SUBST(host_xm_defines)
3428AC_SUBST(out_host_hook_obj)
3429AC_SUBST(install)
3430AC_SUBST(lang_opt_files)
3431AC_SUBST(lang_specs_files)
3432AC_SUBST(lang_tree_files)
3433AC_SUBST(local_prefix)
3434AC_SUBST(md_file)
3435AC_SUBST(objc_boehm_gc)
3436AC_SUBST(out_file)
3437AC_SUBST(out_object_file)
3438AC_SUBST(stage_prefix_set_by_configure)
3439AC_SUBST(quoted_stage_prefix_set_by_configure)
3440AC_SUBST(thread_file)
3441AC_SUBST(tm_file_list)
3442AC_SUBST(tm_include_list)
3443AC_SUBST(tm_defines)
3444AC_SUBST(tm_p_file_list)
3445AC_SUBST(tm_p_include_list)
3446AC_SUBST(xm_file_list)
3447AC_SUBST(xm_include_list)
3448AC_SUBST(xm_defines)
3449AC_SUBST(c_target_objs)
3450AC_SUBST(cxx_target_objs)
3451AC_SUBST(target_cpu_default)
3452
3453AC_SUBST_FILE(language_hooks)
3454
3455# Echo link setup.
3456if test x${build} = x${host} ; then
3457  if test x${host} = x${target} ; then
3458    echo "Links are now set up to build a native compiler for ${target}." 1>&2
3459  else
3460    echo "Links are now set up to build a cross-compiler" 1>&2
3461    echo " from ${host} to ${target}." 1>&2
3462  fi
3463else
3464  if test x${host} = x${target} ; then
3465    echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3466    echo " for ${target}." 1>&2
3467  else
3468    echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3469    echo " from ${host} to ${target}." 1>&2
3470  fi
3471fi
3472
3473AC_ARG_VAR(GMPLIBS,[How to link GMP])
3474AC_ARG_VAR(GMPINC,[How to find GMP include files])
3475
3476# Configure the subdirectories
3477# AC_CONFIG_SUBDIRS($subdirs)
3478
3479# Create the Makefile
3480# and configure language subdirectories
3481AC_CONFIG_FILES($all_outputs)
3482
3483AC_CONFIG_COMMANDS([default],
3484[
3485case ${CONFIG_HEADERS} in
3486  *auto-host.h:config.in*)
3487  echo > cstamp-h ;;
3488esac
3489# Make sure all the subdirs exist.
3490for d in $subdirs doc build
3491do
3492    test -d $d || mkdir $d
3493done
3494# If the host supports symlinks, point stage[1234] at ../stage[1234] so
3495# bootstrapping and the installation procedure can still use
3496# CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
3497# FLAGS_TO_PASS has been modified to solve the problem there.
3498# This is virtually a duplicate of what happens in configure.lang; we do
3499# an extra check to make sure this only happens if ln -s can be used.
3500case "$LN_S" in
3501  *-s*)
3502    for d in ${subdirs} ; do
3503	STARTDIR=`${PWDCMD-pwd}`
3504	cd $d
3505	for t in stage1 stage2 stage3 stage4 stageprofile stagefeedback include
3506	do
3507		rm -f $t
3508		$LN_S ../$t $t 2>/dev/null
3509	done
3510	cd $STARTDIR
3511    done
3512  ;;
3513esac
3514], 
3515[subdirs='$subdirs'])
3516AC_OUTPUT
3517