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