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