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