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