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