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