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