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