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