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