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