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