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