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