]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/configure.ac
Mark transaction begin as returns-twice.
[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 4# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
a4da6485 5# 2007, 2008, 2009, 2010, 2011 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
df58e648 27AC_PREREQ(2.64)
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,
b88ecf55
AS
108[AS_HELP_STRING([--with-local-prefix=DIR],
109 [specifies directory to put local include])],
34a86c2b
NN
110[case "${withval}" in
111yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112no) ;;
113*) local_prefix=$with_local_prefix ;;
114esac])
115
116# Default local prefix if it is empty
117if test x$local_prefix = x; then
118 local_prefix=/usr/local
119fi
120
121# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
122# passed in by the toplevel make and thus we'd get different behavior
123# depending on where we built the sources.
124gcc_gxx_include_dir=
125# Specify the g++ header file directory
126AC_ARG_WITH(gxx-include-dir,
b88ecf55
AS
127[AS_HELP_STRING([--with-gxx-include-dir=DIR],
128 [specifies directory to put g++ header files])],
34a86c2b
NN
129[case "${withval}" in
130yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131no) ;;
132*) gcc_gxx_include_dir=$with_gxx_include_dir ;;
133esac])
134
0f57bf40 135# This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
34a86c2b
NN
136if test x${gcc_gxx_include_dir} = x; then
137 if test x${enable_version_specific_runtime_libs} = xyes; then
138 gcc_gxx_include_dir='${libsubdir}/include/c++'
139 else
0f57bf40
MM
140 libstdcxx_incdir='include/c++/$(version)'
141 if test x$host != x$target; then
142 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143 fi
15c723f3 144 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
34a86c2b
NN
145 fi
146fi
147
148AC_ARG_WITH(cpp_install_dir,
b88ecf55
AS
149[AC_HELP_STRING([--with-cpp-install-dir=DIR],
150 [install the user visible C preprocessor in DIR
151 (relative to PREFIX) as well as PREFIX/bin])],
34a86c2b
NN
152[if test x$withval = xyes; then
153 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
154elif test x$withval != xno; then
155 cpp_install_dir=$withval
156fi])
157
51b9ff45
KC
158# We would like to our source tree to be readonly. However when releases or
159# pre-releases are generated, the flex/bison generated files as well as the
160# various formats of manuals need to be included along with the rest of the
161# sources. Therefore we have --enable-generated-files-in-srcdir to do
162# just that.
163
03787dfd
KC
164AC_MSG_CHECKING([whether to place generated files in the source directory])
165 dnl generated-files-in-srcdir is disabled by default
166 AC_ARG_ENABLE(generated-files-in-srcdir,
b88ecf55
AS
167 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
168 [put copies of generated files in source dir
169 intended for creating source tarballs for users
170 without texinfo bison or flex])],
03787dfd
KC
171 generated_files_in_srcdir=$enableval,
172 generated_files_in_srcdir=no)
173
174AC_MSG_RESULT($generated_files_in_srcdir)
175
176if test "$generated_files_in_srcdir" = "yes"; then
177 GENINSRC=''
03787dfd
KC
178else
179 GENINSRC='#'
03787dfd
KC
180fi
181AC_SUBST(GENINSRC)
51b9ff45 182
34a86c2b
NN
183# -------------------
184# Find default linker
185# -------------------
46f18e7b
RK
186
187# With GNU ld
188AC_ARG_WITH(gnu-ld,
b88ecf55 189[AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
df6faf79
JW
190gnu_ld_flag="$with_gnu_ld",
191gnu_ld_flag=no)
46f18e7b 192
ab339d62
AO
193# With pre-defined ld
194AC_ARG_WITH(ld,
b88ecf55 195[AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
3ccc3a56
AO
196DEFAULT_LINKER="$with_ld")
197if test x"${DEFAULT_LINKER+set}" = x"set"; then
198 if test ! -x "$DEFAULT_LINKER"; then
99c012a8 199 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
e154a394 200 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
201 gnu_ld_flag=yes
202 fi
119d24d1
KG
203 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
204 [Define to enable the use of a default linker.])
ab339d62
AO
205fi
206
2091ff66
NF
207gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
208AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
209
34a86c2b
NN
210AC_MSG_CHECKING([whether a default linker was specified])
211if test x"${DEFAULT_LINKER+set}" = x"set"; then
212 if test x"$gnu_ld_flag" = x"no"; then
213 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
214 else
215 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
216 fi
217else
218 AC_MSG_RESULT(no)
219fi
220
d594623a
L
221# With demangler in GNU ld
222AC_ARG_WITH(demangler-in-ld,
b88ecf55 223[AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
d594623a 224demangler_in_ld="$with_demangler_in_ld",
df45fc34 225demangler_in_ld=yes)
d594623a 226
34a86c2b
NN
227# ----------------------
228# Find default assembler
229# ----------------------
230
46f18e7b
RK
231# With GNU as
232AC_ARG_WITH(gnu-as,
b88ecf55 233[AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
df6faf79
JW
234gas_flag="$with_gnu_as",
235gas_flag=no)
46f18e7b 236
ab339d62 237AC_ARG_WITH(as,
b88ecf55 238[AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
3ccc3a56
AO
239DEFAULT_ASSEMBLER="$with_as")
240if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
241 if test ! -x "$DEFAULT_ASSEMBLER"; then
99c012a8 242 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
e154a394 243 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
244 gas_flag=yes
245 fi
119d24d1
KG
246 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
247 [Define to enable the use of a default assembler.])
3ccc3a56 248fi
ab339d62 249
dc60b775
CD
250gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi`
251AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.])
252
34a86c2b
NN
253AC_MSG_CHECKING([whether a default assembler was specified])
254if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
255 if test x"$gas_flag" = x"no"; then
256 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
4e88d51b 257 else
34a86c2b 258 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
4e88d51b 259 fi
34a86c2b
NN
260else
261 AC_MSG_RESULT(no)
4e88d51b 262fi
46f18e7b 263
34a86c2b
NN
264# ---------------
265# Find C compiler
266# ---------------
13c22933 267
426ca3ca
RO
268# If a non-executable a.out is present (e.g. created by GNU as above even if
269# invoked with -v only), the IRIX 6 native ld just overwrites the existing
270# file, even when creating an executable, so an execution test fails.
271# Remove possible default executable files to avoid this.
272#
273# FIXME: This really belongs into AC_PROG_CC and can be removed once
274# Autoconf includes it.
275rm -f a.out a.exe b.out
276
414d23ae
HPN
277# Find the native compiler
278AC_PROG_CC
3b620440 279AM_PROG_CC_C_O
00020c16 280AC_PROG_CXX
3d4e720a
ST
281ACX_PROG_GNAT([-I"$srcdir"/ada])
282
414d23ae
HPN
283# autoconf is lame and doesn't give us any substitution variable for this.
284if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
285 NO_MINUS_C_MINUS_O=yes
286else
287 OUTPUT_OPTION='-o $@'
288fi
289AC_SUBST(NO_MINUS_C_MINUS_O)
290AC_SUBST(OUTPUT_OPTION)
291
ec6c7392
PB
292# Remove the -O2: for historical reasons, unless bootstrapping we prefer
293# optimizations to be activated explicitly by the toplevel.
294case "$CC" in
295 */prev-gcc/xgcc*) ;;
296 *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
297esac
298AC_SUBST(CFLAGS)
299
e3aa9eba
RO
300# Determine PICFLAG for target gnatlib.
301GCC_PICFLAG_FOR_TARGET
302AC_SUBST(PICFLAG_FOR_TARGET)
303
73458fb7
NN
304# -------------------------
305# Check C compiler features
306# -------------------------
307
60d26958 308AC_USE_SYSTEM_EXTENSIONS
34a86c2b
NN
309AC_PROG_CPP
310AC_C_INLINE
34a86c2b 311
480767a9
ILT
312AC_SYS_LARGEFILE
313
34a86c2b 314# sizeof(char) is 1 by definition.
bf3b7cd3
JD
315AC_CHECK_SIZEOF(void *)
316AC_CHECK_SIZEOF(short)
317AC_CHECK_SIZEOF(int)
318AC_CHECK_SIZEOF(long)
5ec1c5e6
KC
319AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
320AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
7c2a2dbf 321GCC_STDINT_TYPES
34a86c2b 322
34a86c2b
NN
323# ---------------------
324# Warnings and checking
325# ---------------------
326
b5472e1d
NN
327# Check $CC warning features (if it's GCC).
328# We want to use -pedantic, but we don't want warnings about
329# * 'long long'
330# * variadic macros
89a42ac8 331# * overlong strings
25339f10 332# * C++11 narrowing conversions in { }
b5472e1d
NN
333# So, we only use -pedantic if we can disable those warnings.
334
f6e377f8 335ACX_PROG_CC_WARNING_OPTS(
25339f10 336 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual])), [loose_warn])
f6e377f8 337ACX_PROG_CC_WARNING_OPTS(
00020c16
ILT
338 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
339 [c_loose_warn])
340ACX_PROG_CC_WARNING_OPTS(
341 m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
342ACX_PROG_CC_WARNING_OPTS(
343 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
f6e377f8 344ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
75c9cbe3
AS
345 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
346 [-Wno-overlength-strings])), [strict_warn])
3bbd5a19
PB
347ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
348
349# The above macros do nothing if the compiler is not GCC. However, the
00020c16
ILT
350# Makefile has more goo to add other flags, so these variables are used
351# to enable warnings only for GCC.
414d23ae 352warn_cflags=
00020c16 353warn_cxxflags=
414d23ae
HPN
354if test "x$GCC" = "xyes"; then
355 warn_cflags='$(GCC_WARN_CFLAGS)'
00020c16 356 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
414d23ae
HPN
357fi
358AC_SUBST(warn_cflags)
00020c16 359AC_SUBST(warn_cxxflags)
414d23ae 360
e9411247
MM
361# Disable exceptions and RTTI if building with g++
362ACX_PROG_CC_WARNING_OPTS(
363 m4_quote(m4_do([-fno-exceptions -fno-rtti])), [noexception_flags])
364
8b1f719a 365# Enable expensive internal checks
a1286ef5
ZW
366is_release=
367if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
368 is_release=yes
369fi
dd859b8a 370
a494747c 371AC_ARG_ENABLE(checking,
b88ecf55
AS
372[AS_HELP_STRING([[--enable-checking[=LIST]]],
373 [enable expensive run-time checks. With LIST,
374 enable only specific categories of checks.
375 Categories are: yes,no,all,none,release.
376 Flags are: assert,df,fold,gc,gcac,gimple,misc,
377 rtlflag,rtl,runtime,tree,valgrind,types])],
e1bbfc5c
NS
378[ac_checking_flags="${enableval}"],[
379# Determine the default checks.
380if test x$is_release = x ; then
381 ac_checking_flags=yes
382else
383 ac_checking_flags=release
384fi])
e1bbfc5c 385IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
04c3028a 386for check in release $ac_checking_flags
e1bbfc5c
NS
387do
388 case $check in
cdce5c16 389 # these set all the flags to specific states
0d475361 390 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
cdce5c16 391 ac_fold_checking= ; ac_gc_checking=1 ;
726a989a 392 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
232b67d9 393 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
7e98624c 394 ac_tree_checking=1 ; ac_valgrind_checking= ;
1b24a790 395 ac_types_checking=1 ;;
3089f8b5 396 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
cdce5c16 397 ac_fold_checking= ; ac_gc_checking= ;
726a989a 398 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
232b67d9 399 ac_rtlflag_checking= ; ac_runtime_checking= ;
7e98624c
RG
400 ac_tree_checking= ; ac_valgrind_checking= ;
401 ac_types_checking= ;;
3089f8b5 402 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
cdce5c16 403 ac_fold_checking=1 ; ac_gc_checking=1 ;
726a989a 404 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
cdce5c16 405 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
7e98624c
RG
406 ac_tree_checking=1 ; ac_valgrind_checking= ;
407 ac_types_checking=1 ;;
3089f8b5 408 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
cdce5c16 409 ac_fold_checking= ; ac_gc_checking= ;
726a989a 410 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
cdce5c16 411 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
7e98624c
RG
412 ac_tree_checking= ; ac_valgrind_checking= ;
413 ac_types_checking= ;;
cdce5c16 414 # these enable particular checks
e1bbfc5c 415 assert) ac_assert_checking=1 ;;
3089f8b5 416 df) ac_df_checking=1 ;;
e1bbfc5c
NS
417 fold) ac_fold_checking=1 ;;
418 gc) ac_gc_checking=1 ;;
419 gcac) ac_gc_always_collect=1 ;;
726a989a 420 gimple) ac_gimple_checking=1 ;;
e1bbfc5c 421 misc) ac_checking=1 ;;
e1bbfc5c 422 rtl) ac_rtl_checking=1 ;;
cdce5c16 423 rtlflag) ac_rtlflag_checking=1 ;;
b53ef395 424 runtime) ac_runtime_checking=1 ;;
e1bbfc5c 425 tree) ac_tree_checking=1 ;;
7e98624c 426 types) ac_types_checking=1 ;;
cdce5c16 427 valgrind) ac_valgrind_checking=1 ;;
e1bbfc5c
NS
428 *) AC_MSG_ERROR(unknown check category $check) ;;
429 esac
430done
431IFS="$ac_save_IFS"
432
204250d2 433nocommon_flag=""
119d24d1
KG
434if test x$ac_checking != x ; then
435 AC_DEFINE(ENABLE_CHECKING, 1,
436[Define if you want more run-time sanity checks. This one gets a grab
437 bag of miscellaneous but relatively cheap checks.])
204250d2 438 nocommon_flag=-fno-common
119d24d1 439fi
204250d2 440AC_SUBST(nocommon_flag)
3089f8b5
PB
441if test x$ac_df_checking != x ; then
442 AC_DEFINE(ENABLE_DF_CHECKING, 1,
443[Define if you want more run-time sanity checks for dataflow.])
444fi
06c37c96
NS
445if test x$ac_assert_checking != x ; then
446 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
447[Define if you want assertions enabled. This is a cheap check.])
448fi
726a989a
RB
449if test x$ac_gimple_checking != x ; then
450 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
451[Define if you want operations on GIMPLE (the basic data structure of
452the high-level optimizers) to be checked for dynamic type safety at
453runtime. This is moderately expensive.])
454fi
232b67d9 455GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
b53ef395
NS
456if test x$ac_runtime_checking != x ; then
457 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
458[Define if you want runtime assertions enabled. This is a cheap check.])
459fi
119d24d1
KG
460if test x$ac_tree_checking != x ; then
461 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
462[Define if you want all operations on trees (the basic data
463 structure of the front ends) to be checked for dynamic type safety
13f05fd0
BM
464 at runtime. This is moderately expensive. The tree browser debugging
465 routines will also be enabled by this option.
466 ])
467 TREEBROWSER=tree-browser.o
119d24d1 468fi
7e98624c
RG
469if test x$ac_types_checking != x ; then
470 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
471[Define if you want all gimple types to be verified after gimplifiation.
472 This is cheap.
473 ])
474fi
13f05fd0 475AC_SUBST(TREEBROWSER)
119d24d1
KG
476if test x$ac_rtl_checking != x ; then
477 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
478[Define if you want all operations on RTL (the basic data structure
479 of the optimizer and back end) to be checked for dynamic type safety
480 at runtime. This is quite expensive.])
481fi
4c76f856
JJ
482if test x$ac_rtlflag_checking != x ; then
483 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
484[Define if you want RTL flag accesses to be checked against the RTL
485 codes that are supported for each access macro. This is relatively
486 cheap.])
487fi
119d24d1
KG
488if test x$ac_gc_checking != x ; then
489 AC_DEFINE(ENABLE_GC_CHECKING, 1,
490[Define if you want the garbage collector to do object poisoning and
491 other memory allocation checks. This is quite expensive.])
492fi
493if test x$ac_gc_always_collect != x ; then
494 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
495[Define if you want the garbage collector to operate in maximally
496 paranoid mode, validating the entire heap and collecting garbage at
497 every opportunity. This is extremely expensive.])
498fi
5dfa45d0
JJ
499if test x$ac_fold_checking != x ; then
500 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
501[Define if you want fold checked that it never destructs its argument.
502 This is quite expensive.])
503fi
414d23ae
HPN
504valgrind_path_defines=
505valgrind_command=
6938ec6c
NN
506
507dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
508dnl # an if statement. This was the source of very frustrating bugs
509dnl # in converting to autoconf 2.5x!
510AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
511
cdce5c16 512if test x$ac_valgrind_checking != x ; then
414d23ae
HPN
513 # It is certainly possible that there's valgrind but no valgrind.h.
514 # GCC relies on making annotations so we must have both.
a207b594 515 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
f04f1d2c
KC
516 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
517 [[#include <valgrind/memcheck.h>
a207b594
HPN
518#ifndef VALGRIND_DISCARD
519#error VALGRIND_DISCARD not defined
f04f1d2c 520#endif]])],
a207b594
HPN
521 [gcc_cv_header_valgrind_memcheck_h=yes],
522 [gcc_cv_header_valgrind_memcheck_h=no])
523 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
14011ca4 524 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
f04f1d2c
KC
525 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
526 [[#include <memcheck.h>
14011ca4
AJ
527#ifndef VALGRIND_DISCARD
528#error VALGRIND_DISCARD not defined
f04f1d2c
KC
529#endif]])],
530 [gcc_cv_header_memcheck_h=yes],
531 [gcc_cv_header_memcheck_h=no])
14011ca4 532 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
414d23ae
HPN
533 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
534 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
a207b594
HPN
535 if test "x$valgrind_path" = "x" \
536 || (test $have_valgrind_h = no \
537 && test $gcc_cv_header_memcheck_h = no \
538 && test $gcc_cv_header_valgrind_memcheck_h = no); then
539 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
414d23ae
HPN
540 fi
541 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
542 valgrind_command="$valgrind_path -q"
543 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
544[Define if you want to run subprograms and generated programs
545 through valgrind (a memory checker). This is extremely expensive.])
a207b594
HPN
546 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
547 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
548 [Define if valgrind's valgrind/memcheck.h header is installed.])
549 fi
14011ca4
AJ
550 if test $gcc_cv_header_memcheck_h = yes; then
551 AC_DEFINE(HAVE_MEMCHECK_H, 1,
552 [Define if valgrind's memcheck.h header is installed.])
553 fi
414d23ae
HPN
554fi
555AC_SUBST(valgrind_path_defines)
556AC_SUBST(valgrind_command)
51d0e20c 557
22aa533e
NS
558# Enable code coverage collection
559AC_ARG_ENABLE(coverage,
b88ecf55
AS
560[AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
561 [enable compiler's code coverage collection.
562 Use to measure compiler performance and locate
563 unused parts of the compiler. With LEVEL, specify
564 optimization. Values are opt, noopt,
565 default is noopt])],
22aa533e 566[case "${enableval}" in
6dd297da
NN
567 yes|noopt)
568 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
569 ;;
570 opt)
571 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
572 ;;
573 no)
574 # a.k.a. --disable-coverage
575 coverage_flags=""
576 ;;
577 *)
578 AC_MSG_ERROR(unknown coverage setting $enableval)
579 ;;
22aa533e 580esac],
2043c38e 581[coverage_flags=""])
22aa533e
NS
582AC_SUBST(coverage_flags)
583
439a7e54 584AC_ARG_ENABLE(gather-detailed-mem-stats,
b88ecf55
AS
585[AS_HELP_STRING([--enable-gather-detailed-mem-stats],
586 [enable detailed memory allocation stats gathering])], [],
439a7e54
DN
587[enable_gather_detailed_mem_stats=no])
588if test x$enable_gather_detailed_mem_stats = xyes ; then
589 AC_DEFINE(GATHER_STATISTICS, 1,
590 [Define to enable detailed memory allocation stats gathering.])
591fi
592
73458fb7
NN
593# -------------------------------
594# Miscenalleous configure options
595# -------------------------------
34a86c2b 596
00020c16
ILT
597# See if we are building gcc with C++.
598AC_ARG_ENABLE(build-with-cxx,
b88ecf55
AS
599[AS_HELP_STRING([--enable-build-with-cxx],
600 [build with C++ compiler instead of C compiler])],
00020c16
ILT
601ENABLE_BUILD_WITH_CXX=$enableval,
602ENABLE_BUILD_WITH_CXX=no)
603AC_SUBST(ENABLE_BUILD_WITH_CXX)
5427046f
ILT
604if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
605 AC_DEFINE(ENABLE_BUILD_WITH_CXX, 1,
606 [Define if building with C++.])
607fi
00020c16 608
34a86c2b
NN
609# With stabs
610AC_ARG_WITH(stabs,
b88ecf55
AS
611[AS_HELP_STRING([--with-stabs],
612 [arrange to use stabs instead of host debug format])],
34a86c2b
NN
613stabs="$with_stabs",
614stabs=no)
615
34a86c2b
NN
616# Determine whether or not multilibs are enabled.
617AC_ARG_ENABLE(multilib,
b88ecf55
AS
618[AS_HELP_STRING([--enable-multilib],
619 [enable library support for multiple ABIs])],
34a86c2b
NN
620[], [enable_multilib=yes])
621AC_SUBST(enable_multilib)
3ecc3258 622
4bafaa6f
L
623# Enable __cxa_atexit for C++.
624AC_ARG_ENABLE(__cxa_atexit,
b88ecf55 625[AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
4bafaa6f 626[], [])
2121a768 627
486aa804 628# Enable C extension for decimal float if target supports it.
3c39bca6 629GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
486aa804 630
79b87c74 631dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
486aa804
BE
632AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
633[Define to 1 to enable decimal float extension to C.])
634
cc0ae0ca
L
635# Use default_decimal_float for dependency.
636enable_decimal_float=$default_decimal_float
637
79b87c74
MM
638bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
639AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
640[Define to 1 to specify that we are using the BID decimal floating
641point format instead of DPD])
642
ab22c1fa
CF
643# Enable C extension for fixed-point arithmetic.
644AC_ARG_ENABLE(fixed-point,
b88ecf55
AS
645[AS_HELP_STRING([--enable-fixed-point],
646 [enable fixed-point arithmetic extension to C])],
647[],
ab22c1fa
CF
648[
649 case $target in
655b30bf
JB
650 arm*)
651 enable_fixed_point=yes
652 ;;
653
ab22c1fa 654 mips*-*-*)
d5be1dd4
RS
655 case $host in
656 mips*-sgi-irix*)
84f47d20 657 AC_MSG_WARN([fixed-point is not supported on IRIX, ignored])
d5be1dd4
RS
658 enable_fixed_point=no
659 ;;
660 *)
661 enable_fixed_point=yes
662 ;;
663 esac
ab22c1fa
CF
664 ;;
665 *)
84f47d20 666 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
ab22c1fa
CF
667 enable_fixed_point=no
668 ;;
669 esac
670])
671AC_SUBST(enable_fixed_point)
672
673fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
674AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
675[Define to 1 to enable fixed-point arithmetic extension to C.])
676
0bbb1697
RK
677# Enable threads
678# Pass with no value to take the default
679# Pass with a value to specify a thread package
680AC_ARG_ENABLE(threads,
b88ecf55
AS
681[AS_HELP_STRING([[--enable-threads[=LIB]]],
682 [enable thread usage for target GCC,
683 using LIB thread package])],,
615be2cf 684[enable_threads=''])
0bbb1697 685
8dea1cca 686AC_ARG_ENABLE(tls,
b88ecf55
AS
687[AS_HELP_STRING([--enable-tls],
688 [enable or disable generation of tls code
689 overriding the assembler check for tls support])],
8dea1cca
DD
690[
691 case $enable_tls in
692 yes | no) ;;
693 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
694Valid choices are 'yes' and 'no'.]) ;;
695 esac
696], [enable_tls=''])
697
d8bb17c8 698AC_ARG_ENABLE(objc-gc,
b88ecf55
AS
699[AS_HELP_STRING([--enable-objc-gc],
700 [enable the use of Boehm's garbage collector with
701 the GNU Objective-C runtime])],
2618c083 702if test x$enable_objc_gc = xno; then
d8bb17c8
OP
703 objc_boehm_gc=''
704else
705 objc_boehm_gc=1
706fi,
707objc_boehm_gc='')
708
90e6a802 709AC_ARG_WITH(dwarf2,
b88ecf55 710[AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
87921b81 711dwarf2="$with_dwarf2",
90e6a802
RL
712dwarf2=no)
713
50503ac8 714AC_ARG_ENABLE(shared,
b88ecf55 715[AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
c785e0fa
AO
716[
717 case $enable_shared in
718 yes | no) ;;
719 *)
720 enable_shared=no
721 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
722 for pkg in $enableval; do
723 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
724 enable_shared=yes
725 fi
726 done
727 IFS="$ac_save_ifs"
728 ;;
729 esac
730], [enable_shared=yes])
50503ac8
RH
731AC_SUBST(enable_shared)
732
08b2bad2
SB
733AC_ARG_WITH([native-system-header-dir],
734 [ --with-native-system-header-dir=dir
735 use dir as the directory to look for standard
736 system header files in. Defaults to /usr/include.],
737[
738 case ${with_native_system_header_dir} in
739 yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
740 /* | [[A-Za-z]]:[[\\/]]*) ;;
741 *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
742 esac
743 configured_native_system_header_dir="${withval}"
744], [configured_native_system_header_dir=])
745
160633c6 746AC_ARG_WITH(build-sysroot,
b88ecf55 747 [AS_HELP_STRING([--with-build-sysroot=sysroot],
c875f596
DN
748 [use sysroot as the system root during the build])],
749 [if test x"$withval" != x ; then
750 SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
751 fi],
752 [SYSROOT_CFLAGS_FOR_TARGET=])
753AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
160633c6 754
4977bab6 755AC_ARG_WITH(sysroot,
b88ecf55
AS
756[AS_HELP_STRING([[--with-sysroot[=DIR]]],
757 [search for usr/lib, usr/include, et al, within DIR])],
4977bab6
ZW
758[
759 case ${with_sysroot} in
caa55b1e 760 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
4977bab6
ZW
761 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
762 esac
763
764 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
14da6073 765 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
b28250ab 766
748670c2
RS
767 if test "x$prefix" = xNONE; then
768 test_prefix=/usr/local
769 else
770 test_prefix=$prefix
771 fi
047d636f 772 if test "x$exec_prefix" = xNONE; then
748670c2 773 test_exec_prefix=$test_prefix
047d636f 774 else
748670c2 775 test_exec_prefix=$exec_prefix
047d636f
DJ
776 fi
777 case ${TARGET_SYSTEM_ROOT} in
91710e62 778 "${test_prefix}"|"${test_prefix}/"*|\
748670c2
RS
779 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
780 '${prefix}'|'${prefix}/'*|\
91710e62 781 '${exec_prefix}'|'${exec_prefix}/'*)
047d636f
DJ
782 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
783 TARGET_SYSTEM_ROOT_DEFINE="$t"
784 ;;
785 esac
4977bab6
ZW
786], [
787 TARGET_SYSTEM_ROOT=
db720d9a 788 TARGET_SYSTEM_ROOT_DEFINE=
4977bab6
ZW
789 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
790])
791AC_SUBST(TARGET_SYSTEM_ROOT)
792AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
793AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
794
e11ddaf5
NS
795AC_ARG_WITH(specs,
796 [AS_HELP_STRING([--with-specs=SPECS],
797 [add SPECS to driver command-line processing])],
798 [CONFIGURE_SPECS=$withval],
799 [CONFIGURE_SPECS=]
800)
801AC_SUBST(CONFIGURE_SPECS)
802
2f41c1d6
PB
803ACX_PKGVERSION([GCC])
804ACX_BUGURL([http://gcc.gnu.org/bugs.html])
805
e4c9c075
PB
806# Sanity check enable_languages in case someone does not run the toplevel
807# configure # script.
808AC_ARG_ENABLE(languages,
b88ecf55 809[AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
e4c9c075
PB
810[case ,${enable_languages}, in
811 ,,|,yes,)
812 # go safe -- we cannot be much sure without the toplevel
813 # configure's
814 # analysis of which target libs are present and usable
815 enable_languages=c
816 ;;
817 *,all,*)
818 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
819 ;;
820 *,c,*)
821 ;;
822 *)
823 enable_languages=c,${enable_languages}
824 ;;
825esac],
826[enable_languages=c])
827
aca600aa 828AC_ARG_WITH(multilib-list,
f0ea7581 829[AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and x86-64 only)])],
aca600aa
AS
830:,
831with_multilib_list=default)
832
73458fb7
NN
833# -------------------------
834# Checks for other programs
835# -------------------------
61842080 836
e9a25f70
JL
837AC_PROG_MAKE_SET
838
46f18e7b
RK
839# Find some useful tools
840AC_PROG_AWK
776dc15d 841# We need awk to create options.c and options.h.
2c4902b9
NN
842# Bail out if it's missing.
843case ${AWK} in
844 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
845esac
846
99e757d5 847gcc_AC_PROG_LN_S
ad6717df 848ACX_PROG_LN($LN_S)
46f18e7b 849AC_PROG_RANLIB
10eb188c 850ranlib_flags=""
343a6100
MM
851AC_SUBST(ranlib_flags)
852
99e757d5 853gcc_AC_PROG_INSTALL
46f18e7b 854
3a000df0
KC
855# See if cmp has --ignore-initial.
856gcc_AC_PROG_CMP_IGNORE_INITIAL
857
955be633
JM
858# See if we have the mktemp command.
859AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
860
7c27e184
PB
861# See if makeinfo has been installed and is modern enough
862# that we can use it.
3bbd5a19 863ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
09fa0705 864 [GNU texinfo.* \([0-9][0-9.]*\)],
7326a39e 865 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
09fa0705
ZW
866if test $gcc_cv_prog_makeinfo_modern = no; then
867 AC_MSG_WARN([
868*** Makeinfo is missing or too old.
17db6582 869*** Info documentation will not be built.])
09fa0705 870 BUILD_INFO=
09fa0705 871else
7c27e184 872 BUILD_INFO=info
09fa0705 873fi
7c27e184 874AC_SUBST(BUILD_INFO)
09fa0705 875
3f896fc2
JM
876# Is pod2man recent enough to regenerate manpages?
877AC_MSG_CHECKING([for recent Pod::Man])
7be33370 878if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
fd939e46 879 AC_MSG_RESULT(yes)
7c27e184 880 GENERATED_MANPAGES=generated-manpages
fd939e46
JM
881else
882 AC_MSG_RESULT(no)
883 GENERATED_MANPAGES=
884fi
7c27e184 885AC_SUBST(GENERATED_MANPAGES)
fd939e46 886
3bbd5a19
PB
887MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
888
1e608388
ZW
889# How about lex?
890dnl Don't use AC_PROG_LEX; we insist on flex.
891dnl LEXLIB is not useful in gcc.
7c27e184 892AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1e608388
ZW
893
894# Bison?
7c27e184
PB
895AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
896
897# Binutils are not build modules, unlike bison/flex/makeinfo. So we
898# check for build == host before using them.
1e608388 899
f6a874ac 900# NM
414adbdd
GK
901if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
902 && test -d ../binutils ; then
bfa912a8 903 NM='${objdir}/../binutils/nm-new'
f6a874ac
JW
904else
905 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
906fi
907
908# AR
414adbdd
GK
909if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
910 && test -d ../binutils ; then
bfa912a8 911 AR='${objdir}/../binutils/ar'
f6a874ac
JW
912else
913 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
914fi
915
916
73458fb7
NN
917# --------------------
918# Checks for C headers
919# --------------------
920
ca9bc441
NN
921# Need to reject headers which give warnings, so that the -Werror bootstrap
922# works later. *sigh* This needs to come before all header checks.
923AC_PROG_CPP_WERROR
924
73458fb7
NN
925AC_HEADER_STDC
926AC_HEADER_TIME
4f4e53dd 927ACX_HEADER_STRING
73458fb7 928AC_HEADER_SYS_WAIT
dfb77e37 929AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1072ec3f 930 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
73458fb7 931 sys/resource.h sys/param.h sys/times.h sys/stat.h \
56694dd9 932 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
73458fb7
NN
933
934# Check for thread headers.
935AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
936AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
937
938# These tests can't be done till we know if we have limits.h.
939gcc_AC_C_CHAR_BIT
9791c75c 940AC_C_BIGENDIAN
73458fb7 941
5427046f
ILT
942# ----------------------
943# Checks for C++ headers
944# ----------------------
945
c658f0ce
ILT
946dnl Autoconf will give an error in the configure script if there is no
947dnl C++ preprocessor. Hack to prevent that.
948m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
949AC_PROG_CXXCPP
950m4_popdef([AC_MSG_ERROR])[]dnl
951
5427046f
ILT
952AC_LANG_PUSH(C++)
953
954AC_CHECK_HEADERS(unordered_map)
955AC_CHECK_HEADERS(tr1/unordered_map)
956AC_CHECK_HEADERS(ext/hash_map)
957
958AC_LANG_POP(C++)
959
73458fb7
NN
960# --------
961# UNSORTED
962# --------
963
73458fb7 964
4e70264f
ZW
965# These libraries may be used by collect2.
966# We may need a special search path to get them linked.
967AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
968[save_LIBS="$LIBS"
7f2749d4 969for libs in '' -lld -lmld \
4e70264f
ZW
970 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
971 '-L/usr/lib/cmplrs/cc3.11 -lmld'
972do
973 LIBS="$libs"
974 AC_TRY_LINK_FUNC(ldopen,
975 [gcc_cv_collect2_libs="$libs"; break])
976done
977LIBS="$save_LIBS"
978test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
979case $gcc_cv_collect2_libs in
980 "none required") ;;
981 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
982esac
983AC_SUBST(COLLECT2_LIBS)
984
7f2749d4
RK
985# When building Ada code on Alpha, we need exc_resume which is usually in
986# -lexc. So test for it.
987save_LIBS="$LIBS"
988LIBS=
989AC_SEARCH_LIBS(exc_resume, exc)
990GNAT_LIBEXC="$LIBS"
991LIBS="$save_LIBS"
992AC_SUBST(GNAT_LIBEXC)
993
e3b3fa45
RO
994# To support -mcpu=native on Solaris/SPARC, we need libkstat.
995save_LIBS="$LIBS"
996LIBS=
997AC_SEARCH_LIBS(kstat_open, kstat)
998EXTRA_GCC_LIBS="$LIBS"
999LIBS="$save_LIBS"
1000AC_SUBST(EXTRA_GCC_LIBS)
1001
62c9aa5f
ZW
1002# Some systems put ldexp and frexp in libm instead of libc; assume
1003# they're both in the same place. jcf-dump needs them.
1004save_LIBS="$LIBS"
1005LIBS=
1006AC_SEARCH_LIBS(ldexp, m)
1007LDEXP_LIB="$LIBS"
1008LIBS="$save_LIBS"
1009AC_SUBST(LDEXP_LIB)
1010
7636d567
JW
1011# Use <inttypes.h> only if it exists,
1012# doesn't clash with <sys/types.h>, and declares intmax_t.
1013AC_MSG_CHECKING(for inttypes.h)
1014AC_CACHE_VAL(gcc_cv_header_inttypes_h,
f04f1d2c
KC
1015[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1016[[#include <sys/types.h>
1017#include <inttypes.h>]],
1018 [[intmax_t i = -1;]])],
9da0e39b 1019 [gcc_cv_header_inttypes_h=yes],
f04f1d2c 1020 [gcc_cv_header_inttypes_h=no])])
7636d567 1021AC_MSG_RESULT($gcc_cv_header_inttypes_h)
9da0e39b 1022if test $gcc_cv_header_inttypes_h = yes; then
119d24d1
KG
1023 AC_DEFINE(HAVE_INTTYPES_H, 1,
1024 [Define if you have a working <inttypes.h> header file.])
9da0e39b 1025fi
cdcc6a01 1026
9612ab65
ZW
1027dnl Disabled until we have a complete test for buggy enum bitfields.
1028dnl gcc_AC_C_ENUM_BF_UNSIGNED
c149cc37 1029
0d667716
KG
1030define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1031 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1032 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1033 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1034 putchar_unlocked putc_unlocked)
52a6edcc 1035AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
d2e506f2 1036 sysconf strsignal getrusage nl_langinfo \
71f3e391 1037 gettimeofday mbstowcs wcswidth mmap setlocale \
711a3d82 1038 gcc_UNLOCKED_FUNCS madvise)
a81fb89e 1039
39f6c4c8
KW
1040if test x$ac_cv_func_mbstowcs = xyes; then
1041 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
f04f1d2c 1042[ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
39f6c4c8
KW
1043int main()
1044{
1045 mbstowcs(0, "", 0);
1046 return 0;
f04f1d2c
KC
1047}]])],
1048 [gcc_cv_func_mbstowcs_works=yes],
1049 [gcc_cv_func_mbstowcs_works=no],
1050 [gcc_cv_func_mbstowcs_works=yes])])
39f6c4c8
KW
1051 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1052 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1053 [Define this macro if mbstowcs does not crash when its
1054 first argument is NULL.])
1055 fi
1056fi
1057
78c9cb99 1058AC_CHECK_TYPE(ssize_t, int)
bba09b5a 1059AC_CHECK_TYPE(caddr_t, char *)
56f48ce9 1060
1072ec3f 1061gcc_AC_FUNC_MMAP_BLACKLIST
b27d2bd5
MK
1062
1063case "${host}" in
ee262b6f 1064*-*-*vms*)
2c55543b 1065 # Under VMS, vfork works very differently than on Unix. The standard test
ee262b6f
DR
1066 # won't work, and it isn't easily adaptable. It makes more sense to
1067 # just force it.
1068 ac_cv_func_vfork_works=yes
1069 ;;
b27d2bd5 1070esac
f04f1d2c 1071AC_FUNC_FORK
f1b54f9b 1072
5b6d595b
RO
1073# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1074# iconv() prototype.
1075AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1076 [AC_LANG_PUSH([C++])
1077 AM_ICONV
1078 AC_LANG_POP([C++])],
1079 [AM_ICONV])
1080
56694dd9
ZW
1081# Until we have in-tree GNU iconv:
1082LIBICONV_DEP=
1083AC_SUBST(LIBICONV_DEP)
1084
1085AM_LC_MESSAGES
f91abfce 1086
a03ea89b
BM
1087AM_LANGINFO_CODESET
1088
86cf1cbd
KG
1089# We will need to find libiberty.h and ansidecl.h
1090saved_CFLAGS="$CFLAGS"
1091CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
87fb500b
RO
1092saved_CXXFLAGS="$CXXFLAGS"
1093CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
ed5b9f96 1094gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
123cd463 1095 strsignal strstr stpcpy strverscmp \
ed5b9f96 1096 errno snprintf vsnprintf vasprintf malloc realloc calloc \
367e8319 1097 free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
d02af173 1098#include "ansidecl.h"
86cf1cbd 1099#include "system.h"])
c5c76735 1100
f31e826b 1101gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
d02af173 1102#include "ansidecl.h"
86cf1cbd 1103#include "system.h"
d2cabf16
KG
1104#ifdef HAVE_SYS_RESOURCE_H
1105#include <sys/resource.h>
1106#endif
1107])
1108
f04f1d2c 1109AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
b2522d2b
HPN
1110#include "ansidecl.h"
1111#include "system.h"
1112#ifdef HAVE_SYS_RESOURCE_H
1113#include <sys/resource.h>
1114#endif
f04f1d2c 1115]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
236ec2d7 1116[Define to `long' if <sys/resource.h> doesn't define.])])
b2522d2b 1117
2102b2fe
RS
1118# On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1119# FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1120# in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1121# to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
351df804
KG
1122gcc_AC_CHECK_DECLS(ldgetname, , ,[
1123#include "ansidecl.h"
1124#include "system.h"
1125#ifdef HAVE_LDFCN_H
2102b2fe
RS
1126#undef FREAD
1127#undef FWRITE
351df804
KG
1128#include <ldfcn.h>
1129#endif
1130])
1131
c1800ec8
ZW
1132gcc_AC_CHECK_DECLS(times, , ,[
1133#include "ansidecl.h"
1134#include "system.h"
1135#ifdef HAVE_SYS_TIMES_H
1136#include <sys/times.h>
1137#endif
1138])
1139
4f6d8cc8
GK
1140gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1141#include "ansidecl.h"
1142#include "system.h"
1143#include <signal.h>
1144])
1145
87fb500b
RO
1146# g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1147# prototype.
1148AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1149 [AC_LANG_PUSH([C++])
1150 gcc_AC_CHECK_DECLS(madvise, , ,[
1151 #include "ansidecl.h"
1152 #include "system.h"
1153 ])
1154 AC_LANG_POP([C++])],
1155 [gcc_AC_CHECK_DECLS(madvise, , ,[
1156 #include "ansidecl.h"
1157 #include "system.h"
1158 ])
1159])
1160
c1800ec8
ZW
1161# More time-related stuff.
1162AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
f04f1d2c 1163AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c1800ec8
ZW
1164#include "ansidecl.h"
1165#include "system.h"
1166#ifdef HAVE_SYS_TIMES_H
1167#include <sys/times.h>
1168#endif
f04f1d2c 1169]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
c1800ec8
ZW
1170if test $ac_cv_struct_tms = yes; then
1171 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1172 [Define if <sys/times.h> defines struct tms.])
1173fi
1174
1175# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1176# revisit after autoconf 2.50.
1177AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
f04f1d2c 1178AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c1800ec8
ZW
1179#include "ansidecl.h"
1180#include "system.h"
f04f1d2c 1181]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
c1800ec8
ZW
1182if test $gcc_cv_type_clock_t = yes; then
1183 AC_DEFINE(HAVE_CLOCK_T, 1,
1184 [Define if <time.h> defines clock_t.])
1185fi
1186
87fb500b 1187# Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
86cf1cbd 1188CFLAGS="$saved_CFLAGS"
87fb500b 1189CXXFLAGS="$saved_CXXFLAGS"
86cf1cbd 1190
eb70d86d
AS
1191gcc_AC_INITFINI_ARRAY
1192
75923b2f 1193# mkdir takes a single argument on some systems.
99e757d5 1194gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
75923b2f 1195
46f18e7b
RK
1196# File extensions
1197manext='.1'
1198objext='.o'
46f18e7b
RK
1199AC_SUBST(manext)
1200AC_SUBST(objext)
46f18e7b 1201
4977bab6
ZW
1202# With Setjmp/Longjmp based exception handling.
1203AC_ARG_ENABLE(sjlj-exceptions,
b88ecf55
AS
1204[AS_HELP_STRING([--enable-sjlj-exceptions],
1205 [arrange to use setjmp/longjmp exception handling])],
399fe3e1
JDA
1206[case $target in
1207 *-*-hpux10*)
1208 if test $enableval != yes; then
1209 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1210 enableval=yes
1211 fi
1212 ;;
1213esac
1214force_sjlj_exceptions=yes],
1215[case $target in
1216 *-*-hpux10*)
1217 force_sjlj_exceptions=yes
1218 enableval=yes
1219 ;;
1220 *)
1221 force_sjlj_exceptions=no
1222 ;;
1223esac])
1224if test $force_sjlj_exceptions = yes; then
1225 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1226 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1227 [Define 0/1 to force the choice for exception handling model.])
1228fi
4977bab6 1229
34a86c2b
NN
1230# --------------------------------------------------------
1231# Build, host, and target specific configuration fragments
1232# --------------------------------------------------------
1233
5b28c537
NN
1234# Collect build-machine-specific information.
1235. ${srcdir}/config.build
1236
a89ea0df
NN
1237# Collect host-machine-specific information.
1238. ${srcdir}/config.host
1239
ef69da62 1240target_gtfiles=
a89ea0df
NN
1241
1242# Collect target-machine-specific information.
b01bc573 1243. ${srcdir}/config.gcc
46f18e7b
RK
1244
1245extra_objs="${host_extra_objs} ${extra_objs}"
30500d84 1246extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
46f18e7b
RK
1247
1248# Default the target-machine variables that were not explicitly set.
75bffa71 1249if test x"$tm_file" = x
46f18e7b
RK
1250then tm_file=$cpu_type/$cpu_type.h; fi
1251
6b2adea9 1252if test x"$extra_headers" = x
46f18e7b
RK
1253then extra_headers=; fi
1254
75bffa71 1255if test x$md_file = x
e98e406f 1256then md_file=$cpu_type/$cpu_type.md; fi
46f18e7b 1257
75bffa71 1258if test x$out_file = x
46f18e7b
RK
1259then out_file=$cpu_type/$cpu_type.c; fi
1260
75bffa71 1261if test x"$tmake_file" = x
46f18e7b
RK
1262then tmake_file=$cpu_type/t-$cpu_type
1263fi
1264
90e6a802 1265if test x"$dwarf2" = xyes
756ee602 1266then tm_file="$tm_file tm-dwarf2.h"
90e6a802
RL
1267fi
1268
46f18e7b 1269# Say what files are being used for the output code and MD file.
11642c3a 1270echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
46f18e7b
RK
1271echo "Using \`$srcdir/config/$md_file' as machine description file."
1272
11642c3a 1273# If any of the xm_file variables contain nonexistent files, warn
4dc0535b
ZW
1274# about them and drop them.
1275
11642c3a
ZW
1276bx=
1277for x in $build_xm_file; do
1278 if test -f $srcdir/config/$x
1279 then bx="$bx $x"
11642c3a
ZW
1280 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1281 fi
1282done
1283build_xm_file="$bx"
1284
1285hx=
1286for x in $host_xm_file; do
1287 if test -f $srcdir/config/$x
1288 then hx="$hx $x"
11642c3a
ZW
1289 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1290 fi
1291done
1292host_xm_file="$hx"
1293
1294tx=
1295for x in $xm_file; do
1296 if test -f $srcdir/config/$x
1297 then tx="$tx $x"
11642c3a
ZW
1298 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1299 fi
1300done
1301xm_file="$tx"
1302
46f18e7b
RK
1303count=a
1304for f in $tm_file; do
1305 count=${count}x
1306done
75bffa71 1307if test $count = ax; then
46f18e7b
RK
1308 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1309else
1310 echo "Using the following target machine macro files:"
1311 for f in $tm_file; do
1312 echo " $srcdir/config/$f"
1313 done
1314fi
1315
4977bab6
ZW
1316if test x$need_64bit_hwint = xyes; then
1317 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1318[Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1319fi
1320
99fa8911
AP
1321if test x$use_long_long_for_widest_fast_int = xyes; then
1322 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1323[Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1324efficiently supported by the host hardware.])
1325fi
1326
46f18e7b
RK
1327count=a
1328for f in $host_xm_file; do
1329 count=${count}x
1330done
11642c3a
ZW
1331if test $count = a; then
1332 :
1333elif test $count = ax; then
46f18e7b
RK
1334 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1335else
1336 echo "Using the following host machine macro files:"
1337 for f in $host_xm_file; do
1338 echo " $srcdir/config/$f"
1339 done
1340fi
476d9098 1341echo "Using ${out_host_hook_obj} for host machine hooks."
46f18e7b 1342
75bffa71 1343if test "$host_xm_file" != "$build_xm_file"; then
46f18e7b
RK
1344 count=a
1345 for f in $build_xm_file; do
1346 count=${count}x
1347 done
11642c3a
ZW
1348 if test $count = a; then
1349 :
1350 elif test $count = ax; then
46f18e7b
RK
1351 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1352 else
1353 echo "Using the following build machine macro files:"
1354 for f in $build_xm_file; do
1355 echo " $srcdir/config/$f"
1356 done
1357 fi
1358fi
1359
08b2bad2
SB
1360if test -n "$configured_native_system_header_dir"; then
1361 native_system_header_dir=$configured_native_system_header_dir
1362fi
1363NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1364AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1365
4f6d8cc8 1366case ${host} in
b8ec3cc8 1367 powerpc*-*-darwin*)
4f6d8cc8
GK
1368 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1369 gcc_cv_mcontext_underscores,
1370 AC_COMPILE_IFELSE([
ba7da42a 1371#include <sys/cdefs.h>
de4fb767 1372#include <sys/signal.h>
4f6d8cc8
GK
1373#include <ucontext.h>
1374int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1375],
1376 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1377 if test $gcc_cv_mcontext_underscores = yes; then
1378 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1379 [mcontext_t fields start with __])
1380 fi
1381 ;;
1382esac
1383
8bb915b6
NN
1384# ---------
1385# Threading
1386# ---------
1387
c2e494a8 1388# Check if a valid thread package
615be2cf 1389case ${enable_threads} in
c2e494a8
NN
1390 "" | no)
1391 # No threads
1392 target_thread_file='single'
1393 ;;
1394 yes)
1395 # default
1396 target_thread_file='single'
1397 ;;
ddaad3c8 1398 aix | dce | lynx | mipssde | posix | rtems | \
da90c957 1399 single | tpf | vxworks | win32)
615be2cf 1400 target_thread_file=${enable_threads}
c2e494a8
NN
1401 ;;
1402 *)
615be2cf 1403 echo "${enable_threads} is an unknown thread package" 1>&2
c2e494a8
NN
1404 exit 1
1405 ;;
1406esac
1407
1408if test x${thread_file} = x; then
1409 # No thread file set by target-specific clauses in config.gcc,
1410 # so use file chosen by default logic above
1411 thread_file=${target_thread_file}
46f18e7b 1412fi
46f18e7b 1413
8bb915b6
NN
1414# --------
1415# UNSORTED
1416# --------
1417
18fbf599 1418use_cxa_atexit=no
2121a768
JT
1419if test x$enable___cxa_atexit = xyes || \
1420 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
18fbf599 1421 if test x$host = x$target; then
97388150
DS
1422 case $host in
1423 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1424 # keyed to flag_use_cxa_atexit
1425 *-*-mingw32*)
1426 use_cxa_atexit=yes
1427 ;;
1428 *)
1429 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1430 [echo "__cxa_atexit can't be enabled on this target"])
5f60e48f 1431 ;;
97388150 1432 esac
18fbf599
PB
1433 else
1434 # We can't check for __cxa_atexit when building a cross, so assume
1435 # it is available
1436 use_cxa_atexit=yes
1437 fi
1438 if test x$use_cxa_atexit = xyes; then
c7b5e395 1439 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
18fbf599
PB
1440 [Define if you want to use __cxa_atexit, rather than atexit, to
1441 register C++ destructors for local statics and global objects.
1442 This is essential for fully standards-compliant handling of
1443 destructors, but requires __cxa_atexit in libc.])
1444 fi
2121a768
JT
1445fi
1446
a5381466 1447# Look for a file containing extra machine modes.
1c0ca89d
ZW
1448if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1449 extra_modes_file='$(srcdir)'/config/${extra_modes}
a5381466 1450 AC_SUBST(extra_modes_file)
e22340b0 1451 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
a5381466
ZW
1452 [Define to the name of a file containing a list of extra machine modes
1453 for this architecture.])
a5381466
ZW
1454fi
1455
75685792
RS
1456# Convert extra_options into a form suitable for Makefile use.
1457extra_opt_files=
fd438373 1458all_opt_files=
75685792
RS
1459for f in $extra_options; do
1460 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
fd438373 1461 all_opt_files="$all_opt_files $srcdir/config/$f"
75685792
RS
1462done
1463AC_SUBST(extra_opt_files)
1464
b7cb92ad 1465# auto-host.h is the file containing items generated by autoconf and is
e9a25f70 1466# the first file included by config.h.
4977bab6 1467# If host=build, it is correct to have bconfig include auto-host.h
db81d74a
RH
1468# as well. If host!=build, we are in error and need to do more
1469# work to find out the build config parameters.
75bffa71 1470if test x$host = x$build
db81d74a 1471then
eaf4e618 1472 build_auto=auto-host.h
b7cb92ad
JL
1473else
1474 # We create a subdir, then run autoconf in the subdir.
1475 # To prevent recursion we set host and build for the new
1476 # invocation of configure to the build for this invocation
1477 # of configure.
1478 tempdir=build.$$
1479 rm -rf $tempdir
1480 mkdir $tempdir
1481 cd $tempdir
1482 case ${srcdir} in
b86ecfa9 1483 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
b7cb92ad
JL
1484 *) realsrcdir=../${srcdir};;
1485 esac
d920e825
L
1486 saved_CFLAGS="${CFLAGS}"
1487 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
f8c33439 1488 LDFLAGS="${LDFLAGS_FOR_BUILD}" \
d920e825 1489 ${realsrcdir}/configure \
33e70558 1490 --enable-languages=${enable_languages-all} \
534d0cc0 1491 --target=$target_alias --host=$build_alias --build=$build_alias
d920e825 1492 CFLAGS="${saved_CFLAGS}"
b7cb92ad
JL
1493
1494 # We just finished tests for the build machine, so rename
1495 # the file auto-build.h in the gcc directory.
1496 mv auto-host.h ../auto-build.h
1497 cd ..
1498 rm -rf $tempdir
eaf4e618 1499 build_auto=auto-build.h
db81d74a 1500fi
71b5d516 1501AC_SUBST(build_subdir)
db81d74a 1502
eaf4e618 1503tm_file="${tm_file} defaults.h"
4977bab6
ZW
1504tm_p_file="${tm_p_file} tm-preds.h"
1505host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1506build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
49691411 1507# We don't want ansidecl.h in target files, write code there in ISO/GNU C.
b4862477 1508# put this back in temporarily.
232b67d9 1509xm_file="auto-host.h ansidecl.h ${xm_file}"
0056a9b5 1510
34a86c2b
NN
1511# --------
1512# UNSORTED
1513# --------
1514
afabd8e6 1515changequote(,)dnl
cc1e60ea 1516# Compile in configure arguments.
8105825d 1517if test -f configargs.h ; then
cc1e60ea 1518 # Being re-configured.
022dae81 1519 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
cc1e60ea
JM
1520 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1521else
1522 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1523fi
eeae7b41
DJ
1524
1525# Double all backslashes and backslash all quotes to turn
1526# gcc_config_arguments into a C string.
1527sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1528$gcc_config_arguments
1529EOF
1530gcc_config_arguments_str=`cat conftest.out`
1531rm -f conftest.out
1532
cc1e60ea
JM
1533cat > configargs.h <<EOF
1534/* Generated automatically. */
eeae7b41 1535static const char configuration_arguments[] = "$gcc_config_arguments_str";
a6687d2b 1536static const char thread_model[] = "$thread_file";
7816bea0
DJ
1537
1538static const struct {
1539 const char *name, *value;
1540} configure_default_options[] = $configure_default_options;
cc1e60ea 1541EOF
75bffa71 1542changequote([,])dnl
46f18e7b 1543
0c463e16 1544changequote(,)dnl
40540e68
RAE
1545gcc_BASEVER=`cat $srcdir/BASE-VER`
1546gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1547gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
0c463e16 1548if test -f $srcdir/REVISION ; then
40540e68 1549 gcc_REVISION=`cat $srcdir/REVISION`
0c463e16
RAE
1550else
1551 gcc_REVISION=""
1552fi
1553cat > plugin-version.h <<EOF
1554#include "configargs.h"
1555
bf588455
BS
1556#define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1557#define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1558#define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1559#define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1560
0c463e16
RAE
1561static char basever[] = "$gcc_BASEVER";
1562static char datestamp[] = "$gcc_DATESTAMP";
1563static char devphase[] = "$gcc_DEVPHASE";
1564static char revision[] = "$gcc_REVISION";
1565
1566/* FIXME plugins: We should make the version information more precise.
1567 One way to do is to add a checksum. */
1568
1569static struct plugin_gcc_version gcc_version = {basever, datestamp,
1570 devphase, revision,
1571 configuration_arguments};
1572EOF
1573changequote([,])dnl
1574
ab87f8c8 1575# Internationalization
56694dd9 1576ZW_GNU_GETTEXT_SISTER_DIR
dc6746e7 1577
56694dd9
ZW
1578# If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1579# -liconv on the link line twice.
1580case "$LIBINTL" in *$LIBICONV*)
1581 LIBICONV= ;;
1582esac
ab87f8c8 1583
7f970b70 1584AC_ARG_ENABLE(secureplt,
b88ecf55
AS
1585[AS_HELP_STRING([--enable-secureplt],
1586 [enable -msecure-plt by default for PowerPC])],
7f970b70
AM
1587[], [])
1588
ad211091
KT
1589AC_ARG_ENABLE(leading-mingw64-underscores,
1590 AS_HELP_STRING([--enable-leading-mingw64-underscores],
b88ecf55 1591 [enable leading underscores on 64 bit mingw targets]),
ad211091
KT
1592 [],[])
1593AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1594 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1595 [Define if we should use leading underscore on 64 bit mingw targets])])
1596
922e3e33 1597AC_ARG_ENABLE(cld,
b88ecf55 1598[AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
922e3e33
UB
1599[enable_cld=no])
1600
d79389af 1601AC_ARG_ENABLE(frame-pointer,
b88ecf55
AS
1602[AS_HELP_STRING([--enable-frame-pointer],
1603 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
d79389af
L
1604[
1605case $target_os in
1b2d4118
JH
1606linux* | darwin[[8912]]*)
1607 # Enable -fomit-frame-pointer by default for Linux and Darwin with
1608 # DWARF2.
d79389af
L
1609 enable_frame_pointer=no
1610 ;;
1611*)
1612 enable_frame_pointer=yes
1613 ;;
1614esac
1615])
1616
f4ab28e3
MK
1617# Windows32 Registry support for specifying GCC installation paths.
1618AC_ARG_ENABLE(win32-registry,
b88ecf55
AS
1619[AS_HELP_STRING([--disable-win32-registry],
1620 [disable lookup of installation paths in the
1621 Registry on Windows hosts])
1622AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1623AS_HELP_STRING([--enable-win32-registry=KEY],
1624 [use KEY instead of GCC version as the last portion
1625 of the registry key])],,)
a1286ef5 1626
4e70264f 1627case $host_os in
a1286ef5
ZW
1628 win32 | pe | cygwin* | mingw32* | uwin*)
1629 if test "x$enable_win32_registry" != xno; then
1630 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1631 fi
f4ab28e3 1632
a1286ef5
ZW
1633 if test "x$enable_win32_registry" != xno; then
1634 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1635 [Define to 1 if installation paths should be looked up in the Windows
1636 Registry. Ignored on non-Windows hosts.])
1637
1638 if test "x$enable_win32_registry" != xyes \
1639 && test "x$enable_win32_registry" != x; then
1640 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1641 [Define to be the last component of the Windows registry key under which
1642 to look for installation paths. The full key used will be
1643 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1644 The default is the GCC version number.])
1645 fi
1646 fi
f4ab28e3
MK
1647 ;;
1648esac
1649
7fa10b25 1650# Get an absolute path to the GCC top-level source directory
1e6347d8 1651holddir=`${PWDCMD-pwd}`
7fa10b25 1652cd $srcdir
1e6347d8 1653topdir=`${PWDCMD-pwd}`
7fa10b25
RK
1654cd $holddir
1655
af5e4ada 1656# Conditionalize the makefile for this host machine.
2ed26f6b 1657xmake_file=
c406e779 1658for f in ${host_xmake_file}
94f42018 1659do
75bffa71 1660 if test -f ${srcdir}/config/$f
94f42018 1661 then
2ed26f6b 1662 xmake_file="${xmake_file} \$(srcdir)/config/$f"
94f42018
DE
1663 fi
1664done
46f18e7b 1665
af5e4ada 1666# Conditionalize the makefile for this target machine.
2ed26f6b 1667tmake_file_=
c406e779 1668for f in ${tmake_file}
94f42018 1669do
75bffa71 1670 if test -f ${srcdir}/config/$f
94f42018 1671 then
2ed26f6b 1672 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
94f42018
DE
1673 fi
1674done
2ed26f6b 1675tmake_file="${tmake_file_}"
5891b37d 1676
af5e4ada 1677out_object_file=`basename $out_file .c`.o
c49a6962 1678common_out_object_file=`basename $common_out_file .c`.o
5891b37d 1679
75685792 1680tm_file_list="options.h"
f938f60c 1681tm_include_list="options.h insn-constants.h"
af5e4ada 1682for f in $tm_file; do
64ccbc99 1683 case $f in
3ca43df7
RS
1684 ./* )
1685 f=`echo $f | sed 's/^..//'`
1686 tm_file_list="${tm_file_list} $f"
1687 tm_include_list="${tm_include_list} $f"
1688 ;;
d02af173 1689 defaults.h )
e22340b0
ZW
1690 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1691 tm_include_list="${tm_include_list} $f"
1692 ;;
1693 * )
1694 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1695 tm_include_list="${tm_include_list} config/$f"
1696 ;;
64ccbc99 1697 esac
af5e4ada 1698done
46f18e7b 1699
11642c3a 1700tm_p_file_list=
e22340b0 1701tm_p_include_list=
11642c3a 1702for f in $tm_p_file; do
4977bab6
ZW
1703 case $f in
1704 tm-preds.h )
e22340b0
ZW
1705 tm_p_file_list="${tm_p_file_list} $f"
1706 tm_p_include_list="${tm_p_include_list} $f"
1707 ;;
1708 * )
1709 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1710 tm_p_include_list="${tm_p_include_list} config/$f"
1711 esac
1712done
1713
1714xm_file_list=
1715xm_include_list=
1716for f in $xm_file; do
1717 case $f in
1718 ansidecl.h )
1719 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1720 xm_include_list="${xm_include_list} $f"
1721 ;;
1722 auto-host.h )
1723 xm_file_list="${xm_file_list} $f"
1724 xm_include_list="${xm_include_list} $f"
1725 ;;
1726 * )
1727 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1728 xm_include_list="${xm_include_list} config/$f"
1729 ;;
4977bab6 1730 esac
11642c3a
ZW
1731done
1732
af5e4ada 1733host_xm_file_list=
e22340b0 1734host_xm_include_list=
af5e4ada 1735for f in $host_xm_file; do
64ccbc99 1736 case $f in
d02af173 1737 ansidecl.h )
e22340b0
ZW
1738 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1739 host_xm_include_list="${host_xm_include_list} $f"
1740 ;;
e2500fed 1741 auto-host.h )
e22340b0
ZW
1742 host_xm_file_list="${host_xm_file_list} $f"
1743 host_xm_include_list="${host_xm_include_list} $f"
1744 ;;
1745 * )
1746 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1747 host_xm_include_list="${host_xm_include_list} config/$f"
1748 ;;
64ccbc99 1749 esac
af5e4ada
DE
1750done
1751
1752build_xm_file_list=
1753for f in $build_xm_file; do
64ccbc99 1754 case $f in
d02af173 1755 ansidecl.h )
e22340b0
ZW
1756 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1757 build_xm_include_list="${build_xm_include_list} $f"
1758 ;;
e2500fed 1759 auto-build.h | auto-host.h )
e22340b0
ZW
1760 build_xm_file_list="${build_xm_file_list} $f"
1761 build_xm_include_list="${build_xm_include_list} $f"
1762 ;;
1763 * )
1764 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1765 build_xm_include_list="${build_xm_include_list} config/$f"
1766 ;;
64ccbc99 1767 esac
af5e4ada 1768done
46f18e7b 1769
2989d30c
GK
1770# Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1771# cross-compiler which does not use the native headers and libraries.
a078a589
ZW
1772# Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1773CROSS= AC_SUBST(CROSS)
1774ALL=all.internal AC_SUBST(ALL)
1775SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
b28250ab
MM
1776
1777if test "x$with_build_sysroot" != x; then
14da6073 1778 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
b28250ab
MM
1779else
1780 # This value is used, even on a native system, because
1781 # CROSS_SYSTEM_HEADER_DIR is just
1782 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1783 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1784fi
1785
75bffa71 1786if test x$host != x$target
af5e4ada 1787then
2989d30c 1788 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
a078a589 1789 ALL=all.cross
160633c6 1790 SYSTEM_HEADER_DIR=$build_system_header_dir
343f59d9 1791 case "$host","$target" in
3a7e8b87
GK
1792 # Darwin crosses can use the host system's libraries and headers,
1793 # because of the fat library support. Of course, it must be the
1794 # same version of Darwin on both sides. Allow the user to
1795 # just say --target=foo-darwin without a version number to mean
1796 # "the version on this system".
1797 *-*-darwin*,*-*-darwin*)
1798 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1799 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1800 if test $hostos = $targetos -o $targetos = darwin ; then
1801 CROSS=
1802 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1803 with_headers=yes
1804 fi
1805 ;;
1806
343f59d9
AM
1807 i?86-*-*,x86_64-*-* \
1808 | powerpc*-*-*,powerpc64*-*-*)
1809 CROSS="$CROSS -DNATIVE_CROSS" ;;
1810 esac
e1dbd4c8
KT
1811
1812 case $target in
1813 *-*-mingw*)
1814 if test "x$with_headers" = x; then
1815 with_headers=yes
1816 fi
1817 ;;
1818 *)
1819 ;;
1820 esac
7a615b25 1821elif test "x$TARGET_SYSTEM_ROOT" != x; then
b28250ab 1822 SYSTEM_HEADER_DIR=$build_system_header_dir
af5e4ada 1823fi
46f18e7b 1824
b39d221a
EC
1825# If this is a cross-compiler that does not
1826# have its own set of headers then define
1827# inhibit_libc
1828
dc06db20
R
1829# If this is using newlib, without having the headers available now,
1830# then define inhibit_libc in LIBGCC2_CFLAGS.
fecd6201
ZW
1831# This prevents libgcc2 from containing any code which requires libc
1832# support.
a929bc28 1833: ${inhibit_libc=false}
dc06db20
R
1834if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1835 test x$with_newlib = xyes ; } &&
e50084fa 1836 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
160633c6 1837 inhibit_libc=true
b39d221a
EC
1838fi
1839AC_SUBST(inhibit_libc)
1840
a078a589
ZW
1841# When building gcc with a cross-compiler, we need to adjust things so
1842# that the generator programs are still built with the native compiler.
52c0e446 1843# Also, we cannot run fixincludes.
a078a589
ZW
1844
1845# These are the normal (build=host) settings:
eaf9f3b2 1846CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
4977bab6 1847BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
f8c33439 1848BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
a078a589 1849STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
587dc9c6 1850
83599948
NS
1851# And these apply if build != host, or we are generating coverage data
1852if test x$build != x$host || test "x$coverage_flags" != x
af5e4ada 1853then
b11e4747 1854 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
f8c33439 1855 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
af5e4ada 1856fi
46f18e7b 1857
ae3a15bb
DE
1858# Expand extra_headers to include complete path.
1859# This substitutes for lots of t-* files.
1860extra_headers_list=
b1ef58c8
NN
1861# Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1862for file in ${extra_headers} ; do
1863 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1864done
ae3a15bb 1865
1617e5ee
GK
1866# If use_gcc_tgmath is set, append ginclude/tgmath.h.
1867if test x"$use_gcc_tgmath" = xyes
1868then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1869fi
1870
c38f02df
ILT
1871# Define collect2 in Makefile.
1872case $host_can_use_collect2 in
1873 no) collect2= ;;
1874 *) collect2='collect2$(exeext)' ;;
1875esac
1876AC_SUBST([collect2])
1877
af5e4ada 1878# Add a definition of USE_COLLECT2 if system wants one.
34a86c2b
NN
1879case $use_collect2 in
1880 no) use_collect2= ;;
1881 "") ;;
1882 *)
1883 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1884 xm_defines="${xm_defines} USE_COLLECT2"
c38f02df
ILT
1885 case $host_can_use_collect2 in
1886 no)
1887 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1888 ;;
1889 esac
34a86c2b
NN
1890 ;;
1891esac
af5e4ada 1892
1cd0b716
DK
1893AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
1894[Define to the name of the LTO plugin DSO that must be
1895 passed to the linker's -plugin=LIB option.])
1896
630327c3
NN
1897# ---------------------------
1898# Assembler & linker features
1899# ---------------------------
1900
da0f6381
PB
1901# During stage 2, ld is actually gcc/collect-ld, which is a small script to
1902# discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1903# However when ld-new is first executed from the build tree, libtool will
1904# relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1905# to the build tree. While doing this we need to use the previous-stage
1906# linker, or we have an infinite loop. The presence of a shell script as
1907# ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1908# the gcc/collect-ld script. So we need to know how libtool works, or
1909# exec-tool will fail.
1910
1911m4_defun([_LT_CONFIG_COMMANDS], [])
1912AC_PROG_LIBTOOL
1913AC_SUBST(objdir)
1914AC_SUBST(enable_fast_install)
1915
d869a8c4
NN
1916# Identify the assembler which will work hand-in-glove with the newly
1917# built GCC, so that we can examine its features. This is the assembler
1918# which will be driven by the driver program.
1919#
1920# If build != host, and we aren't building gas in-tree, we identify a
1921# build->target assembler and hope that it will have the same features
1922# as the host->target assembler we'll be using.
981d4858
JM
1923gcc_cv_gas_major_version=
1924gcc_cv_gas_minor_version=
a2f319ea 1925gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
e8b05380
PB
1926
1927m4_pattern_allow([AS_FOR_TARGET])dnl
1928AS_VAR_SET_IF(gcc_cv_as,, [
3ccc3a56
AO
1929if test -x "$DEFAULT_ASSEMBLER"; then
1930 gcc_cv_as="$DEFAULT_ASSEMBLER"
34a86c2b 1931elif test -f $gcc_cv_as_gas_srcdir/configure.in \
08d105fa
AO
1932 && test -f ../gas/Makefile \
1933 && test x$build = x$host; then
e8b05380
PB
1934 gcc_cv_as=../gas/as-new$build_exeext
1935elif test -x as$build_exeext; then
1936 # Build using assembler in the current directory.
1937 gcc_cv_as=./as$build_exeext
4a150fc8 1938elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
e8b05380
PB
1939 gcc_cv_as="$AS_FOR_TARGET"
1940else
1941 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1942fi])
1943
1944ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1945AC_SUBST(ORIGINAL_AS_FOR_TARGET)
be0fe523
PB
1946case "$ORIGINAL_AS_FOR_TARGET" in
1947 ./as | ./as$build_exeext) ;;
1948 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1949esac
e8b05380
PB
1950
1951AC_MSG_CHECKING(what assembler to use)
1952if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
08d105fa
AO
1953 # Single tree build which includes gas. We want to prefer it
1954 # over whatever linker top-level may have detected, since
1955 # we'll use what we're building after installation anyway.
e8b05380 1956 AC_MSG_RESULT(newly built gas)
ad9c4d9f
NN
1957 in_tree_gas=yes
1958 _gcc_COMPUTE_GAS_VERSION
5408ac6c
HPN
1959 in_tree_gas_is_elf=no
1960 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1961 || (grep 'obj_format = multi' ../gas/Makefile \
1962 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1963 then
1964 in_tree_gas_is_elf=yes
1965 fi
e8b05380
PB
1966else
1967 AC_MSG_RESULT($gcc_cv_as)
1968 in_tree_gas=no
981d4858
JM
1969fi
1970
d869a8c4
NN
1971# Identify the linker which will work hand-in-glove with the newly
1972# built GCC, so that we can examine its features. This is the linker
1973# which will be driven by the driver program.
1974#
1975# If build != host, and we aren't building gas in-tree, we identify a
1976# build->target linker and hope that it will have the same features
1977# as the host->target linker we'll be using.
275b60d6
JJ
1978gcc_cv_gld_major_version=
1979gcc_cv_gld_minor_version=
1980gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1981gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
e8b05380
PB
1982
1983AS_VAR_SET_IF(gcc_cv_ld,, [
275b60d6
JJ
1984if test -x "$DEFAULT_LINKER"; then
1985 gcc_cv_ld="$DEFAULT_LINKER"
34a86c2b 1986elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
08d105fa
AO
1987 && test -f ../ld/Makefile \
1988 && test x$build = x$host; then
e8b05380
PB
1989 gcc_cv_ld=../ld/ld-new$build_exeext
1990elif test -x collect-ld$build_exeext; then
1991 # Build using linker in the current directory.
1992 gcc_cv_ld=./collect-ld$build_exeext
4a150fc8 1993elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
e8b05380
PB
1994 gcc_cv_ld="$LD_FOR_TARGET"
1995else
1996 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1997fi])
1998
5938f74d
L
1999ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2000PLUGIN_LD=`basename $gcc_cv_ld`
2001AC_ARG_WITH(plugin-ld,
b88ecf55 2002[AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
5938f74d
L
2003[if test x"$withval" != x; then
2004 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2005 PLUGIN_LD="$withval"
2006 fi])
2007AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2008AC_DEFINE_UNQUOTED(PLUGIN_LD, "$PLUGIN_LD", [Specify plugin linker])
2009
1dcc82c2
DK
2010# Check to see if we are using gold instead of ld
2011AC_MSG_CHECKING(whether we are using gold)
2012ld_is_gold=no
2013if test x$gcc_cv_ld != x; then
2014 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2015 | grep "GNU gold" > /dev/null; then
2016 ld_is_gold=yes
2017 fi
2018fi
2019AC_MSG_RESULT($ld_is_gold)
2020
e8b05380
PB
2021ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2022AC_SUBST(ORIGINAL_LD_FOR_TARGET)
be0fe523
PB
2023case "$ORIGINAL_LD_FOR_TARGET" in
2024 ./collect-ld | ./collect-ld$build_exeext) ;;
2025 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2026esac
e8b05380
PB
2027
2028AC_MSG_CHECKING(what linker to use)
55b46574
RO
2029if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2030 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
08d105fa
AO
2031 # Single tree build which includes ld. We want to prefer it
2032 # over whatever linker top-level may have detected, since
2033 # we'll use what we're building after installation anyway.
e8b05380 2034 AC_MSG_RESULT(newly built ld)
34a86c2b 2035 in_tree_ld=yes
5408ac6c
HPN
2036 in_tree_ld_is_elf=no
2037 if (grep 'EMUL = .*elf' ../ld/Makefile \
8a45d680
AN
2038 || grep 'EMUL = .*linux' ../ld/Makefile \
2039 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
5408ac6c 2040 in_tree_ld_is_elf=yes
55b46574
RO
2041 elif test "$ld_is_gold" = yes; then
2042 in_tree_ld_is_elf=yes
5408ac6c 2043 fi
275b60d6
JJ
2044 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
2045 do
2046changequote(,)dnl
58ea87a9 2047 gcc_cv_gld_version=`sed -n -e 's/^[ ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
275b60d6
JJ
2048 if test x$gcc_cv_gld_version != x; then
2049 break
2050 fi
2051 done
275b60d6
JJ
2052 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2053 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2054changequote([,])dnl
e8b05380
PB
2055else
2056 AC_MSG_RESULT($gcc_cv_ld)
2057 in_tree_ld=no
275b60d6
JJ
2058fi
2059
981d4858 2060# Figure out what nm we will be using.
f9c1196a 2061gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
e8b05380 2062AS_VAR_SET_IF(gcc_cv_nm,, [
9f18db39 2063if test -f $gcc_cv_binutils_srcdir/configure.in \
c15b113b
DD
2064 && test -f ../binutils/Makefile \
2065 && test x$build = x$host; then
9f18db39
PB
2066 gcc_cv_nm=../binutils/nm-new$build_exeext
2067elif test -x nm$build_exeext; then
57991eba 2068 gcc_cv_nm=./nm$build_exeext
4a150fc8 2069elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
e8b05380
PB
2070 gcc_cv_nm="$NM_FOR_TARGET"
2071else
2072 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2073fi])
9f18db39 2074
9f18db39 2075AC_MSG_CHECKING(what nm to use)
e8b05380
PB
2076if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2077 # Single tree build which includes binutils.
2078 AC_MSG_RESULT(newly built nm)
2079 in_tree_nm=yes
2080else
2081 AC_MSG_RESULT($gcc_cv_nm)
2082 in_tree_nm=no
2083fi
2084
2085ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2086AC_SUBST(ORIGINAL_NM_FOR_TARGET)
be0fe523
PB
2087case "$ORIGINAL_NM_FOR_TARGET" in
2088 ./nm | ./nm$build_exeext) ;;
2089 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2090esac
2091
981d4858 2092
3cae5780 2093# Figure out what objdump we will be using.
e8b05380 2094AS_VAR_SET_IF(gcc_cv_objdump,, [
d739199a 2095if test -f $gcc_cv_binutils_srcdir/configure.in \
c15b113b
DD
2096 && test -f ../binutils/Makefile \
2097 && test x$build = x$host; then
f9c1196a 2098 # Single tree build which includes binutils.
9f18db39 2099 gcc_cv_objdump=../binutils/objdump$build_exeext
d739199a
DJ
2100elif test -x objdump$build_exeext; then
2101 gcc_cv_objdump=./objdump$build_exeext
4a150fc8 2102elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
e8b05380
PB
2103 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2104else
2105 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2106fi])
d739199a 2107
d739199a 2108AC_MSG_CHECKING(what objdump to use)
e8b05380
PB
2109if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2110 # Single tree build which includes binutils.
2111 AC_MSG_RESULT(newly built objdump)
2112elif test x$gcc_cv_objdump = x; then
2113 AC_MSG_RESULT(not found)
2114else
2115 AC_MSG_RESULT($gcc_cv_objdump)
2116fi
3cae5780 2117
6e97481b
JJ
2118# Figure out what readelf we will be using.
2119AS_VAR_SET_IF(gcc_cv_readelf,, [
2120if test -f $gcc_cv_binutils_srcdir/configure.in \
2121 && test -f ../binutils/Makefile \
2122 && test x$build = x$host; then
2123 # Single tree build which includes binutils.
2124 gcc_cv_readelf=../binutils/readelf$build_exeext
2125elif test -x readelf$build_exeext; then
2126 gcc_cv_readelf=./readelf$build_exeext
2127else
2128 AC_PATH_PROG(gcc_cv_readelf, readelf)
2129fi])
2130
2131AC_MSG_CHECKING(what readelf to use)
2132if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2133 # Single tree build which includes binutils.
2134 AC_MSG_RESULT(newly built readelf)
2135elif test x$gcc_cv_readelf = x; then
2136 AC_MSG_RESULT(not found)
2137else
2138 AC_MSG_RESULT($gcc_cv_readelf)
2139fi
2140
981d4858 2141# Figure out what assembler alignment features are present.
8ada417f
ZW
2142gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2143 [2,6,0],,
2144[.balign 4
2145.p2align 2],,
2146[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2147 [Define if your assembler supports .balign and .p2align.])])
2148
2149gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2150 [2,8,0],,
2151 [.p2align 4,,7],,
2152[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2153 [Define if your assembler supports specifying the maximum number
2154 of bytes to skip when using the GAS .p2align command.])])
2155
5708d18d
MS
2156gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2157 [2,8,0],,
2158 [.literal16],,
2159[AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2160 [Define if your assembler supports .literal16.])])
2161
8ada417f
ZW
2162gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2163 [elf,2,9,0],,
2164 [conftest_label1: .word 0
d1accaa3
JJ
2165.subsection -1
2166conftest_label2: .word 0
8ada417f
ZW
2167.previous],
2168 [if test x$gcc_cv_nm != x; then
2169 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2170 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2171 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2172 then :
2173 else gcc_cv_as_subsection_m1=yes
2174 fi
2175 rm -f conftest.nm1 conftest.nm2
2176 fi],
2177 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2178 [Define if your assembler supports .subsection and .subsection -1 starts
2179 emitting at the beginning of your section.])])
2180
2181gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2182 [2,2,0],,
2183 [ .weak foobar],,
2184[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2185
a0203ca7
AO
2186gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2187 [2,17,0],,
2188 [ .weakref foobar, barfnot],,
2189[AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2190
e41f3691
JDA
2191gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2192 [2,15,91],,
2193 [ .SPACE $TEXT$
2194 .NSUBSPA $CODE$,COMDAT],,
2195[AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2196
8ada417f
ZW
2197# .hidden needs to be supported in both the assembler and the linker,
2198# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2199# This is irritatingly difficult to feature test for; we have to check the
2200# date string after the version number. If we've got an in-tree
2201# ld, we don't know its patchlevel version, so we set the baseline at 2.13
2202# to be safe.
2203# The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2204gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2205 [elf,2,13,0],,
2206[ .hidden foobar
ed104137
RO
2207foobar:],[
2208# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2209# STV_HIDDEN, so disable .hidden support if so.
2210case "${target}" in
fbdd5d87 2211 i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
ed104137
RO
2212 if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2213 cat > conftest.s <<EOF
2214.globl hidden
2215 .hidden hidden
2216hidden:
2217.globl default
2218 .set default,hidden
2219EOF
2220 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2221 && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2222 grep '\.hidden default' > /dev/null; then
2223 gcc_cv_as_hidden=no
2224 else
2225 gcc_cv_as_hidden=yes
2226 fi
2227 else
2228 # Assume bug is present if objdump is missing.
2229 gcc_cv_as_hidden=no
2230 fi
2231 ;;
2232 *)
2233 gcc_cv_as_hidden=yes
2234 ;;
2235esac])
ee610fcd
RO
2236case "${target}" in
2237 *-*-darwin*)
2238 # Darwin as has some visibility support, though with a different syntax.
2239 gcc_cv_as_hidden=yes
2240 ;;
2241esac
8ada417f 2242
ba885ec5
NS
2243# gnu_indirect_function type is an extension proposed at
2244# http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2245# selection of function implementation
f6c5fbfd
NS
2246AC_ARG_ENABLE(gnu-indirect-function,
2247 [AS_HELP_STRING([--enable-gnu-indirect-function],
2248 [enable the use of the @gnu_indirect_function to glibc systems])],
2249 [case $enable_gnu_indirect_function in
2250 yes | no) ;;
2251 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2252Valid choices are 'yes' and 'no'.]) ;;
2253 esac],
2254 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2255if test x$enable_gnu_indirect_function = xyes; then
2256 AC_DEFINE(HAVE_GNU_INDIRECT_FUNCTION, 1,
2257 [Define if your system supports gnu indirect functions.])
ba885ec5
NS
2258fi
2259
10ca6198
JJ
2260changequote(,)dnl
2261if test $in_tree_ld != yes ; then
2262 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
55b46574
RO
2263 if echo "$ld_ver" | grep GNU > /dev/null; then
2264 if test x"$ld_is_gold" = xyes; then
2265 # GNU gold --version looks like this:
2266 #
2267 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2268 #
2269 # We extract the binutils version which is more familiar and specific
2270 # than the gold version.
2271 ld_vers=`echo $ld_ver | sed -n \
2272 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2273 else
2274 # GNU ld --version looks like this:
2275 #
2276 # GNU ld (GNU Binutils) 2.21.51.20110225
2277 ld_vers=`echo $ld_ver | sed -n \
2278 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2279 fi
10ca6198
JJ
2280 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'`
2281 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2282 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2283 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
55c4f715
RO
2284 else
2285 case "${target}" in
2286 *-*-solaris2*)
2287 #
2288 # Solaris 2 ld -V output looks like this for a regular version:
2289 #
2290 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
2291 #
2292 # but test versions add stuff at the end:
2293 #
2294 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
2295 #
2296 ld_ver=`$gcc_cv_ld -V 2>&1`
2297 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2298 ld_vers=`echo $ld_ver | sed -n \
2299 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2300 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2301 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2302 fi
2303 ;;
2304 esac
10ca6198
JJ
2305 fi
2306fi
2307changequote([,])dnl
2308
8ada417f 2309AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
e5dfb95f 2310[[if test $in_tree_ld = yes ; then
8ada417f
ZW
2311 gcc_cv_ld_hidden=no
2312 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 \
2313 && test $in_tree_ld_is_elf = yes; then
2314 gcc_cv_ld_hidden=yes
2315 fi
2316else
2317 gcc_cv_ld_hidden=yes
55b46574
RO
2318 if test x"$ld_is_gold" = xyes; then
2319 :
2320 elif echo "$ld_ver" | grep GNU > /dev/null; then
8ada417f
ZW
2321 if test 0"$ld_date" -lt 20020404; then
2322 if test -n "$ld_date"; then
2323 # If there was date string, but was earlier than 2002-04-04, fail
2324 gcc_cv_ld_hidden=no
2325 elif test -z "$ld_vers"; then
2326 # If there was no date string nor ld version number, something is wrong
2327 gcc_cv_ld_hidden=no
2328 else
8ada417f
ZW
2329 test -z "$ld_vers_patch" && ld_vers_patch=0
2330 if test "$ld_vers_major" -lt 2; then
2331 gcc_cv_ld_hidden=no
2332 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2333 gcc_cv_ld_hidden="no"
2334 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2335 gcc_cv_ld_hidden=no
c72931a6 2336 fi
8ada417f 2337 fi
789b7de5 2338 fi
8ada417f 2339 else
28690784 2340 case "${target}" in
ee610fcd
RO
2341 *-*-darwin*)
2342 # Darwin ld has some visibility support.
2343 gcc_cv_ld_hidden=yes
2344 ;;
b0fd7d27 2345 hppa64*-*-hpux* | ia64*-*-hpux*)
28690784
JDA
2346 gcc_cv_ld_hidden=yes
2347 ;;
319840d3
RO
2348 *-*-solaris2.8*)
2349 # .hidden support was backported to Solaris 8, starting with ld
2350 # version 1.276.
2351 if test "$ld_vers_minor" -ge 276; then
2352 gcc_cv_ld_hidden=yes
2353 else
2354 gcc_cv_ld_hidden=no
2355 fi
2356 ;;
5e87dc23 2357 *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
a93e1899
RO
2358 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2359 # .symbolic was only added in Solaris 9 12/02.
5e87dc23
RO
2360 gcc_cv_ld_hidden=yes
2361 ;;
28690784
JDA
2362 *)
2363 gcc_cv_ld_hidden=no
2364 ;;
2365 esac
8ada417f 2366 fi
e5dfb95f 2367fi]])
8ada417f 2368libgcc_visibility=no
9e944a16 2369AC_SUBST(libgcc_visibility)
232b67d9 2370GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
0f31374d 2371if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
8ada417f
ZW
2372 libgcc_visibility=yes
2373 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2374 [Define if your assembler and linker support .hidden.])
2375fi
6a9c5260 2376
e73da78e
RO
2377AC_MSG_CHECKING(linker read-only and read-write section mixing)
2378gcc_cv_ld_ro_rw_mix=unknown
2379if test $in_tree_ld = yes ; then
2380 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 \
2381 && test $in_tree_ld_is_elf = yes; then
2382 gcc_cv_ld_ro_rw_mix=read-write
2383 fi
2384elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2385 echo '.section myfoosect, "a"' > conftest1.s
2386 echo '.section myfoosect, "aw"' > conftest2.s
2387 echo '.byte 1' >> conftest2.s
2388 echo '.section myfoosect, "a"' > conftest3.s
2389 echo '.byte 0' >> conftest3.s
2390 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2391 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2392 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2393 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2394 conftest2.o conftest3.o > /dev/null 2>&1; then
2395 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2396 | sed -e '/myfoosect/!d' -e N`
2397 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2398 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2399 gcc_cv_ld_ro_rw_mix=read-only
2400 else
2401 gcc_cv_ld_ro_rw_mix=read-write
2402 fi
2403 fi
2404 fi
2405changequote(,)dnl
2406 rm -f conftest.* conftest[123].*
2407changequote([,])dnl
2408fi
2409if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2410 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2411 [Define if your linker links a mix of read-only
2412 and read-write sections into a read-write section.])
2413fi
2414AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2415
8ada417f
ZW
2416# Check if we have .[us]leb128, and support symbol arithmetic with it.
2417gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2418 [elf,2,11,0],,
2419[ .data
b7460f24
RH
2420 .uleb128 L2 - L1
2421L1:
2422 .uleb128 1280
2423 .sleb128 -1010
8ada417f 2424L2:],
e5dfb95f 2425[[# GAS versions before 2.11 do not support uleb128,
8ada417f
ZW
2426 # despite appearing to.
2427 # ??? There exists an elf-specific test that will crash
2428 # the assembler. Perhaps it's better to figure out whether
2429 # arbitrary sections are supported and try the test.
bace148a 2430 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
8ada417f 2431 if echo "$as_ver" | grep GNU > /dev/null; then
ddcd0f6f 2432 as_vers=`echo $as_ver | sed -n \
115e6e55 2433 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
ddcd0f6f
BS
2434 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2435 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
8ada417f
ZW
2436 if test $as_major -eq 2 && test $as_minor -lt 11
2437 then :
2438 else gcc_cv_as_leb128=yes
2439 fi
e5dfb95f 2440 fi]],
8ada417f
ZW
2441 [AC_DEFINE(HAVE_AS_LEB128, 1,
2442 [Define if your assembler supports .sleb128 and .uleb128.])])
2443
d4ea4622
RH
2444# Check if we have assembler support for unwind directives.
2445gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
6e60703f 2446 ,,
d4ea4622
RH
2447[ .text
2448 .cfi_startproc
2449 .cfi_offset 0, 0
2450 .cfi_same_value 1
2451 .cfi_def_cfa 1, 2
2452 .cfi_escape 1, 2, 3, 4, 5
e73da78e
RO
2453 .cfi_endproc],
2454[case "$target" in
2455 *-*-solaris*)
2456 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2457 # read-only and read-write sections, we need to make sure that the
2458 # assembler used emits read-write .eh_frame sections.
2459 if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2460 if test "x$gcc_cv_objdump" != x; then
2461 if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2462 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2463 gcc_cv_as_cfi_directive=no
2464 else
eb2573ee 2465 case "$target" in
fbdd5d87 2466 i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
eb2573ee
RO
2467 # On Solaris/x86, make sure that GCC and gas agree on using
2468 # read-only .eh_frame sections for 64-bit.
2469 if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2470 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2471 sed -e /.eh_frame/!d -e N | \
2472 grep READONLY > /dev/null; then
2473 gcc_cv_as_cfi_directive=yes
2474 else
2475 gcc_cv_as_cfi_directive=no
2476 fi
2477 ;;
2478 *)
2479 gcc_cv_as_cfi_directive=yes
2480 ;;
2481 esac
e73da78e
RO
2482 fi
2483 else
2484 # no objdump, err on the side of caution
2485 gcc_cv_as_cfi_directive=no
2486 fi
2487 else
2488 gcc_cv_as_cfi_directive=yes
2489 fi
2490 ;;
2491 *-*-*)
2492 gcc_cv_as_cfi_directive=yes
2493 ;;
2494esac])
92053f38 2495if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
6e97481b
JJ
2496gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2497 ,,
2498[ .text
2499 .cfi_startproc
2500 .cfi_adjust_cfa_offset 64
7ac22e17 2501 .skip 75040, 0
6e97481b
JJ
2502 .cfi_adjust_cfa_offset 128
2503 .cfi_endproc],
e5dfb95f 2504[[
92053f38 2505if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
7ac22e17 2506 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
6e97481b
JJ
2507 gcc_cv_as_cfi_advance_working=yes
2508fi
e5dfb95f 2509]])
6e97481b 2510else
92053f38 2511 # no objdump, err on the side of caution
66f91112 2512 gcc_cv_as_cfi_advance_working=no
6e97481b 2513fi
174425ad 2514GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
d4ea4622 2515AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
6e97481b
JJ
2516 [`if test $gcc_cv_as_cfi_directive = yes \
2517 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
058514b3
RH
2518 [Define 0/1 if your assembler supports CFI directives.])
2519
174425ad 2520GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
058514b3 2521gcc_GAS_CHECK_FEATURE([cfi personality directive],
6e60703f 2522 gcc_cv_as_cfi_personality_directive, ,,
058514b3 2523[ .text
042628f9 2524 .cfi_startproc
058514b3
RH
2525 .cfi_personality 0, symbol
2526 .cfi_endproc])
2527AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2528 [`if test $gcc_cv_as_cfi_personality_directive = yes;
2529 then echo 1; else echo 0; fi`],
2530 [Define 0/1 if your assembler supports .cfi_personality.])
d4ea4622 2531
7d45fb94
JJ
2532gcc_GAS_CHECK_FEATURE([cfi sections directive],
2533 gcc_cv_as_cfi_sections_directive, ,,
2534[ .text
2535 .cfi_sections .debug_frame, .eh_frame
2536 .cfi_startproc
92053f38
RH
2537 .cfi_endproc],
2538[case $target_os in
2539 win32 | pe | cygwin* | mingw32* | uwin*)
2540 # Need to check that we generated the correct relocation for the
2541 # .debug_frame section. This was fixed for binutils 2.21.
2542 gcc_cv_as_cfi_sections_directive=no
2543 if test "x$gcc_cv_objdump" != x; then
2544 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2545 grep secrel > /dev/null; then
2546 gcc_cv_as_cfi_sections_directive=yes
2547 fi
2548 fi
2549 ;;
2550 *)
2551 gcc_cv_as_cfi_sections_directive=yes
2552 ;;
2553esac])
174425ad 2554GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
7d45fb94
JJ
2555AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2556 [`if test $gcc_cv_as_cfi_sections_directive = yes;
2557 then echo 1; else echo 0; fi`],
2558 [Define 0/1 if your assembler supports .cfi_sections.])
2559
8ada417f
ZW
2560# GAS versions up to and including 2.11.0 may mis-optimize
2561# .eh_frame data.
2562gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2563 [elf,2,12,0],,
2564[ .text
c64688ae
RH
2565.LFB1:
2566 .4byte 0
2567.L1:
2568 .4byte 0
2569.LFE1:
2570 .section .eh_frame,"aw",@progbits
2571__FRAME_BEGIN__:
2572 .4byte .LECIE1-.LSCIE1
2573.LSCIE1:
2574 .4byte 0x0
2575 .byte 0x1
2576 .ascii "z\0"
2577 .byte 0x1
2578 .byte 0x78
2579 .byte 0x1a
2580 .byte 0x0
2581 .byte 0x4
2582 .4byte 1
2583 .p2align 1
2584.LECIE1:
2585.LSFDE1:
2586 .4byte .LEFDE1-.LASFDE1
2587.LASFDE1:
2588 .4byte .LASFDE1-__FRAME_BEGIN__
2589 .4byte .LFB1
2590 .4byte .LFE1-.LFB1
2591 .byte 0x4
2592 .4byte .LFE1-.LFB1
2593 .byte 0x4
2594 .4byte .L1-.LFB1
8ada417f 2595.LEFDE1:],
ba479fd2
NN
2596[ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2597cat > conftest.lit <<EOF
c64688ae
RH
2598 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2599 0010 01000000 12000000 18000000 00000000 ................
ba479fd2 2600 0020 08000000 04080000 0044 .........D @&t@
01efb963 2601EOF
ba479fd2 2602cat > conftest.big <<EOF
01efb963
AS
2603 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2604 0010 00000001 00000012 00000018 00000000 ................
ba479fd2 2605 0020 00000008 04000000 0844 .........D @&t@
c64688ae 2606EOF
8ada417f
ZW
2607 # If the assembler didn't choke, and we can objdump,
2608 # and we got the correct data, then succeed.
dbc02e7f
AS
2609 # The text in the here-document typically retains its unix-style line
2610 # endings, while the output of objdump will use host line endings.
2611 # Therefore, use diff -b for the comparisons.
8ada417f
ZW
2612 if test x$gcc_cv_objdump != x \
2613 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2614 | tail -3 > conftest.got \
dbc02e7f
AS
2615 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2616 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
8ada417f
ZW
2617 then
2618 gcc_cv_as_eh_frame=yes
2619 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2620 gcc_cv_as_eh_frame=buggy
2621 else
2622 # Uh oh, what do we do now?
2623 gcc_cv_as_eh_frame=no
2624 fi])
2625
2626if test $gcc_cv_as_eh_frame = buggy; then
2627 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2628 [Define if your assembler mis-optimizes .eh_frame data.])
201556f0 2629fi
201556f0 2630
8ada417f
ZW
2631gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2632 [elf,2,12,0], [--fatal-warnings],
5d4856a0 2633 [.section .rodata.str, "aMS", @progbits, 1])
c18a5b6c
MM
2634if test $gcc_cv_as_shf_merge = no; then
2635 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2636 [elf,2,12,0], [--fatal-warnings],
2637 [.section .rodata.str, "aMS", %progbits, 1])
2638fi
5d4856a0
RO
2639AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2640 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2641[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
8ada417f 2642
2ca48caa
RO
2643gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2644 gcc_cv_as_comdat_group,
11176d2a 2645 [elf,2,16,0], [--fatal-warnings],
c18a5b6c
MM
2646 [.section .text,"axG",@progbits,.foo,comdat])
2647if test $gcc_cv_as_comdat_group = yes; then
2648 gcc_cv_as_comdat_group_percent=no
2ca48caa 2649 gcc_cv_as_comdat_group_group=no
c18a5b6c 2650else
2ca48caa
RO
2651 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2652 gcc_cv_as_comdat_group_percent,
11176d2a 2653 [elf,2,16,0], [--fatal-warnings],
c18a5b6c 2654 [.section .text,"axG",%progbits,.foo,comdat])
2ca48caa
RO
2655 if test $gcc_cv_as_comdat_group_percent = yes; then
2656 gcc_cv_as_comdat_group_group=no
2657 else
2658 case "${target}" in
2659 # Sun as uses a completely different syntax.
2660 *-*-solaris2*)
2661 case "${target}" in
2662 sparc*-*-solaris2*)
2663 conftest_s='
2664 .group foo,".text%foo",#comdat
2665 .section ".text%foo", #alloc,#execinstr,#progbits
2666 .globl foo
2667 foo:
2668 '
2669 ;;
fbdd5d87 2670 i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2ca48caa
RO
2671 conftest_s='
2672 .group foo,.text%foo,#comdat
2673 .section .text%foo, "ax", @progbits
2674 .globl foo
2675 foo:
2676 '
2677 ;;
2678 esac
2679 gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2680 gcc_cv_as_comdat_group_group,
2681 ,, [$conftest_s])
2682 ;;
2683 esac
2684 fi
c18a5b6c 2685fi
1dcc82c2
DK
2686if test x"$ld_is_gold" = xyes; then
2687 comdat_group=yes
2688elif test $in_tree_ld = yes ; then
39ba7b7d
JB
2689 comdat_group=no
2690 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 \
2691 && test $in_tree_ld_is_elf = yes; then
2692 comdat_group=yes
2693 fi
55c4f715 2694elif echo "$ld_ver" | grep GNU > /dev/null; then
11176d2a
JB
2695 comdat_group=yes
2696 if test 0"$ld_date" -lt 20050308; then
2697 if test -n "$ld_date"; then
2698 # If there was date string, but was earlier than 2005-03-08, fail
2699 comdat_group=no
2700 elif test "$ld_vers_major" -lt 2; then
2701 comdat_group=no
2702 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2703 comdat_group=no
2704 fi
2705 fi
1cf0118d 2706else
55c4f715
RO
2707changequote(,)dnl
2708 case "${target}" in
2709 *-*-solaris2.1[1-9]*)
2ca48caa 2710 comdat_group=no
55c4f715
RO
2711 # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2712 # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2713 # version 1.688.
2714 #
2ca48caa
RO
2715 # If using Sun as for COMDAT group as emitted by GCC, one needs at
2716 # least ld version 1.2267.
2717 if test "$ld_vers_major" -gt 1; then
55c4f715 2718 comdat_group=yes
2ca48caa
RO
2719 elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2720 comdat_group=yes
2721 elif test "$ld_vers_minor" -ge 2267; then
2722 comdat_group=yes
55c4f715
RO
2723 fi
2724 ;;
2725 *)
2726 # Assume linkers other than GNU ld don't support COMDAT group.
2727 comdat_group=no
2728 ;;
2729 esac
2730changequote([,])dnl
1cf0118d 2731fi
55c4f715
RO
2732# Allow overriding the automatic COMDAT group tests above.
2733AC_ARG_ENABLE(comdat,
2734 [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2735 [comdat_group="$enable_comdat"])
1cf0118d
RO
2736if test $comdat_group = no; then
2737 gcc_cv_as_comdat_group=no
2738 gcc_cv_as_comdat_group_percent=no
2ca48caa 2739 gcc_cv_as_comdat_group_group=no
11176d2a
JB
2740fi
2741AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2ca48caa
RO
2742 [`if test $gcc_cv_as_comdat_group = yes \
2743 || test $gcc_cv_as_comdat_group_percent = yes \
2744 || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
11176d2a 2745[Define 0/1 if your assembler and linker support COMDAT groups.])
c18a5b6c 2746
6c52e687
CC
2747gcc_GAS_CHECK_FEATURE([line table discriminator support],
2748 gcc_cv_as_discriminator,
2749 [2,19,51],,
2750[ .text
2751 .file 1 "conf.c"
2752 .loc 1 1 0 discriminator 1],,
2753[AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2754 [Define if your assembler supports the .loc discriminator sub-directive.])])
2755
6a7a462c 2756# Thread-local storage - the check is heavily parameterized.
f996902d
RH
2757conftest_s=
2758tls_first_major=
2759tls_first_minor=
9739c90c 2760tls_as_opt=
f996902d
RH
2761case "$target" in
2762changequote(,)dnl
6f9b006d
RH
2763 alpha*-*-*)
2764 conftest_s='
2765 .section ".tdata","awT",@progbits
2766foo: .long 25
2767 .text
2768 ldq $27,__tls_get_addr($29) !literal!1
2769 lda $16,foo($29) !tlsgd!1
2770 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2771 ldq $27,__tls_get_addr($29) !literal!2
2772 lda $16,foo($29) !tlsldm!2
2773 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2774 ldq $1,foo($29) !gotdtprel
2775 ldah $2,foo($29) !dtprelhi
2776 lda $3,foo($2) !dtprello
2777 lda $4,foo($29) !dtprel
2778 ldq $1,foo($29) !gottprel
2779 ldah $2,foo($29) !tprelhi
2780 lda $3,foo($2) !tprello
2781 lda $4,foo($29) !tprel'
2782 tls_first_major=2
2783 tls_first_minor=13
2f3321ca 2784 tls_as_opt=--fatal-warnings
6f9b006d 2785 ;;
ad9646c7
HPN
2786 cris-*-*|crisv32-*-*)
2787 conftest_s='
2788 .section ".tdata","awT",@progbits
2789x: .long 25
2790 .text
2791 move.d x:IE,$r10
2792 nop'
2793 tls_first_major=2
2794 tls_first_minor=20
2795 tls_as_opt=--fatal-warnings
2796 ;;
e4dd71de
AH
2797 frv*-*-*)
2798 conftest_s='
2799 .section ".tdata","awT",@progbits
2800x: .long 25
2801 .text
2802 call #gettlsoff(x)'
2803 tls_first_major=2
2804 tls_first_minor=14
2805 ;;
51076f96
RC
2806 hppa*-*-linux*)
2807 conftest_s='
2808t1: .reg %r20
2809t2: .reg %r21
2810gp: .reg %r19
2811 .section ".tdata","awT",@progbits
2812foo: .long 25
2813 .text
2814 .align 4
2815 addil LT%foo-$tls_gdidx$,gp
2816 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2817 b __tls_get_addr
2818 nop
2819 addil LT%foo-$tls_ldidx$,gp
2820 b __tls_get_addr
2821 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2822 addil LR%foo-$tls_dtpoff$,%ret0
2823 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2824 mfctl %cr27,%t1
2825 addil LT%foo-$tls_ieoff$,gp
2826 ldw RT%foo-$tls_ieoff$(%r1),%t2
2827 add %t1,%t2,%t3
2828 mfctl %cr27,%t1
2829 addil LR%foo-$tls_leoff$,%t1
2830 ldo RR%foo-$tls_leoff$(%r1),%t2'
2831 tls_first_major=2
2832 tls_first_minor=15
2833 tls_as_opt=--fatal-warnings
2834 ;;
d3585b76
DJ
2835 arm*-*-*)
2836 conftest_s='
2837 .section ".tdata","awT",%progbits
2838foo: .long 25
2839 .text
2840.word foo(gottpoff)
2841.word foo(tpoff)
2842.word foo(tlsgd)
2843.word foo(tlsldm)
2844.word foo(tlsldo)'
2845 tls_first_major=2
2846 tls_first_minor=17
2847 ;;
fbdd5d87 2848 i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
f1c26cad 2849 case "$target" in
f1c26cad
RO
2850 i[34567]86-*-solaris2.*)
2851 on_solaris=yes
16c9d3b1 2852 tga_func=___tls_get_addr
f1c26cad 2853 ;;
fbdd5d87
RO
2854 x86_64-*-solaris2.1[0-9]*)
2855 on_solaris=yes
2856 tga_func=__tls_get_addr
2857 ;;
f1c26cad
RO
2858 *)
2859 on_solaris=no
2860 ;;
2861 esac
2862 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2863 conftest_s='
2864 .section .tdata,"awt",@progbits'
2865 tls_first_major=0
2866 tls_first_minor=0
2867changequote([,])dnl
2868 AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
2869[Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
2870changequote(,)dnl
2871 else
2872 conftest_s='
2873 .section ".tdata","awT",@progbits'
2874 tls_first_major=2
2875 tls_first_minor=14
2876 tls_as_opt="--fatal-warnings"
2877 fi
2878 conftest_s="$conftest_s
f996902d
RH
2879foo: .long 25
2880 .text
2881 movl %gs:0, %eax
f1c26cad
RO
2882 leal foo@tlsgd(,%ebx,1), %eax
2883 leal foo@tlsldm(%ebx), %eax
2884 leal foo@dtpoff(%eax), %edx
2885 movl foo@gottpoff(%ebx), %eax
2886 subl foo@gottpoff(%ebx), %eax
2887 addl foo@gotntpoff(%ebx), %eax
2888 movl foo@indntpoff, %eax
2889 movl \$foo@tpoff, %eax
2890 subl \$foo@tpoff, %eax
2891 leal foo@ntpoff(%ecx), %eax"
2892 ;;
75d38379
JJ
2893 x86_64-*-*)
2894 conftest_s='
2895 .section ".tdata","awT",@progbits
2896foo: .long 25
2897 .text
2898 movq %fs:0, %rax
2899 leaq foo@TLSGD(%rip), %rdi
2900 leaq foo@TLSLD(%rip), %rdi
2901 leaq foo@DTPOFF(%rax), %rdx
2902 movq foo@GOTTPOFF(%rip), %rax
2903 movq $foo@TPOFF, %rax'
2904 tls_first_major=2
2905 tls_first_minor=14
2f3321ca 2906 tls_as_opt=--fatal-warnings
f996902d 2907 ;;
7b6e506e
RH
2908 ia64-*-*)
2909 conftest_s='
2910 .section ".tdata","awT",@progbits
2911foo: data8 25
2912 .text
2913 addl r16 = @ltoff(@dtpmod(foo#)), gp
2914 addl r17 = @ltoff(@dtprel(foo#)), gp
2915 addl r18 = @ltoff(@tprel(foo#)), gp
2916 addl r19 = @dtprel(foo#), gp
2917 adds r21 = @dtprel(foo#), r13
2918 movl r23 = @dtprel(foo#)
2919 addl r20 = @tprel(foo#), gp
2920 adds r22 = @tprel(foo#), r13
2921 movl r24 = @tprel(foo#)'
2922 tls_first_major=2
2923 tls_first_minor=13
2f3321ca 2924 tls_as_opt=--fatal-warnings
7b6e506e 2925 ;;
69229b81
DJ
2926 mips*-*-*)
2927 conftest_s='
2928 .section .tdata,"awT",@progbits
2929x:
2930 .word 2
2931 .text
2932 addiu $4, $28, %tlsgd(x)
2933 addiu $4, $28, %tlsldm(x)
2934 lui $4, %dtprel_hi(x)
2935 addiu $4, $4, %dtprel_lo(x)
2936 lw $4, %gottprel(x)($28)
2937 lui $4, %tprel_hi(x)
2938 addiu $4, $4, %tprel_lo(x)'
2939 tls_first_major=2
2940 tls_first_minor=16
2941 tls_as_opt='-32 --fatal-warnings'
2942 ;;
75df395f
MK
2943 m68k-*-*)
2944 conftest_s='
2945 .section .tdata,"awT",@progbits
2946x:
2947 .word 2
2948 .text
2949foo:
2950 move.l x@TLSGD(%a5),%a0
2951 move.l x@TLSLDM(%a5),%a0
2952 move.l x@TLSLDO(%a5),%a0
2953 move.l x@TLSIE(%a5),%a0
2954 move.l x@TLSLE(%a5),%a0'
2955 tls_first_major=2
2956 tls_first_minor=19
2957 tls_as_opt='--fatal-warnings'
2958 ;;
c4501e62
JJ
2959 powerpc-*-*)
2960 conftest_s='
2961 .section ".tdata","awT",@progbits
2962 .align 2
2963ld0: .space 4
2964ld1: .space 4
2965x1: .space 4
2966x2: .space 4
2967x3: .space 4
2968 .text
2969 addi 3,31,ld0@got@tlsgd
2970 bl __tls_get_addr
2971 addi 3,31,x1@got@tlsld
2972 bl __tls_get_addr
2973 addi 9,3,x1@dtprel
2974 addis 9,3,x2@dtprel@ha
2975 addi 9,9,x2@dtprel@l
2976 lwz 9,x3@got@tprel(31)
2977 add 9,9,x@tls
2978 addi 9,2,x1@tprel
2979 addis 9,2,x2@tprel@ha
2980 addi 9,9,x2@tprel@l'
2981 tls_first_major=2
2982 tls_first_minor=14
2f3321ca 2983 tls_as_opt="-a32 --fatal-warnings"
c4501e62
JJ
2984 ;;
2985 powerpc64-*-*)
2986 conftest_s='
2987 .section ".tdata","awT",@progbits
2988 .align 3
2989ld0: .space 8
2990ld1: .space 8
2991x1: .space 8
2992x2: .space 8
2993x3: .space 8
2994 .text
2995 addi 3,2,ld0@got@tlsgd
2996 bl .__tls_get_addr
2997 nop
2998 addi 3,2,ld1@toc
2999 bl .__tls_get_addr
3000 nop
3001 addi 3,2,x1@got@tlsld
3002 bl .__tls_get_addr
3003 nop
3004 addi 9,3,x1@dtprel
3005 bl .__tls_get_addr
3006 nop
3007 addis 9,3,x2@dtprel@ha
3008 addi 9,9,x2@dtprel@l
3009 bl .__tls_get_addr
3010 nop
3011 ld 9,x3@got@dtprel(2)
3012 add 9,9,3
3013 bl .__tls_get_addr
3014 nop'
3015 tls_first_major=2
3016 tls_first_minor=14
2f3321ca 3017 tls_as_opt="-a64 --fatal-warnings"
c4501e62 3018 ;;
fd3cd001
UW
3019 s390-*-*)
3020 conftest_s='
3021 .section ".tdata","awT",@progbits
3022foo: .long 25
3023 .text
3024 .long foo@TLSGD
3025 .long foo@TLSLDM
3026 .long foo@DTPOFF
3027 .long foo@NTPOFF
3028 .long foo@GOTNTPOFF
3029 .long foo@INDNTPOFF
3030 l %r1,foo@GOTNTPOFF(%r12)
3031 l %r1,0(%r1):tls_load:foo
3032 bas %r14,0(%r1,%r13):tls_gdcall:foo
3033 bas %r14,0(%r1,%r13):tls_ldcall:foo'
3034 tls_first_major=2
3035 tls_first_minor=14
2f3321ca 3036 tls_as_opt="-m31 --fatal-warnings"
fd3cd001
UW
3037 ;;
3038 s390x-*-*)
3039 conftest_s='
3040 .section ".tdata","awT",@progbits
3041foo: .long 25
3042 .text
3043 .quad foo@TLSGD
3044 .quad foo@TLSLDM
3045 .quad foo@DTPOFF
3046 .quad foo@NTPOFF
3047 .quad foo@GOTNTPOFF
3048 lg %r1,foo@GOTNTPOFF(%r12)
3049 larl %r1,foo@INDNTPOFF
3050 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
3051 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3052 tls_first_major=2
3053 tls_first_minor=14
2f3321ca 3054 tls_as_opt="-m64 -Aesame --fatal-warnings"
fd3cd001 3055 ;;
9ff13962
KK
3056 sh-*-* | sh[34]-*-*)
3057 conftest_s='
3058 .section ".tdata","awT",@progbits
3059foo: .long 25
3060 .text
3061 .long foo@TLSGD
3062 .long foo@TLSLDM
3063 .long foo@DTPOFF
3064 .long foo@GOTTPOFF
3065 .long foo@TPOFF'
3066 tls_first_major=2
3067 tls_first_minor=13
2f3321ca 3068 tls_as_opt=--fatal-warnings
9ff13962 3069 ;;
5751a10b 3070 sparc*-*-*)
2f3321ca
EB
3071 case "$target" in
3072 sparc*-sun-solaris2.*)
3073 on_solaris=yes
16c9d3b1 3074 tga_func=__tls_get_addr
2f3321ca
EB
3075 ;;
3076 *)
3077 on_solaris=no
3078 ;;
3079 esac
3080 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3081 conftest_s='
16c9d3b1 3082 .section ".tdata",#alloc,#write,#tls'
2f3321ca
EB
3083 tls_first_major=0
3084 tls_first_minor=0
3085 else
3086 conftest_s='
16c9d3b1
RO
3087 .section ".tdata","awT",@progbits'
3088 tls_first_major=2
3089 tls_first_minor=14
3090 tls_as_opt="-32 --fatal-warnings"
3091 fi
3092 conftest_s="$conftest_s
5751a10b
JJ
3093foo: .long 25
3094 .text
3095 sethi %tgd_hi22(foo), %o0
3096 add %o0, %tgd_lo10(foo), %o1
3097 add %l7, %o1, %o0, %tgd_add(foo)
3098 call __tls_get_addr, %tgd_call(foo)
3099 sethi %tldm_hi22(foo), %l1
3100 add %l1, %tldm_lo10(foo), %l2
3101 add %l7, %l2, %o0, %tldm_add(foo)
3102 call __tls_get_addr, %tldm_call(foo)
3103 sethi %tldo_hix22(foo), %l3
3104 xor %l3, %tldo_lox10(foo), %l4
3105 add %o0, %l4, %l5, %tldo_add(foo)
3106 sethi %tie_hi22(foo), %o3
3107 add %o3, %tie_lo10(foo), %o3
3108 ld [%l7 + %o3], %o2, %tie_ld(foo)
3109 add %g7, %o2, %o4, %tie_add(foo)
3110 sethi %tle_hix22(foo), %l1
3111 xor %l1, %tle_lox10(foo), %o5
16c9d3b1 3112 ld [%g7 + %o5], %o1"
5751a10b 3113 ;;
6a7a462c
BW
3114 xtensa*-*-*)
3115 conftest_s='
3116 .section ".tdata","awT",@progbits
3117foo: .long 25
3118 .text
3119 movi a8, foo@TLSFUNC
3120 movi a10, foo@TLSARG
3121 callx8.tls a8, foo@TLSCALL'
3122 tls_first_major=2
3123 tls_first_minor=19
3124 ;;
5751a10b 3125changequote([,])dnl
f996902d 3126esac
8dea1cca
DD
3127set_have_as_tls=no
3128if test "x$enable_tls" = xno ; then
3129 : # TLS explicitly disabled.
3130elif test "x$enable_tls" = xyes ; then
3131 set_have_as_tls=yes # TLS explicitly enabled.
3132elif test -z "$tls_first_major"; then
8ada417f
ZW
3133 : # If we don't have a check, assume no support.
3134else
3135 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2f3321ca 3136 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
8dea1cca
DD
3137 [set_have_as_tls=yes])
3138fi
16c9d3b1 3139case "$target" in
23d50abb
RO
3140 *-*-irix6*)
3141 # IRIX 6.5 rld and libc.so lack TLS support, so even if gas and gld
3142 # with TLS support are in use, native TLS cannot work.
3143 set_have_as_tls=no
3144 ;;
3145 *-*-osf*)
3146 # Tru64 UNIX loader and libc.so lack TLS support, so even if gas and
3147 # gld with TLS support are in use, native TLS cannot work.
3148 set_have_as_tls=no
3149 ;;
16c9d3b1
RO
3150 # TLS was introduced in the Solaris 9 FCS release and backported to
3151 # Solaris 8 patches. Support for GNU-style TLS on x86 was only
3152 # introduced in Solaris 9 4/04, replacing the earlier Sun style that Sun
3153 # ld and GCC don't support any longer.
3154 *-*-solaris2.*)
3155 AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3156 ld_tls_support=no
3157 # Check ld and ld.so.1 TLS support.
3158 if echo "$ld_ver" | grep GNU > /dev/null; then
3159 # Assume all interesting versions of GNU ld have TLS support.
3160 # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3161 ld_tls_support=yes
3162 else
3163 case "$target" in
3164 # Solaris 8/x86 ld has GNU style TLS support since version 1.280.
3165 i?86-*-solaris2.8)
3166 min_tls_ld_vers_minor=280
3167 ;;
3168 # Solaris 8/SPARC ld has TLS support since version 1.272.
3169 sparc*-*-solaris2.8)
3170 min_tls_ld_vers_minor=272
3171 ;;
3172 # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3173 i?86-*-solaris2.9)
3174 min_tls_ld_vers_minor=374
3175 ;;
3176 # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3177 sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3178 min_tls_ld_vers_minor=343
3179 ;;
3180 esac
2b48f20d 3181 if test "$ld_vers_major" -gt 1 || \
16c9d3b1
RO
3182 test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3183 ld_tls_support=yes
3184 else
3185 set_have_as_tls=no
3186 fi
3187 fi
3188 AC_MSG_RESULT($ld_tls_support)
3189
3190 save_LIBS="$LIBS"
3191 save_LDFLAGS="$LDFLAGS"
3192 LIBS=
3193 LDFLAGS=
3194
3195 AC_MSG_CHECKING(alternate thread library)
3196 case "$target" in
3197 # TLS support was backported to Solaris 8 patches, but only lives in
3198 # the alternate thread library which became the default in Solaris 9.
3199 # We want to always use that, irrespective of TLS support.
3200 *-*-solaris2.8)
3201 # Take multilib subdir into account. There's no spec to handle
3202 # this. The 64 symlink exists since Solaris 8.
3203 lwp_dir=/usr/lib/lwp
3204 lwp_spec="-L$lwp_dir%{m64:/64} -R$lwp_dir%{m64:/64}"
3205 LDFLAGS="-L$lwp_dir -R$lwp_dir"
3206 ;;
3207 *-*-solaris2*)
3208 lwp_dir="none"
3209 lwp_spec=""
3210 ;;
3211 esac
3212 # Always define LIB_THREAD_LDFLAGS_SPEC, even without TLS support.
3213 AC_DEFINE_UNQUOTED(LIB_THREAD_LDFLAGS_SPEC, "$lwp_spec",
3214 [Define to the linker flags to use for -pthread.])
3215 AC_MSG_RESULT($lwp_dir)
3216
3217 AC_MSG_CHECKING(library containing $tga_func)
3218 # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3219 # (32-bit x86) only lived in libthread, so check for that. Keep
3220 # set_have_as_tls if found, disable if not.
3221 AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3222 # Clear LIBS if we cannot support TLS.
3223 if test $set_have_as_tls = no; then
3224 LIBS=
3225 fi
3226 # Always define LIB_TLS_SPEC, even without TLS support.
3227 AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3228 [Define to the library containing __tls_get_addr/___tls_get_addr.])
3229 AC_MSG_RESULT($LIBS)
3230
3231 LIBS="$save_LIBS"
3232 LDFLAGS="$save_LDFLAGS"
3233 ;;
3234esac
8dea1cca
DD
3235if test $set_have_as_tls = yes ; then
3236 AC_DEFINE(HAVE_AS_TLS, 1,
16c9d3b1 3237 [Define if your assembler and linker support thread-local storage.])
f996902d 3238fi
8ada417f
ZW
3239
3240# Target-specific assembler checks.
f996902d 3241
7e9d8517
L
3242AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3243gcc_cv_ld_static_dynamic=no
c6092243
RO
3244gcc_cv_ld_static_option='-Bstatic'
3245gcc_cv_ld_dynamic_option='-Bdynamic'
7e9d8517 3246if test $in_tree_ld = yes ; then
83f0ccb8 3247 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; then
7e9d8517
L
3248 gcc_cv_ld_static_dynamic=yes
3249 fi
3250elif test x$gcc_cv_ld != x; then
bb127cd8
RO
3251 # Check if linker supports -Bstatic/-Bdynamic option
3252 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3253 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3254 gcc_cv_ld_static_dynamic=yes
3255 else
3256 case "$target" in
c6092243
RO
3257 # Tru64 UNIX support -noso/-so_archive instead of -Bstatic/-Bdynamic.
3258 alpha*-dec-osf*)
3259 gcc_cv_ld_static_dynamic=yes
3260 gcc_cv_ld_static_option="-noso"
3261 gcc_cv_ld_dynamic_option="-so_archive"
3262 ;;
f903e000
SE
3263 # HP-UX ld uses -a flags to select between shared and archive.
3264 *-*-hpux*)
3265 if test x"$gnu_ld" = xno; then
3266 gcc_cv_ld_static_dynamic=yes
3267 gcc_cv_ld_static_option="-aarchive_shared"
3268 gcc_cv_ld_dynamic_option="-adefault"
3269 fi
3270 ;;
c9f58b9a
RO
3271 # IRIX 6 ld supports -Bstatic/-Bdynamic.
3272 mips-sgi-irix6*)
3273 gcc_cv_ld_static_dynamic=yes
3274 ;;
bb127cd8
RO
3275 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3276 *-*-solaris2*)
3277 gcc_cv_ld_static_dynamic=yes
3278 ;;
3279 esac
3280 fi
7e9d8517
L
3281fi
3282if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3283 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
c6092243
RO
3284[Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3285 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3286[Define to the linker option to disable use of shared objects.])
3287 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3288[Define to the linker option to enable use of shared objects.])
7e9d8517
L
3289fi
3290AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3291
d594623a
L
3292if test x"$demangler_in_ld" = xyes; then
3293 AC_MSG_CHECKING(linker --demangle support)
3294 gcc_cv_ld_demangle=no
3295 if test $in_tree_ld = yes; then
3296 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 \
3297 gcc_cv_ld_demangle=yes
3298 fi
3299 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3300 # Check if the GNU linker supports --demangle option
3301 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3302 gcc_cv_ld_demangle=yes
3303 fi
3304 fi
3305 if test x"$gcc_cv_ld_demangle" = xyes; then
3306 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3307[Define if your linker supports --demangle option.])
3308 fi
3309 AC_MSG_RESULT($gcc_cv_ld_demangle)
3310fi
3311
96bdf9b4 3312AC_MSG_CHECKING(linker plugin support)
55b46574 3313gcc_cv_lto_plugin=0
f3d533d3 3314if test -f liblto_plugin.la; then
df33b41f
RO
3315 save_ld_ver="$ld_ver"
3316 save_ld_vers_major="$ld_vers_major"
3317 save_ld_vers_minor="$ld_vers_minor"
3318 save_ld_is_gold="$ld_is_gold"
3319
3320 ld_is_gold=no
55b46574 3321
df33b41f
RO
3322 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3323 ld_ver="GNU ld"
3324 # FIXME: ld_is_gold?
3325 ld_vers_major="$gcc_cv_gld_major_version"
3326 ld_vers_minor="$gcc_cv_gld_minor_version"
3327 else
3328 # Determine plugin linker version.
3329 # FIXME: Partial duplicate from above, generalize.
3330changequote(,)dnl
3331 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3332 if echo "$ld_ver" | grep GNU > /dev/null; then
3333 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3334 ld_is_gold=yes
3335 ld_vers=`echo $ld_ver | sed -n \
3336 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3337 else
3338 ld_vers=`echo $ld_ver | sed -n \
3339 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3340 fi
3341 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3342 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
55b46574 3343 fi
df33b41f
RO
3344changequote([,])dnl
3345 fi
3346
3347 # Determine plugin support.
3348 if echo "$ld_ver" | grep GNU > /dev/null; then
55b46574
RO
3349 # Require GNU ld or gold 2.21+ for plugin support by default.
3350 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3351 gcc_cv_lto_plugin=2
3352 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3353 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3354 gcc_cv_lto_plugin=1
96bdf9b4 3355 fi
96bdf9b4 3356 fi
df33b41f
RO
3357
3358 ld_ver="$save_ld_ver"
3359 ld_vers_major="$save_ld_vers_major"
3360 ld_vers_minor="$save_ld_vers_minor"
3361 ld_is_gold="$save_ld_is_gold"
96bdf9b4 3362fi
55b46574
RO
3363AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3364 [Define to the level of your linker's plugin support.])
96bdf9b4
JH
3365AC_MSG_RESULT($gcc_cv_lto_plugin)
3366
275b60d6 3367case "$target" in
3a37b08e
RH
3368 # All TARGET_ABI_OSF targets.
3369 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
8ada417f
ZW
3370 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3371 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3372[ .set nomacro
3a37b08e
RH
3373 .text
3374 extbl $3, $2, $3 !lituse_bytoff!1
3375 ldq $2, a($29) !literal!1
3376 ldq $4, b($29) !literal!2
3377 ldq_u $3, 0($2) !lituse_base!1
3378 ldq $27, f($29) !literal!5
3379 jsr $26, ($27), f !lituse_jsr!5
3380 ldah $29, 0($26) !gpdisp!3
3381 lda $0, c($29) !gprel
3382 ldah $1, d($29) !gprelhigh
3383 lda $1, d($1) !gprellow
8ada417f
ZW
3384 lda $29, 0($29) !gpdisp!3],,
3385 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3386 [Define if your assembler supports explicit relocations.])])
d006f5eb
RH
3387 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3388 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3389[ .set nomacro
3390 .text
3391 ldq $27, a($29) !literal!1
3392 jsr $26, ($27), a !lituse_jsrdirect!1],,
3393 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3394 [Define if your assembler supports the lituse_jsrdirect relocation.])])
3a37b08e 3395 ;;
e95b1e6a 3396
682a45fc
HPN
3397 cris-*-*)
3398 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3399 gcc_cv_as_cris_no_mul_bug,[2,15,91],
3400 [-no-mul-bug-abort], [.text],,
3401 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3402 [Define if your assembler supports the -no-mul-bug-abort option.])])
3403 ;;
3404
8ada417f
ZW
3405 sparc*-*-*)
3406 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3407 [.register %g2, #scratch],,
3408 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3409 [Define if your assembler supports .register.])])
3410
3411 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3412 [-relax], [.text],,
3413 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3414 [Define if your assembler supports -relax option.])])
3415
878ee0ab
DM
3416 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3417 gcc_cv_as_sparc_gotdata_op,,
3418 [-K PIC],
3419[.text
6d7b45ad 3420.align 4
878ee0ab
DM
3421foo:
3422 nop
3423bar:
3424 sethi %gdop_hix22(foo), %g1
3425 xor %g1, %gdop_lox10(foo), %g1
3426 ld [[%l7 + %g1]], %g2, %gdop(foo)],
3427 [if test x$gcc_cv_ld != x \
46bc665f 3428 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
7673c962
RO
3429 if test x$gcc_cv_objdump != x; then
3430 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3431 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
46bc665f 3432 gcc_cv_as_sparc_gotdata_op=no
7673c962 3433 else
46bc665f 3434 gcc_cv_as_sparc_gotdata_op=yes
46bc665f 3435 fi
46bc665f 3436 fi
878ee0ab
DM
3437 fi
3438 rm -f conftest],
3439 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3440 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3441
8ada417f
ZW
3442 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3443 gcc_cv_as_sparc_ua_pcrel,,
3444 [-K PIC],
3445[.text
3446foo:
3447 nop
3448.data
3449.align 4
3450.byte 0
3451.uaword %r_disp32(foo)],
3452 [if test x$gcc_cv_ld != x \
3453 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3454 gcc_cv_as_sparc_ua_pcrel=yes
3455 fi
3456 rm -f conftest],
3457 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
17e9e88c 3458 [Define if your assembler and linker support unaligned PC relative relocs.])
cf7b8b0d 3459
8ada417f
ZW
3460 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3461 gcc_cv_as_sparc_ua_pcrel_hidden,,
3462 [-K PIC],
3463[.data
3464.align 4
3465.byte 0x31
3466.uaword %r_disp32(foo)
3467.byte 0x32, 0x33, 0x34
3468.global foo
3469.hidden foo
3470foo:
3471.skip 4],
3472 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3473 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3474 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3475 | grep ' 31000000 07323334' > /dev/null 2>&1; then
3476 if $gcc_cv_objdump -R conftest 2> /dev/null \
3477 | grep 'DISP32' > /dev/null 2>&1; then
3478 :
22252625 3479 else
8ada417f 3480 gcc_cv_as_sparc_ua_pcrel_hidden=yes
5b68c389 3481 fi
8ada417f
ZW
3482 fi
3483 rm -f conftest],
3484 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3485 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3486 ]) # unaligned pcrel relocs
3487
3488 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3489 gcc_cv_as_sparc_offsetable_lo10,,
3490 [-xarch=v9],
3491[.text
3492 or %g1, %lo(ab) + 12, %g1
3493 or %g1, %lo(ab + 12), %g1],
3494 [if test x$gcc_cv_objdump != x \
ecb0ccbc 3495 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
8ada417f 3496 | grep ' 82106000 82106000' > /dev/null 2>&1; then
1b5c0152 3497 gcc_cv_as_sparc_offsetable_lo10=yes
8ada417f
ZW
3498 fi],
3499 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3500 [Define if your assembler supports offsetable %lo().])])
e8b141b5
DM
3501
3502 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3503 gcc_cv_as_sparc_fmaf,,
3504 [-xarch=v9d],
3505 [.text
26e2f443
DM
3506 .register %g2, #scratch
3507 .register %g3, #scratch
e8b141b5
DM
3508 .align 4
3509 fmaddd %f0, %f2, %f4, %f6
3510 addxccc %g1, %g2, %g3
3511 fsrl32 %f2, %f4, %f8
3512 fnaddd %f10, %f12, %f14],,
3513 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3514 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
1cb36a98
RH
3515 ;;
3516
3517changequote(,)dnl
c307e6dd 3518 i[34567]86-*-* | x86_64-*-*)
1cb36a98 3519changequote([,])dnl
f7e413e2
DK
3520 case $target_os in
3521 cygwin*)
3522 # Full C++ conformance when using a shared libstdc++-v3 requires some
3523 # support from the Cygwin DLL, which in more recent versions exports
3524 # wrappers to aid in interposing and redirecting operators new, delete,
3525 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
3526 # are configuring for a version of Cygwin that exports the wrappers.
3527 if test x$host = x$target; then
3528 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3529 else
3530 # Can't check presence of libc functions during cross-compile, so
3531 # we just have to assume we're building for an up-to-date target.
3532 gcc_ac_cygwin_dll_wrappers=yes
3533 fi
3534 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3535 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3536 [Define if you want to generate code by default that assumes that the
3537 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3538 esac
d38bc601
BF
3539 case $target_os in
3540 cygwin* | pe | mingw32*)
233215fe
DK
3541 # Recent binutils allows the three-operand form of ".comm" on PE. This
3542 # definition is used unconditionally to initialise the default state of
3543 # the target option variable that governs usage of the feature.
3544 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3545 [2,19,52],,[.comm foo,1,32])
3546 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3547 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3548 [Define if your assembler supports specifying the alignment
3549 of objects allocated using the GAS .comm command.])
d38bc601
BF
3550 # Used for DWARF 2 in PE
3551 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3552 gcc_cv_as_ix86_pe_secrel32,
3553 [2,15,91],,
3554[.text
3555foo: nop
3556.data
3557 .secrel32 foo],
3558 [if test x$gcc_cv_ld != x \
3559 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3560 gcc_cv_as_ix86_pe_secrel32=yes
3561 fi
3562 rm -f conftest],
3563 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3564 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3bec79c5
DK
3565 # Test if the assembler supports the extended form of the .section
3566 # directive that specifies section alignment. LTO support uses this,
3567 # but normally only after installation, so we warn but don't fail the
3568 # configure if LTO is enabled but the assembler does not support it.
3569 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3570 [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3571 if test x$gcc_cv_as_section_has_align != xyes; then
3572 case ",$enable_languages," in
3573 *,lto,*)
3574 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3575 ;;
3576 esac
3577 fi
08c71c82
KT
3578 # Test if the assembler supports the section flag 'e' for specifying
3579 # an excluded section.
3580 gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3581 [2,22,51],,
3582[.section foo1,"e"
3583.byte 0,0,0,0])
3584 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3585 [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3586 [Define if your assembler supports specifying the section flag e.])
d38bc601
BF
3587 ;;
3588 esac
3589
8ada417f 3590 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
a3a5e3d1
UB
3591 gcc_cv_as_ix86_filds,,,
3592 [filds mem; fists mem],,
3593 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3594 [Define if your assembler uses filds and fists mnemonics.])])
3595
3596 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3597 gcc_cv_as_ix86_fildq,,,
3598 [fildq mem; fistpq mem],,
3599 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3600 [Define if your assembler uses fildq and fistq mnemonics.])])
8ada417f 3601
f6f5dff2
RO
3602 gcc_GAS_CHECK_FEATURE([cmov syntax],
3603 gcc_cv_as_ix86_cmov_sun_syntax,,,
3604 [cmovl.l %edx, %eax],,
3605 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3606 [Define if your assembler supports the Sun syntax for cmov.])])
3607
b6c03bcd
RS
3608 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3609 gcc_cv_as_ix86_ffreep,,,
3610 [ffreep %st(1)],,
3611 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3612 [Define if your assembler supports the ffreep mnemonic.])])
3613
ed104137
RO
3614 gcc_GAS_CHECK_FEATURE([.quad directive],
3615 gcc_cv_as_ix86_quad,,,
3616 [.quad 0],,
3617 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3618 [Define if your assembler supports the .quad directive.])])
3619
38ca3765
UB
3620 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3621 gcc_cv_as_ix86_sahf,,,
953c29f7
UB
3622 [.code64
3623 sahf],,
38ca3765 3624 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
953c29f7 3625 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
38ca3765 3626
afd2c302
SD
3627 gcc_GAS_CHECK_FEATURE([swap suffix],
3628 gcc_cv_as_ix86_swap,,,
3629 [movl.s %esp, %ebp],,
3630 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3631 [Define if your assembler supports the swap suffix.])])
3632
68b92f78
RS
3633 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3634 gcc_cv_as_ix86_diff_sect_delta,,,
3635 [.section .rodata
3636.L1:
3637 .long .L2-.L1
3638 .long .L3-.L1
3639 .text
3640.L3: nop
3641.L2: nop],,
3642 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3643 [Define if your assembler supports the subtraction of symbols in different sections.])])
3644
2433310d 3645 # These two are used unconditionally by i386.[ch]; it is to be defined
6f3ca281 3646 # to 1 if the feature is present, 0 otherwise.
8ada417f
ZW
3647 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3648 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3649[ .text
f88c65f7
RH
3650.L0:
3651 nop
3652 .data
6f3ca281
ZW
3653 .long .L0@GOTOFF])
3654 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3655 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3656 [Define true if the assembler supports '.long foo@GOTOFF'.])
2433310d
RO
3657
3658 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3659 gcc_cv_as_ix86_rep_lock_prefix,,,
3660 [rep movsl
4bade865 3661 lock addl %edi, (%eax,%esi)
7085bfb6
UB
3662 lock orl $0, (%esp)],,
3663 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3664 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
2433310d 3665
8950516e
RO
3666 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3667 gcc_cv_as_ix86_tlsgdplt,,,
3668 [call tls_gd@tlsgdplt],,
3669 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3670 [Define if your assembler supports @tlsgdplt.])])
3671
3672 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3673 gcc_cv_as_ix86_tlsldmplt,,,
3674 [call tls_ld@tlsldmplt],,
3675 [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3676 [Define if your assembler supports @tlsldmplt.])])
3677
1cb36a98 3678 ;;
ef1ecf87
RH
3679
3680 ia64*-*-*)
8ada417f
ZW
3681 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3682 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
cfa9ee99 3683[ .text
ef1ecf87
RH
3684 addl r15 = @ltoffx(x#), gp
3685 ;;
cfa9ee99 3686 ld8.mov r16 = [[r15]], x#],,
8ada417f
ZW
3687 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3688 [Define if your assembler supports ltoffx and ldxmov relocations.])])
3689
ef1ecf87 3690 ;;
8ada417f 3691
2c4a9cff 3692 powerpc*-*-*)
8ada417f 3693 case $target in
432218ba
DE
3694 *-*-aix*) conftest_s=' .machine "pwr5"
3695 .csect .text[[PR]]
6b37db3c 3696 mfcr 3,128';;
8af4d362
PB
3697 *-*-darwin*)
3698 gcc_GAS_CHECK_FEATURE([.machine directive support],
3699 gcc_cv_as_machine_directive,,,
3700 [ .machine ppc7400])
3701 if test x$gcc_cv_as_machine_directive != xyes; then
3702 echo "*** This target requires an assembler supporting \".machine\"" >&2
3703 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3704 test x$build = x$target && exit 1
3705 fi
3706 conftest_s=' .text
6b37db3c 3707 mfcr r3,128';;
4c67db14 3708 *) conftest_s=' .machine power4
d2ab3e37 3709 .text
6b37db3c 3710 mfcr 3,128';;
8ada417f 3711 esac
8ada417f
ZW
3712
3713 gcc_GAS_CHECK_FEATURE([mfcr field support],
3714 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3715 [$conftest_s],,
3716 [AC_DEFINE(HAVE_AS_MFCRF, 1,
3717 [Define if your assembler supports mfcr field.])])
432218ba
DE
3718
3719 case $target in
3720 *-*-aix*) conftest_s=' .machine "pwr5"
3721 .csect .text[[PR]]
3722 popcntb 3,3';;
3723 *) conftest_s=' .machine power5
3724 .text
3725 popcntb 3,3';;
3726 esac
3727
3728 gcc_GAS_CHECK_FEATURE([popcntb support],
3729 gcc_cv_as_powerpc_popcntb, [2,17,0],,
3730 [$conftest_s],,
3731 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3732 [Define if your assembler supports popcntb field.])])
3733
9719f3b7
DE
3734 case $target in
3735 *-*-aix*) conftest_s=' .machine "pwr5x"
3736 .csect .text[[PR]]
3737 frin 1,1';;
1e04bfdc 3738 *) conftest_s=' .machine power5
9719f3b7
DE
3739 .text
3740 frin 1,1';;
3741 esac
3742
3743 gcc_GAS_CHECK_FEATURE([fp round support],
3744 gcc_cv_as_powerpc_fprnd, [2,17,0],,
3745 [$conftest_s],,
3746 [AC_DEFINE(HAVE_AS_FPRND, 1,
3747 [Define if your assembler supports fprnd.])])
3748
44cd321e
PS
3749 case $target in
3750 *-*-aix*) conftest_s=' .machine "pwr6"
3751 .csect .text[[PR]]
3752 mffgpr 1,3';;
3753 *) conftest_s=' .machine power6
3754 .text
3755 mffgpr 1,3';;
3756 esac
3757
3758 gcc_GAS_CHECK_FEATURE([move fp gpr support],
cacf1ca8 3759 gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
44cd321e
PS
3760 [$conftest_s],,
3761 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3762 [Define if your assembler supports mffgpr and mftgpr.])])
3763
7f970b70
AM
3764 case $target in
3765 *-*-aix*) conftest_s=' .csect .text[[PR]]
3766LCF..0:
3767 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3768 *-*-darwin*)
3769 conftest_s=' .text
3770LCF0:
3771 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3772 *) conftest_s=' .text
3773.LCF0:
3774 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3775 esac
3776
695d8830
AS
3777 gcc_GAS_CHECK_FEATURE([rel16 relocs],
3778 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3779 [$conftest_s],,
3780 [AC_DEFINE(HAVE_AS_REL16, 1,
3781 [Define if your assembler supports R_PPC_REL16 relocs.])])
3782
b639c3c2
JJ
3783 case $target in
3784 *-*-aix*) conftest_s=' .machine "pwr6"
3785 .csect .text[[PR]]
3786 cmpb 3,4,5';;
3787 *) conftest_s=' .machine power6
3788 .text
3789 cmpb 3,4,5';;
3790 esac
3791
3792 gcc_GAS_CHECK_FEATURE([compare bytes support],
cacf1ca8 3793 gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
b639c3c2
JJ
3794 [$conftest_s],,
3795 [AC_DEFINE(HAVE_AS_CMPB, 1,
3796 [Define if your assembler supports cmpb.])])
3797
3798 case $target in
3799 *-*-aix*) conftest_s=' .machine "pwr6"
3800 .csect .text[[PR]]
0d74c0ee 3801 dadd 1,2,3';;
b639c3c2
JJ
3802 *) conftest_s=' .machine power6
3803 .text
0d74c0ee 3804 dadd 1,2,3';;
b639c3c2
JJ
3805 esac
3806
3807 gcc_GAS_CHECK_FEATURE([decimal float support],
cacf1ca8 3808 gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
b639c3c2
JJ
3809 [$conftest_s],,
3810 [AC_DEFINE(HAVE_AS_DFP, 1,
3811 [Define if your assembler supports DFP instructions.])])
e51917ae 3812
d40c9e33
PB
3813 case $target in
3814 *-*-aix*) conftest_s=' .machine "pwr7"
3815 .csect .text[[PR]]
3816 lxvd2x 1,2,3';;
3817 *) conftest_s=' .machine power7
3818 .text
3819 lxvd2x 1,2,3';;
3820 esac
3821
3822 gcc_GAS_CHECK_FEATURE([vector-scalar support],
cacf1ca8 3823 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
d40c9e33
PB
3824 [$conftest_s],,
3825 [AC_DEFINE(HAVE_AS_VSX, 1,
3826 [Define if your assembler supports VSX instructions.])])
3827
cacf1ca8
MM
3828 case $target in
3829 *-*-aix*) conftest_s=' .machine "pwr7"
3830 .csect .text[[PR]]
3831 popcntd 3,3';;
3832 *) conftest_s=' .machine power7
3833 .text
3834 popcntd 3,3';;
3835 esac
3836
3837 gcc_GAS_CHECK_FEATURE([popcntd support],
3838 gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3839 [$conftest_s],,
3840 [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3841 [Define if your assembler supports POPCNTD instructions.])])
3842
3843 case $target in
3844 *-*-aix*) conftest_s=' .csect .text[[PR]]
3845 lwsync';;
3846 *) conftest_s=' .text
3847 lwsync';;
3848 esac
3849
3850 gcc_GAS_CHECK_FEATURE([lwsync support],
3851 gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3852 [$conftest_s],,
3853 [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3854 [Define if your assembler supports LWSYNC instructions.])])
3855
47f67e51
PB
3856 case $target in
3857 *-*-aix*) conftest_s=' .machine "476"
3858 .csect .text[[PR]]
3859 dci 0';;
3860 *) conftest_s=' .machine "476"
3861 .text
3862 dci 0';;
3863 esac
3864
3865 gcc_GAS_CHECK_FEATURE([data cache invalidate support],
3866 gcc_cv_as_powerpc_dci, [9,99,0], -a32,
3867 [$conftest_s],,
3868 [AC_DEFINE(HAVE_AS_DCI, 1,
3869 [Define if your assembler supports the DCI/ICI instructions.])])
3870
e51917ae
JM
3871 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3872 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3873 [.gnu_attribute 4,1],,
3874 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3875 [Define if your assembler supports .gnu_attribute.])])
9752c4ad
AM
3876
3877 gcc_GAS_CHECK_FEATURE([tls marker support],
3878 gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3879 [ bl __tls_get_addr(x@tlsgd)],,
3880 [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3881 [Define if your assembler supports arg info for __tls_get_addr.])])
636cf8b1
RS
3882
3883 case $target in
3884 *-*-aix*)
3885 gcc_GAS_CHECK_FEATURE([.ref support],
3886 gcc_cv_as_aix_ref, [2.21.0],,
3887 [ .csect stuff[[rw]]
3888 stuff:
3889 .long 1
3890 .extern sym
3891 .ref sym
3892 ],,
3893 [AC_DEFINE(HAVE_AS_REF, 1,
3894 [Define if your assembler supports .ref])])
3895 ;;
3896 esac
2c4a9cff 3897 ;;
53b5ce19 3898
8ada417f
ZW
3899 mips*-*-*)
3900 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3901 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3902[ lw $4,%gp_rel(foo)($4)],,
3903 [if test x$target_cpu_default = x
3904 then target_cpu_default=MASK_EXPLICIT_RELOCS
3905 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3906 fi])
4551169f
RS
3907 gcc_GAS_CHECK_FEATURE([-mno-shared support],
3908 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3909 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3910 [Define if the assembler understands -mno-shared.])])
dcb957d9
JM
3911
3912 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3913 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3914 [.gnu_attribute 4,1],,
3915 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3916 [Define if your assembler supports .gnu_attribute.])])
a44380d2
JM
3917
3918 gcc_GAS_CHECK_FEATURE([.dtprelword support],
3919 gcc_cv_as_mips_dtprelword, [2,18,0],,
3920 [.section .tdata,"awT",@progbits
3921x:
3922 .word 2
3923 .text
3924 .dtprelword x+0x8000],,
3925 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3926 [Define if your assembler supports .dtprelword.])])
b53da244 3927
293b77b0
CF
3928 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
3929 gcc_cv_as_mips_dspr1_mult,,,
3930[ .set mips32r2
3931 .set nodspr2
3932 .set dsp
3933 madd $ac3,$4,$5
3934 maddu $ac3,$4,$5
3935 msub $ac3,$4,$5
3936 msubu $ac3,$4,$5
3937 mult $ac3,$4,$5
3938 multu $ac3,$4,$5],,
3939 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
3940 [Define if your assembler supports DSPR1 mult.])])
3941
b53da244
AN
3942 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3943 gcc_cv_as_ld_jalr_reloc=no
3944 if test $gcc_cv_as_mips_explicit_relocs = yes; then
3945 if test $in_tree_ld = yes ; then
3946 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
3947 && test $in_tree_ld_is_elf = yes; then
3948 gcc_cv_as_ld_jalr_reloc=yes
3949 fi
3950 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3951 echo ' .ent x' > conftest.s
3952 echo 'x: ld $2,%got_disp(y)($3)' >> conftest.s
3953 echo ' ld $25,%call16(y)($28)' >> conftest.s
3954 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
3955 echo '1: jalr $25' >> conftest.s
3956 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
3957 echo '1: jalr $25' >> conftest.s
3958 echo ' .end x' >> conftest.s
3959 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
3960 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
bc492e47
RO
3961 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
3962 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
b53da244
AN
3963 gcc_cv_as_ld_jalr_reloc=yes
3964 fi
3965 fi
3966 rm -f conftest.*
3967 fi
3968 fi
3969 if test $gcc_cv_as_ld_jalr_reloc = yes; then
3970 if test x$target_cpu_default = x; then
3971 target_cpu_default=MASK_RELAX_PIC_CALLS
3972 else
3973 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
3974 fi
3975 fi
3976 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
49576e25
RS
3977
3978 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
3979 [gcc_cv_ld_mips_personality_relaxation],
3980 [gcc_cv_ld_mips_personality_relaxation=no
3981 if test $in_tree_ld = yes ; then
3982 if test "$gcc_cv_gld_major_version" -eq 2 \
3983 -a "$gcc_cv_gld_minor_version" -ge 21 \
3984 -o "$gcc_cv_gld_major_version" -gt 2; then
3985 gcc_cv_ld_mips_personality_relaxation=yes
3986 fi
3987 elif test x$gcc_cv_as != x \
3988 -a x$gcc_cv_ld != x \
3989 -a x$gcc_cv_readelf != x ; then
3990 cat > conftest.s <<EOF
3991 .cfi_startproc
3992 .cfi_personality 0x80,indirect_ptr
3993 .ent test
3994test:
3995 nop
3996 .end test
3997 .cfi_endproc
3998
3999 .section .data,"aw",@progbits
4000indirect_ptr:
4001 .dc.a personality
4002EOF
4003 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4004 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4005 if $gcc_cv_readelf -d conftest 2>&1 \
4006 | grep TEXTREL > /dev/null 2>&1; then
4007 :
4008 elif $gcc_cv_readelf --relocs conftest 2>&1 \
4009 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4010 :
4011 else
4012 gcc_cv_ld_mips_personality_relaxation=yes
4013 fi
4014 fi
4015 fi
4016 rm -f conftest.s conftest.o conftest])
4017 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4018 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4019 [Define if your linker can relax absolute .eh_frame personality
4020pointers into PC-relative form.])
4021 fi
dbad5e72
SE
4022 ;;
4023esac
4024
4025# Mips and HP-UX need the GNU assembler.
4026# Linux on IA64 might be able to use the Intel assembler.
8ada417f 4027
dbad5e72
SE
4028case "$target" in
4029 mips*-*-* | *-*-hpux* )
82563d35
RS
4030 if test x$gas_flag = xyes \
4031 || test x"$host" != x"$build" \
4032 || test ! -x "$gcc_cv_as" \
4033 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4034 :
4035 else
4036 echo "*** This configuration requires the GNU assembler" >&2
4037 exit 1
4038 fi
8ada417f
ZW
4039 ;;
4040esac
dbad5e72 4041
9d147085
RH
4042# ??? Not all targets support dwarf2 debug_line, even within a version
4043# of gas. Moreover, we need to emit a valid instruction to trigger any
4044# info to the output file. So, as supported targets are added to gas 2.11,
4045# add some instruction here to (also) show we expect this might work.
4046# ??? Once 2.11 is released, probably need to add first known working
4047# version to the per-target configury.
7fa2619a
EB
4048case "$cpu_type" in
4049 alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \
4050 | pa | rs6000 | score | sparc | spu | xstormy16 | xtensa)
9d147085
RH
4051 insn="nop"
4052 ;;
7fa2619a 4053 ia64 | s390)
9d147085
RH
4054 insn="nop 0"
4055 ;;
7fa2619a 4056 mmix)
2853bc5a
HPN
4057 insn="swym 0"
4058 ;;
8ada417f
ZW
4059esac
4060if test x"$insn" != x; then
4061 conftest_s="\
4062 .file 1 \"conftest.s\"
4063 .loc 1 3 0
4064 $insn"
4065 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4066 gcc_cv_as_dwarf2_debug_line,
4067 [elf,2,11,0],, [$conftest_s],
080a5bb0
EB
4068 [if test x$gcc_cv_objdump != x \
4069 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4070 | grep debug_line > /dev/null 2>&1; then
8ada417f
ZW
4071 gcc_cv_as_dwarf2_debug_line=yes
4072 fi])
4073
4074# The .debug_line file table must be in the exact order that
4075# we specified the files, since these indices are also used
4076# by DW_AT_decl_file. Approximate this test by testing if
4077# the assembler bitches if the same index is assigned twice.
4078 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4079 gcc_cv_as_dwarf2_file_buggy,,,
4080[ .file 1 "foo.s"
4081 .file 1 "bar.s"])
4082
4083 if test $gcc_cv_as_dwarf2_debug_line = yes \
4084 && test $gcc_cv_as_dwarf2_file_buggy = no; then
9d147085 4085 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
8ada417f 4086 [Define if your assembler supports dwarf2 .file/.loc directives,
eaec9b3d 4087 and preserves file table indices exactly as given.])
8ada417f
ZW
4088 fi
4089
4090 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4091 gcc_cv_as_gdwarf2_flag,
4092 [elf,2,11,0], [--gdwarf2], [$insn],,
4093 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4094[Define if your assembler supports the --gdwarf2 option.])])
4095
4096 gcc_GAS_CHECK_FEATURE([--gstabs option],
4097 gcc_cv_as_gstabs_flag,
4098 [elf,2,11,0], [--gstabs], [$insn],
4099 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4100 # and warns about it, but still exits successfully. So check for
4101 # this.
4102 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4103 then :
4104 else gcc_cv_as_gstabs_flag=yes
4105 fi],
4106 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4107[Define if your assembler supports the --gstabs option.])])
c8aea42c
PB
4108
4109 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4110 gcc_cv_as_debug_prefix_map_flag,
303a4698 4111 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
c8aea42c
PB
4112 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4113[Define if your assembler supports the --debug-prefix-map option.])])
9d147085 4114fi
5f0e9ea2 4115
28e6bb13
NC
4116gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4117 ,,
4118[.lcomm bar,4,16],,
4119[AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4120 [Define if your assembler supports .lcomm with an alignment field.])])
4121
e31bcd1b 4122AC_ARG_ENABLE(gnu-unique-object,
87e6d9dc
TB
4123 [AS_HELP_STRING([--enable-gnu-unique-object],
4124 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
e31bcd1b
JM
4125 [case $enable_gnu_unique_object in
4126 yes | no) ;;
4127 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4128Valid choices are 'yes' and 'no'.]) ;;
4129 esac],
4130 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4131 [elf,2,19,52],,
e00ded68 4132 [.type foo, @gnu_unique_object],,
e31bcd1b 4133# Also check for ld.so support, i.e. glibc 2.11 or higher.
e5dfb95f 4134 [[if test x$host = x$build -a x$host = x$target &&
a4da6485 4135 ldd --version 2>/dev/null &&
cdf6bfb7
MK
4136 glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
4137 glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
4138 glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
e31bcd1b
JM
4139 glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
4140 if test "$glibcnum" -ge 2011 ; then
e00ded68 4141 enable_gnu_unique_object=yes
e31bcd1b 4142 fi
e5dfb95f 4143 fi]])])
e31bcd1b
JM
4144if test x$enable_gnu_unique_object = xyes; then
4145 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4146 [Define if your assembler supports @gnu_unique_object.])
4147fi
4148
03943c05
AO
4149AC_CACHE_CHECK([assembler for tolerance to line number 0],
4150 [gcc_cv_as_line_zero],
4151 [gcc_cv_as_line_zero=no
4152 if test $in_tree_gas = yes; then
cf0eb7a1 4153 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
03943c05
AO
4154 elif test "x$gcc_cv_as" != x; then
4155 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4156 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4157 test "x`cat conftest.out`" = x
4158 then
4159 gcc_cv_as_line_zero=yes
4160 else
4161 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4162 cat conftest.s >&AS_MESSAGE_LOG_FD
4163 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4164 cat conftest.out >&AS_MESSAGE_LOG_FD
4165 fi
4166 rm -f conftest.o conftest.s conftest.out
4167 fi])
4168if test "x$gcc_cv_as_line_zero" = xyes; then
4169 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4170[Define if the assembler won't complain about a line such as # 0 "" 2.])
4171fi
4172
275b60d6
JJ
4173AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4174gcc_cv_ld_eh_frame_hdr=no
34a86c2b 4175if test $in_tree_ld = yes ; then
5408ac6c
HPN
4176 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 \
4177 && test $in_tree_ld_is_elf = yes; then
275b60d6
JJ
4178 gcc_cv_ld_eh_frame_hdr=yes
4179 fi
4180elif test x$gcc_cv_ld != x; then
6961669f
RO
4181 if echo "$ld_ver" | grep GNU > /dev/null; then
4182 # Check if linker supports --eh-frame-hdr option
4183 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4184 gcc_cv_ld_eh_frame_hdr=yes
4185 fi
4186 else
4187 case "$target" in
4188 *-*-solaris2*)
e279edb0
RO
4189 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4190 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
6961669f
RO
4191 gcc_cv_ld_eh_frame_hdr=yes
4192 fi
4193 ;;
4194 esac
4195 fi
275b60d6 4196fi
232b67d9 4197GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
275b60d6
JJ
4198if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4199 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
6961669f 4200[Define if your linker supports .eh_frame_hdr.])
275b60d6
JJ
4201fi
4202AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4203
24a4dd31
JJ
4204AC_MSG_CHECKING(linker position independent executable support)
4205gcc_cv_ld_pie=no
4206if test $in_tree_ld = yes ; then
5408ac6c
HPN
4207 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 \
4208 && test $in_tree_ld_is_elf = yes; then
24a4dd31
JJ
4209 gcc_cv_ld_pie=yes
4210 fi
4211elif test x$gcc_cv_ld != x; then
4212 # Check if linker supports -pie option
4213 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4214 gcc_cv_ld_pie=yes
4215 fi
4216fi
4217if test x"$gcc_cv_ld_pie" = xyes; then
4218 AC_DEFINE(HAVE_LD_PIE, 1,
4219[Define if your linker supports -pie option.])
4220fi
4221AC_MSG_RESULT($gcc_cv_ld_pie)
4222
22ba88ef
EB
4223AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4224gcc_cv_ld_eh_gc_sections=no
4225if test $in_tree_ld = yes ; then
4226 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 \
4227 && test $in_tree_ld_is_elf = yes; then
4228 gcc_cv_ld_eh_gc_sections=yes
4229 fi
4230elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4231 cat > conftest.s <<EOF
4232 .section .text
4233.globl _start
4234 .type _start, @function
4235_start:
4236 .long foo
4237 .size _start, .-_start
4238 .section .text.foo,"ax",@progbits
4239 .type foo, @function
4240foo:
4241 .long 0
4242 .size foo, .-foo
4243 .section .gcc_except_table.foo,"a",@progbits
4244.L0:
4245 .long 0
4246 .section .eh_frame,"a",@progbits
4247 .long .L0
4248EOF
4249 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4250 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4251 | grep "gc-sections option ignored" > /dev/null; then
4252 gcc_cv_ld_eh_gc_sections=no
2e2b183b
RO
4253 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4254 | grep gcc_except_table > /dev/null; then
22ba88ef 4255 gcc_cv_ld_eh_gc_sections=yes
e9d207d9
EB
4256 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4257 if test x$gcc_cv_as_comdat_group != xyes; then
4258 gcc_cv_ld_eh_gc_sections=no
4259 cat > conftest.s <<EOF
4260 .section .text
4261.globl _start
4262 .type _start, @function
4263_start:
4264 .long foo
4265 .size _start, .-_start
4266 .section .gnu.linkonce.t.foo,"ax",@progbits
4267 .type foo, @function
4268foo:
4269 .long 0
4270 .size foo, .-foo
4271 .section .gcc_except_table.foo,"a",@progbits
4272.L0:
4273 .long 0
4274 .section .eh_frame,"a",@progbits
4275 .long .L0
4276EOF
4277 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4278 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4279 | grep "gc-sections option ignored" > /dev/null; then
4280 gcc_cv_ld_eh_gc_sections=no
2e2b183b
RO
4281 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4282 | grep gcc_except_table > /dev/null; then
e9d207d9
EB
4283 gcc_cv_ld_eh_gc_sections=yes
4284 fi
4285 fi
4286 fi
22ba88ef
EB
4287 fi
4288 fi
4289 rm -f conftest.s conftest.o conftest
4290fi
e9d207d9
EB
4291case "$target" in
4292 hppa*-*-linux*)
4293 # ??? This apparently exposes a binutils bug with PC-relative relocations.
4294 gcc_cv_ld_eh_gc_sections=no
4295 ;;
4296esac
22ba88ef
EB
4297if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4298 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4299 [Define if your linker supports garbage collection of
4300 sections in presence of EH frames.])
4301fi
4302AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4303
1b500976
JJ
4304AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4305gcc_cv_ld_eh_gc_sections_bug=no
4306if test $in_tree_ld = yes ; then
4307 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
4308 && test $in_tree_ld_is_elf = yes; then
4309 gcc_cv_ld_eh_gc_sections_bug=yes
4310 fi
4311elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
4312 gcc_cv_ld_eh_gc_sections_bug=yes
4313 cat > conftest.s <<EOF
4314 .section .text
4315.globl _start
4316 .type _start, @function
4317_start:
4318 .long foo
4319 .size _start, .-_start
4320 .section .text.startup.foo,"ax",@progbits
4321 .type foo, @function
4322foo:
4323 .long 0
4324 .size foo, .-foo
4325 .section .gcc_except_table.foo,"a",@progbits
4326.L0:
4327 .long 0
4328 .section .eh_frame,"a",@progbits
4329 .long .L0
4330EOF
4331 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4332 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4333 | grep "gc-sections option ignored" > /dev/null; then
4334 :
4335 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4336 | grep gcc_except_table > /dev/null; then
4337 gcc_cv_ld_eh_gc_sections_bug=no
4338 fi
4339 fi
4340 rm -f conftest.s conftest.o conftest
4341fi
4342if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4343 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4344 [Define if your linker has buggy garbage collection of
4345 sections support when .text.startup.foo like sections are used.])
4346fi
4347AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4348
630327c3
NN
4349# --------
4350# UNSORTED
4351# --------
4352
82e923f6
RS
4353AC_CACHE_CHECK(linker --as-needed support,
4354gcc_cv_ld_as_needed,
4355[gcc_cv_ld_as_needed=no
765f1bf9
AM
4356if test $in_tree_ld = yes ; then
4357 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 \
4358 && test $in_tree_ld_is_elf = yes; then
4359 gcc_cv_ld_as_needed=yes
4360 fi
4361elif test x$gcc_cv_ld != x; then
4362 # Check if linker supports --as-needed and --no-as-needed options
4363 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4364 gcc_cv_ld_as_needed=yes
4365 fi
4366fi
82e923f6 4367])
765f1bf9
AM
4368if test x"$gcc_cv_ld_as_needed" = xyes; then
4369 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4370[Define if your linker supports --as-needed and --no-as-needed options.])
4371fi
765f1bf9 4372
d82bf747
AM
4373case "$target:$tm_file" in
4374 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
85b776df
AM
4375 AC_CACHE_CHECK(linker support for omitting dot symbols,
4376 gcc_cv_ld_no_dot_syms,
4377 [gcc_cv_ld_no_dot_syms=no
4378 if test $in_tree_ld = yes ; then
4379 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
4380 gcc_cv_ld_no_dot_syms=yes
4381 fi
4382 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4383 cat > conftest1.s <<EOF
4384 .text
4385 bl .foo
4386EOF
4387 cat > conftest2.s <<EOF
4388 .section ".opd","aw"
4389 .align 3
4390 .globl foo
4391 .type foo,@function
4392foo:
4393 .quad .LEfoo,.TOC.@tocbase,0
4394 .text
4395.LEfoo:
4396 blr
4397 .size foo,.-.LEfoo
4398EOF
4399 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4400 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4401 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4402 gcc_cv_ld_no_dot_syms=yes
4403 fi
4404 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4405 fi
4406 ])
4407 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4408 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4409 [Define if your PowerPC64 linker only needs function descriptor syms.])
4410 fi
070b27da
AM
4411
4412 AC_CACHE_CHECK(linker large toc support,
4413 gcc_cv_ld_large_toc,
4414 [gcc_cv_ld_large_toc=no
4415 if test $in_tree_ld = yes ; then
4416 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
4417 gcc_cv_ld_large_toc=yes
4418 fi
4419 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4420 cat > conftest.s <<EOF
4421 .section ".tbss","awT",@nobits
4422 .align 3
4423ie0: .space 8
4424 .global _start
4425 .text
4426_start:
4427 addis 9,13,ie0@got@tprel@ha
4428 ld 9,ie0@got@tprel@l(9)
4429EOF
4430 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4431 && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4432 gcc_cv_ld_large_toc=yes
4433 fi
4434 rm -f conftest conftest.o conftest.s
4435 fi
4436 ])
4437 if test x"$gcc_cv_ld_large_toc" = xyes; then
4438 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4439 [Define if your PowerPC64 linker supports a large TOC.])
4440 fi
85b776df
AM
4441 ;;
4442esac
4443
cd533689
PP
4444AC_CACHE_CHECK(linker --build-id support,
4445 gcc_cv_ld_buildid,
4446 [gcc_cv_ld_buildid=no
4447 if test $in_tree_ld = yes ; then
4448 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4449 "$gcc_cv_gld_minor_version" -ge 18 -o \
4450 "$gcc_cv_gld_major_version" -gt 2 \
4451 && test $in_tree_ld_is_elf = yes; then
4452 gcc_cv_ld_buildid=yes
4453 fi
4454 elif test x$gcc_cv_ld != x; then
4455 if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4456 gcc_cv_ld_buildid=yes
4457 fi
4458 fi])
4459if test x"$gcc_cv_ld_buildid" = xyes; then
4460 AC_DEFINE(HAVE_LD_BUILDID, 1,
4461 [Define if your linker supports --build-id.])
4462fi
4463
4464AC_ARG_ENABLE(linker-build-id,
b88ecf55
AS
4465[AS_HELP_STRING([--enable-linker-build-id],
4466 [compiler will always pass --build-id to linker])],
cd533689
PP
4467[],
4468enable_linker_build_id=no)
4469
4470if test x"$enable_linker_build_id" = xyes; then
4471 if test x"$gcc_cv_ld_buildid" = xyes; then
4472 AC_DEFINE(ENABLE_LD_BUILDID, 1,
4473 [Define if gcc should always pass --build-id to linker.])
4474 else
4475 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4476 fi
4477fi
4478
a6198222
RO
4479# In binutils 2.21, GNU ld gained support for new emulations fully
4480# supporting the Solaris 2 ABI. Detect their presence in the linker used.
4481AC_CACHE_CHECK(linker *_sol2 emulation support,
4482 gcc_cv_ld_sol2_emulation,
4483 [gcc_cv_ld_sol2_emulation=no
4484 if test $in_tree_ld = yes ; then
4485 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4486 "$gcc_cv_gld_minor_version" -ge 21 -o \
4487 "$gcc_cv_gld_major_version" -gt 2 \
4488 && test $in_tree_ld_is_elf = yes; then
4489 gcc_cv_ld_sol2_emulation=yes
4490 fi
4491 elif test x$gcc_cv_ld != x; then
4492 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4493 grep _sol2 > /dev/null; then
4494 gcc_cv_ld_sol2_emulation=yes
4495 fi
4496 fi])
4497if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4498 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4499 [Define if your linker supports the *_sol2 emulations.])
4500fi
4501
380e5ca4
MM
4502AC_CACHE_CHECK(linker --sysroot support,
4503 gcc_cv_ld_sysroot,
4504 [gcc_cv_ld_sysroot=no
4505 if test $in_tree_ld = yes ; then
4506 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 4507 gcc_cv_ld_sysroot=yes
380e5ca4
MM
4508 fi
4509 elif test x$gcc_cv_ld != x; then
4510 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4511 gcc_cv_ld_sysroot=yes
4512 fi
4513 fi])
4514if test x"$gcc_cv_ld_sysroot" = xyes; then
4515 AC_DEFINE(HAVE_LD_SYSROOT, 1,
4516 [Define if your linker supports --sysroot.])
4517fi
4518
9fb28a67 4519if test x$with_sysroot = x && test x$host = x$target \
c794c06f
CD
4520 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4521 && test "$prefix" != "NONE"; then
8ada417f
ZW
4522 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4523[Define to PREFIX/include if cpp should also search that directory.])
793e9558
PB
4524fi
4525
6961669f
RO
4526if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4527 if test "x$with_headers" != x; then
4528 target_header_dir=$with_headers
4529 elif test "x$with_sysroot" = x; then
4530 target_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
4531 elif test "x$with_build_sysroot" != "x"; then
08b2bad2 4532 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
6961669f 4533 elif test "x$with_sysroot" = xyes; then
08b2bad2 4534 target_header_dir="${exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
6961669f 4535 else
08b2bad2 4536 target_header_dir="${with_sysroot}${native_system_header_dir}"
6961669f
RO
4537 fi
4538else
08b2bad2 4539 target_header_dir=${native_system_header_dir}
6961669f
RO
4540fi
4541
77008252 4542# Test for stack protector support in target C library.
a6ccdbab 4543AC_CACHE_CHECK(__stack_chk_fail in target C library,
77008252
JJ
4544 gcc_cv_libc_provides_ssp,
4545 [gcc_cv_libc_provides_ssp=no
a6ccdbab 4546 case "$target" in
22f96a0f 4547 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
e5dfb95f 4548 [# glibc 2.4 and later provides __stack_chk_fail and
77008252 4549 # either __stack_chk_guard, or TLS access to stack guard canary.
6961669f 4550 if test -f $target_header_dir/features.h \
1a242e3c 4551 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
6961669f 4552 $target_header_dir/features.h > /dev/null; then
1a242e3c 4553 if $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
6961669f 4554 $target_header_dir/features.h > /dev/null; then
77008252 4555 gcc_cv_libc_provides_ssp=yes
1a242e3c 4556 elif $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+2' \
6961669f 4557 $target_header_dir/features.h > /dev/null \
1a242e3c 4558 && $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
6961669f 4559 $target_header_dir/features.h > /dev/null; then
77008252 4560 gcc_cv_libc_provides_ssp=yes
1a242e3c 4561 elif $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
6961669f
RO
4562 $target_header_dir/features.h > /dev/null && \
4563 test -f $target_header_dir/bits/uClibc_config.h && \
1a242e3c 4564 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
6961669f 4565 $target_header_dir/bits/uClibc_config.h > /dev/null; then
fed6d628 4566 gcc_cv_libc_provides_ssp=yes
77008252 4567 fi
e5dfb95f 4568 fi]
a6ccdbab 4569 ;;
4cc115a2
TS
4570 *-*-gnu*)
4571 # Avoid complicated tests (see
4572 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4573 # simply assert that glibc does provide this, which is true for all
4574 # realistically usable GNU/Hurd configurations.
4575 gcc_cv_libc_provides_ssp=yes;;
61e1d511 4576 *-*-darwin* | *-*-freebsd*)
a6ccdbab
EC
4577 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4578 [echo "no __stack_chk_fail on this target"])
4579 ;;
77008252 4580 *) gcc_cv_libc_provides_ssp=no ;;
a6ccdbab
EC
4581 esac])
4582
77008252
JJ
4583if test x$gcc_cv_libc_provides_ssp = xyes; then
4584 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4585 [Define if your target C library provides stack protector support])
4586fi
4587
f4e749b4
TT
4588# Test for <sys/sdt.h> on the target.
4589GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4590AC_MSG_CHECKING(sys/sdt.h in the target C library)
4591have_sys_sdt_h=no
4592if test -f $target_header_dir/sys/sdt.h; then
d11aaed7 4593 have_sys_sdt_h=yes
f4e749b4
TT
4594 AC_DEFINE(HAVE_SYS_SDT_H, 1,
4595 [Define if your target C library provides sys/sdt.h])
4596fi
4597AC_MSG_RESULT($have_sys_sdt_h)
4598
ed965309
JJ
4599# Check if TFmode long double should be used by default or not.
4600# Some glibc targets used DFmode long double, but with glibc 2.4
4601# and later they can use TFmode.
4602case "$target" in
f7cc5390 4603 powerpc*-*-linux* | \
ed965309
JJ
4604 sparc*-*-linux* | \
4605 s390*-*-linux* | \
4606 alpha*-*-linux*)
4607 AC_ARG_WITH(long-double-128,
b88ecf55
AS
4608 [AS_HELP_STRING([--with-long-double-128],
4609 [use 128-bit long double by default])],
ed965309 4610 gcc_cv_target_ldbl128="$with_long_double_128",
e5dfb95f 4611 [[gcc_cv_target_ldbl128=no
ed965309 4612 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6961669f 4613 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
65280f6c 4614 && gcc_cv_target_ldbl128=yes
e5dfb95f 4615 ]])
ed965309
JJ
4616 ;;
4617esac
4618if test x$gcc_cv_target_ldbl128 = xyes; then
4619 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4620 [Define if TFmode long double should be the default])
4621fi
4622
6961669f
RO
4623AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4624gcc_cv_target_dl_iterate_phdr=unknown
4625case "$target" in
4626 *-*-solaris2*)
4627 # <link.h> needs both a dl_iterate_phdr declaration and support for
4628 # compilation with largefile support.
4629 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4630 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4631 gcc_cv_target_dl_iterate_phdr=yes
4632 else
4633 gcc_cv_target_dl_iterate_phdr=no
4634 fi
4635 ;;
4636esac
4637GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4638if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4639 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4640[Define if your target C library provides the `dl_iterate_phdr' function.])
4641fi
4642AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
4643
81bf3d9e
RH
4644# Find out what GC implementation we want, or may, use.
4645AC_ARG_WITH(gc,
b88ecf55
AS
4646[AS_HELP_STRING([--with-gc={page,zone}],
4647 [choose the garbage collection mechanism to use
4648 with the compiler])],
81bf3d9e 4649[case "$withval" in
08cee789 4650 page)
81bf3d9e
RH
4651 GGC=ggc-$withval
4652 ;;
08cee789
DJ
4653 zone)
4654 GGC=ggc-$withval
4655 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4656 ;;
81bf3d9e
RH
4657 *)
4658 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4659 ;;
4660esac],
130fadbb 4661[GGC=ggc-page])
81bf3d9e
RH
4662AC_SUBST(GGC)
4663echo "Using $GGC for garbage collection."
4664
00020c16
ILT
4665# Libraries to use on the host. This will normally be set by the top
4666# level Makefile. Here we simply capture the value for our Makefile.
4667if test -z "${HOST_LIBS+set}"; then
4668 HOST_LIBS=
4669fi
4670AC_SUBST(HOST_LIBS)
4671
3c809ba4 4672# Use the system's zlib library.
b8dad04b
ZW
4673zlibdir=-L../zlib
4674zlibinc="-I\$(srcdir)/../zlib"
3c809ba4 4675AC_ARG_WITH(system-zlib,
b88ecf55 4676[AS_HELP_STRING([--with-system-zlib], [use installed libz])],
3c809ba4
AG
4677zlibdir=
4678zlibinc=
4679)
4680AC_SUBST(zlibdir)
4681AC_SUBST(zlibinc)
4682
dc6746e7
PT
4683dnl Very limited version of automake's enable-maintainer-mode
4684
4685AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4686 dnl maintainer-mode is disabled by default
4687 AC_ARG_ENABLE(maintainer-mode,
b88ecf55
AS
4688[AS_HELP_STRING([--enable-maintainer-mode],
4689 [enable make rules and dependencies not useful
4690 (and sometimes confusing) to the casual installer])],
dc6746e7
PT
4691 maintainer_mode=$enableval,
4692 maintainer_mode=no)
4693
4694AC_MSG_RESULT($maintainer_mode)
4695
4696if test "$maintainer_mode" = "yes"; then
4697 MAINT=''
4698else
4699 MAINT='#'
4700fi
4701AC_SUBST(MAINT)dnl
4702
630327c3
NN
4703# --------------
4704# Language hooks
4705# --------------
4706
571a8de5
DE
4707# Make empty files to contain the specs and options for each language.
4708# Then add #include lines to for a compiler that has specs and/or options.
4709
cc11cc9b 4710subdirs=
d7b42618 4711lang_opt_files=
571a8de5 4712lang_specs_files=
3103b7db 4713lang_tree_files=
571a8de5
DE
4714# These (without "all_") are set in each config-lang.in.
4715# `language' must be a single word so is spelled singularly.
4716all_languages=
571a8de5 4717all_compilers=
fda9c731 4718all_outputs='Makefile'
571a8de5 4719# List of language makefile fragments.
2ed26f6b 4720all_lang_makefrags=
11a67599 4721# Additional files for gengtype
ef69da62 4722all_gtfiles="$target_gtfiles"
571a8de5 4723
cc11cc9b
PB
4724# These are the languages that are set in --enable-languages,
4725# and are available in the GCC tree.
4726all_selected_languages=
4727
571a8de5
DE
4728# Add the language fragments.
4729# Languages are added via two mechanisms. Some information must be
4730# recorded in makefile variables, these are defined in config-lang.in.
4731# We accumulate them and plug them into the main Makefile.
4732# The other mechanism is a set of hooks for each of the main targets
4733# like `clean', `install', etc.
4734
571a8de5
DE
4735language_hooks="Make-hooks"
4736
cc11cc9b 4737for lang in ${srcdir}/*/config-lang.in
571a8de5 4738do
cc11cc9b 4739changequote(,)dnl
1546bb64
PB
4740 test "$lang" = "${srcdir}/*/config-lang.in" && continue
4741
cc11cc9b
PB
4742 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
4743 if test "x$lang_alias" = x
4744 then
4745 echo "$lang doesn't set \$language." 1>&2
4746 exit 1
4747 fi
4748 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
4749 subdirs="$subdirs $subdir"
349c3166
OH
4750
4751 # $gcc_subdir is where the gcc integration files are to be found
4752 # for a language, both for internal compiler purposes (compiler
4753 # sources implementing front-end to GCC tree converters), and for
4754 # build infrastructure purposes (Make-lang.in, etc.)
4755 #
4756 # This will be <subdir> (relative to $srcdir) if a line like
4757 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
4758 # is found in <langdir>/config-lang.in, and will remain <langdir>
4759 # otherwise.
4760 #
4761 # Except for the language alias (fetched above), the regular
4762 # "config-lang.in" contents are always retrieved from $gcc_subdir,
4763 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
4764 # only this and the language alias.
4765
4766 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
4767 if [ "$gcc_subdir" = "" ]; then
4768 gcc_subdir="$subdir"
4769 fi
4770
cc11cc9b
PB
4771 case ",$enable_languages," in
4772 *,$lang_alias,*)
4773 all_selected_languages="$all_selected_languages $lang_alias"
349c3166
OH
4774 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
4775 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
cc11cc9b
PB
4776 fi
4777 ;;
4778 esac
4779changequote([,])dnl
4780
cc11cc9b
PB
4781 language=
4782 boot_language=
4783 compilers=
cc11cc9b
PB
4784 outputs=
4785 gtfiles=
1546bb64 4786 subdir_requires=
349c3166 4787 . ${srcdir}/$gcc_subdir/config-lang.in
cc11cc9b
PB
4788 if test "x$language" = x
4789 then
349c3166 4790 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
cc11cc9b
PB
4791 exit 1
4792 fi
1546bb64
PB
4793
4794 ok=:
4795 case ",$enable_languages," in
4796 *,$lang_alias,*) ;;
4797 *)
4798 for i in $subdir_requires; do
b6348cb3 4799 test -f "${srcdir}/$i/config-lang.in" && continue
1546bb64
PB
4800 ok=false
4801 break
4802 done
4803 ;;
4804 esac
4805 $ok || continue
4806
349c3166
OH
4807 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4808 if test -f $srcdir/$gcc_subdir/lang.opt; then
4809 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
fd438373 4810 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
1546bb64 4811 fi
349c3166
OH
4812 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4813 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
1546bb64 4814 fi
cc11cc9b 4815 all_languages="$all_languages $language"
cc11cc9b 4816 all_compilers="$all_compilers $compilers"
cc11cc9b 4817 all_outputs="$all_outputs $outputs"
11a67599 4818 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
d7f09764
DN
4819 case ",$enable_languages," in
4820 *,lto,*)
4821 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4822 enable_lto=yes
4823 AC_SUBST(enable_lto)
4824 ;;
4825 *) ;;
4826 esac
571a8de5
DE
4827done
4828
8ac9d31f
TJ
4829# Pick up gtfiles for c
4830gtfiles=
8ac9d31f 4831. ${srcdir}/c-config-lang.in
11a67599 4832all_gtfiles="$all_gtfiles [[c]] $gtfiles"
8ac9d31f 4833
cbc59f01 4834check_languages=
cc11cc9b 4835for language in $all_selected_languages
cbc59f01 4836do
cc11cc9b 4837 check_languages="$check_languages check-$language"
cbc59f01
DD
4838done
4839
62b81e45 4840# We link each language in with a set of hooks, reached indirectly via
cc11cc9b 4841# lang.${target}. Only do so for selected languages.
571a8de5
DE
4842
4843rm -f Make-hooks
4844touch Make-hooks
bd97af06 4845target_list="all.cross start.encap rest.encap tags \
55bcd32b
AJ
4846 install-common install-man install-info install-pdf install-html dvi \
4847 pdf html uninstall info man srcextra srcman srcinfo \
2a4c0366 4848 mostlyclean clean distclean maintainer-clean install-plugin"
cc11cc9b 4849
571a8de5
DE
4850for t in $target_list
4851do
4852 x=
cc11cc9b 4853 for lang in $all_selected_languages
571a8de5 4854 do
cc11cc9b 4855 x="$x $lang.$t"
571a8de5
DE
4856 done
4857 echo "lang.$t: $x" >> Make-hooks
4858done
4859
fd438373
MM
4860# --------
4861# Option include files
4862# --------
4863
4864${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
4865option_includes="option-includes.mk"
4866AC_SUBST_FILE(option_includes)
4867
630327c3
NN
4868# --------
4869# UNSORTED
4870# --------
4871
cc06d68c 4872# Create .gdbinit.
296e46bd 4873
cc06d68c
GP
4874echo "dir ." > .gdbinit
4875echo "dir ${srcdir}" >> .gdbinit
4876if test x$gdb_needs_out_file_path = xyes
4877then
4878 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4879fi
4880if test "x$subdirs" != x; then
4881 for s in $subdirs
4882 do
4883 echo "dir ${srcdir}/$s" >> .gdbinit
4884 done
296e46bd 4885fi
cc06d68c 4886echo "source ${srcdir}/gdbinit.in" >> .gdbinit
296e46bd 4887
15c723f3 4888gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
d062c304 4889AC_SUBST(gcc_tooldir)
4c112cda 4890AC_SUBST(dollar)
d062c304 4891
2bbea3a6
RH
4892# Find a directory in which to install a shared libgcc.
4893
4894AC_ARG_ENABLE(version-specific-runtime-libs,
b88ecf55
AS
4895[AS_HELP_STRING([--enable-version-specific-runtime-libs],
4896 [specify that runtime libraries should be
4897 installed in a compiler-specific directory])])
2bbea3a6 4898
46f18e7b
RK
4899# Substitute configuration variables
4900AC_SUBST(subdirs)
8ac9d31f 4901AC_SUBST(srcdir)
46f18e7b 4902AC_SUBST(all_compilers)
e2500fed 4903AC_SUBST(all_gtfiles)
2ed26f6b 4904AC_SUBST(all_lang_makefrags)
9f3d1bc2 4905AC_SUBST(all_languages)
cc11cc9b 4906AC_SUBST(all_selected_languages)
9f3d1bc2
BK
4907AC_SUBST(build_exeext)
4908AC_SUBST(build_install_headers_dir)
4909AC_SUBST(build_xm_file_list)
e22340b0 4910AC_SUBST(build_xm_include_list)
11642c3a 4911AC_SUBST(build_xm_defines)
a0e527e3 4912AC_SUBST(build_file_translate)
cbc59f01 4913AC_SUBST(check_languages)
9f3d1bc2 4914AC_SUBST(cpp_install_dir)
2ed26f6b
ZW
4915AC_SUBST(xmake_file)
4916AC_SUBST(tmake_file)
aca600aa
AS
4917AC_SUBST(TM_ENDIAN_CONFIG)
4918AC_SUBST(TM_MULTILIB_CONFIG)
4919AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
30500d84 4920AC_SUBST(extra_gcc_objs)
9b91e436
KT
4921AC_SUBST(user_headers_inc_next_pre)
4922AC_SUBST(user_headers_inc_next_post)
9f3d1bc2 4923AC_SUBST(extra_headers_list)
46f18e7b 4924AC_SUBST(extra_objs)
9f3d1bc2
BK
4925AC_SUBST(extra_passes)
4926AC_SUBST(extra_programs)
9f3d1bc2 4927AC_SUBST(float_h_file)
cc1e60ea 4928AC_SUBST(gcc_config_arguments)
9f3d1bc2 4929AC_SUBST(gcc_gxx_include_dir)
9f3d1bc2 4930AC_SUBST(host_exeext)
46f18e7b 4931AC_SUBST(host_xm_file_list)
e22340b0 4932AC_SUBST(host_xm_include_list)
11642c3a 4933AC_SUBST(host_xm_defines)
476d9098 4934AC_SUBST(out_host_hook_obj)
9f3d1bc2 4935AC_SUBST(install)
d7b42618 4936AC_SUBST(lang_opt_files)
9f3d1bc2 4937AC_SUBST(lang_specs_files)
3103b7db 4938AC_SUBST(lang_tree_files)
46f18e7b 4939AC_SUBST(local_prefix)
9f3d1bc2
BK
4940AC_SUBST(md_file)
4941AC_SUBST(objc_boehm_gc)
4942AC_SUBST(out_file)
4943AC_SUBST(out_object_file)
c49a6962
JM
4944AC_SUBST(common_out_file)
4945AC_SUBST(common_out_object_file)
9f3d1bc2 4946AC_SUBST(tm_file_list)
e22340b0 4947AC_SUBST(tm_include_list)
d5355cb2 4948AC_SUBST(tm_defines)
11642c3a 4949AC_SUBST(tm_p_file_list)
e22340b0
ZW
4950AC_SUBST(tm_p_include_list)
4951AC_SUBST(xm_file_list)
4952AC_SUBST(xm_include_list)
3d9d2476 4953AC_SUBST(xm_defines)
207bf79d 4954AC_SUBST(use_gcc_stdint)
aac69a49
NC
4955AC_SUBST(c_target_objs)
4956AC_SUBST(cxx_target_objs)
c776a6d0 4957AC_SUBST(fortran_target_objs)
11642c3a 4958AC_SUBST(target_cpu_default)
46f18e7b 4959
46f18e7b
RK
4960AC_SUBST_FILE(language_hooks)
4961
7903cebc
NN
4962# Echo link setup.
4963if test x${build} = x${host} ; then
4964 if test x${host} = x${target} ; then
4965 echo "Links are now set up to build a native compiler for ${target}." 1>&2
4966 else
4967 echo "Links are now set up to build a cross-compiler" 1>&2
4968 echo " from ${host} to ${target}." 1>&2
4969 fi
46f18e7b 4970else
7903cebc
NN
4971 if test x${host} = x${target} ; then
4972 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
4973 echo " for ${target}." 1>&2
4974 else
4975 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
4976 echo " from ${host} to ${target}." 1>&2
4977 fi
46f18e7b
RK
4978fi
4979
6de9cd9a
DN
4980AC_ARG_VAR(GMPLIBS,[How to link GMP])
4981AC_ARG_VAR(GMPINC,[How to find GMP include files])
4982
f8bf9252
SP
4983AC_ARG_VAR(PPLLIBS,[How to link PPL])
4984AC_ARG_VAR(PPLINC,[How to find PPL include files])
4985
4986AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
4987AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
4988if test "x${CLOOGLIBS}" != "x" ; then
4989 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
4990fi
4991
68a607d8
DN
4992# Check for plugin support
4993AC_ARG_ENABLE(plugin,
b88ecf55 4994[AS_HELP_STRING([--enable-plugin], [enable plugin support])],
68a607d8
DN
4995enable_plugin=$enableval,
4996enable_plugin=yes; default_plugin=yes)
4997
4998pluginlibs=
601fc26e 4999
709e26f0
MK
5000case "${host}" in
5001 *-*-darwin*)
5002 if test x$build = x$host; then
5003 export_sym_check="nm${exeext} -g"
515871c7 5004 elif test x$host = x$target; then
9ec69d2e 5005 export_sym_check="$gcc_cv_nm -g"
709e26f0
MK
5006 else
5007 export_sym_check=
5008 fi
5009 ;;
5010 *)
5011 if test x$build = x$host; then
5012 export_sym_check="objdump${exeext} -T"
515871c7 5013 elif test x$host = x$target; then
9ec69d2e 5014 export_sym_check="$gcc_cv_objdump -T"
709e26f0
MK
5015 else
5016 export_sym_check=
5017 fi
5018 ;;
5019esac
5020
5021if test x"$enable_plugin" = x"yes"; then
5022
601fc26e 5023 AC_MSG_CHECKING([for exported symbols])
709e26f0
MK
5024 if test "x$export_sym_check" != x; then
5025 echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5026 ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
9ec69d2e 5027 if $export_sym_check conftest | grep foobar > /dev/null; then
709e26f0
MK
5028 : # No need to use a flag
5029 AC_MSG_RESULT([yes])
601fc26e 5030 else
709e26f0
MK
5031 AC_MSG_RESULT([yes])
5032 AC_MSG_CHECKING([for -rdynamic])
5033 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
5034 if $export_sym_check conftest | grep foobar > /dev/null; then
5035 plugin_rdynamic=yes
5036 pluginlibs="-rdynamic"
5037 else
5038 plugin_rdynamic=no
5039 enable_plugin=no
5040 fi
5041 AC_MSG_RESULT([$plugin_rdynamic])
601fc26e 5042 fi
709e26f0
MK
5043 else
5044 AC_MSG_RESULT([unable to check])
68a607d8
DN
5045 fi
5046
5047 # Check -ldl
30ce157e 5048 saved_LIBS="$LIBS"
0c2edd9f
ILT
5049 AC_SEARCH_LIBS([dlopen], [dl])
5050 if test x"$ac_cv_search_dlopen" = x"-ldl"; then
68a607d8
DN
5051 pluginlibs="$pluginlibs -ldl"
5052 fi
30ce157e 5053 LIBS="$saved_LIBS"
68a607d8
DN
5054
5055 # Check that we can build shared objects with -fPIC -shared
30ce157e 5056 saved_LDFLAGS="$LDFLAGS"
d8ed14ce 5057 saved_CFLAGS="$CFLAGS"
9ec69d2e
JH
5058 case "${host}" in
5059 *-*-darwin*)
d8ed14ce
IS
5060 CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5061 CFLAGS="$CFLAGS -fPIC"
5062 LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
9ec69d2e
JH
5063 ;;
5064 *)
d8ed14ce 5065 CFLAGS="$CFLAGS -fPIC"
9ec69d2e
JH
5066 LDFLAGS="$LDFLAGS -fPIC -shared"
5067 ;;
5068 esac
68a607d8
DN
5069 AC_MSG_CHECKING([for -fPIC -shared])
5070 AC_TRY_LINK(
5071 [extern int X;],[return X == 0;],
5072 [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5073 [AC_MSG_RESULT([no]); have_pic_shared=no])
0c2edd9f 5074 if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
68a607d8
DN
5075 pluginlibs=
5076 enable_plugin=no
5077 fi
30ce157e 5078 LDFLAGS="$saved_LDFLAGS"
d8ed14ce 5079 CFLAGS="$saved_CFLAGS"
68a607d8
DN
5080
5081 # If plugin support had been requested but not available, fail.
5082 if test x"$enable_plugin" = x"no" ; then
5083 if test x"$default_plugin" != x"yes"; then
5084 AC_MSG_ERROR([
5085Building GCC with plugin support requires a host that supports
5086-fPIC, -shared, -ldl and -rdynamic.])
5087 fi
5088 fi
68a607d8
DN
5089fi
5090
5091AC_SUBST(pluginlibs)
5092AC_SUBST(enable_plugin)
5093if test x"$enable_plugin" = x"yes"; then
5094 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5095fi
5096
87e6d9dc
TB
5097
5098AC_ARG_ENABLE(libquadmath-support,
5099[AS_HELP_STRING([--disable-libquadmath-support],
5100 [disable libquadmath support for Fortran])],
5101ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5102ENABLE_LIBQUADMATH_SUPPORT=yes)
5103if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5104 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5105 [Define to 1 to enable libquadmath support])
5106fi
5107
5108
79bec923
ST
5109# Specify what hash style to use by default.
5110AC_ARG_WITH([linker-hash-style],
5111[AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5112 [specify the linker hash style])],
5113[case x"$withval" in
5114 xsysv)
5115 LINKER_HASH_STYLE=sysv
5116 ;;
5117 xgnu)
5118 LINKER_HASH_STYLE=gnu
5119 ;;
5120 xboth)
5121 LINKER_HASH_STYLE=both
5122 ;;
5123 *)
5124 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5125 ;;
5126 esac],
5127[LINKER_HASH_STYLE=''])
5128if test x"${LINKER_HASH_STYLE}" != x; then
5129 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5130 [The linker hash style])
5131fi
5132
46f18e7b
RK
5133# Configure the subdirectories
5134# AC_CONFIG_SUBDIRS($subdirs)
5135
5136# Create the Makefile
5891b37d 5137# and configure language subdirectories
914c5af7
NN
5138AC_CONFIG_FILES($all_outputs)
5139
5140AC_CONFIG_COMMANDS([default],
cdcc6a01 5141[
f1faaabd
NN
5142case ${CONFIG_HEADERS} in
5143 *auto-host.h:config.in*)
5144 echo > cstamp-h ;;
cdcc6a01 5145esac
2ed26f6b 5146# Make sure all the subdirs exist.
c49a6962 5147for d in $subdirs doc build common c-family
2ed26f6b 5148do
2ed26f6b 5149 test -d $d || mkdir $d
2ed26f6b 5150done
0d24f4d1 5151],
35f06ae4 5152[subdirs='$subdirs'])
914c5af7 5153AC_OUTPUT
fd438373 5154