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