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