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