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