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