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