]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/configure.ac
re PR target/37436 (arm-cross-g++. internal compiler error: in extract_insn, at recog...
[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
6e97481b
JJ
2008# Figure out what readelf we will be using.
2009AS_VAR_SET_IF(gcc_cv_readelf,, [
2010if test -f $gcc_cv_binutils_srcdir/configure.in \
2011 && test -f ../binutils/Makefile \
2012 && test x$build = x$host; then
2013 # Single tree build which includes binutils.
2014 gcc_cv_readelf=../binutils/readelf$build_exeext
2015elif test -x readelf$build_exeext; then
2016 gcc_cv_readelf=./readelf$build_exeext
2017else
2018 AC_PATH_PROG(gcc_cv_readelf, readelf)
2019fi])
2020
2021AC_MSG_CHECKING(what readelf to use)
2022if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2023 # Single tree build which includes binutils.
2024 AC_MSG_RESULT(newly built readelf)
2025elif test x$gcc_cv_readelf = x; then
2026 AC_MSG_RESULT(not found)
2027else
2028 AC_MSG_RESULT($gcc_cv_readelf)
2029fi
2030
981d4858 2031# Figure out what assembler alignment features are present.
8ada417f
ZW
2032gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2033 [2,6,0],,
2034[.balign 4
2035.p2align 2],,
2036[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2037 [Define if your assembler supports .balign and .p2align.])])
2038
2039gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2040 [2,8,0],,
2041 [.p2align 4,,7],,
2042[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2043 [Define if your assembler supports specifying the maximum number
2044 of bytes to skip when using the GAS .p2align command.])])
2045
5708d18d
MS
2046gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2047 [2,8,0],,
2048 [.literal16],,
2049[AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2050 [Define if your assembler supports .literal16.])])
2051
8ada417f
ZW
2052gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2053 [elf,2,9,0],,
2054 [conftest_label1: .word 0
d1accaa3
JJ
2055.subsection -1
2056conftest_label2: .word 0
8ada417f
ZW
2057.previous],
2058 [if test x$gcc_cv_nm != x; then
2059 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2060 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2061 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2062 then :
2063 else gcc_cv_as_subsection_m1=yes
2064 fi
2065 rm -f conftest.nm1 conftest.nm2
2066 fi],
2067 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2068 [Define if your assembler supports .subsection and .subsection -1 starts
2069 emitting at the beginning of your section.])])
2070
2071gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2072 [2,2,0],,
2073 [ .weak foobar],,
2074[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2075
a0203ca7
AO
2076gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2077 [2,17,0],,
2078 [ .weakref foobar, barfnot],,
2079[AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2080
e41f3691
JDA
2081gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2082 [2,15,91],,
2083 [ .SPACE $TEXT$
2084 .NSUBSPA $CODE$,COMDAT],,
2085[AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2086
8ada417f
ZW
2087# .hidden needs to be supported in both the assembler and the linker,
2088# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2089# This is irritatingly difficult to feature test for; we have to check the
2090# date string after the version number. If we've got an in-tree
2091# ld, we don't know its patchlevel version, so we set the baseline at 2.13
2092# to be safe.
2093# The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2094gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2095 [elf,2,13,0],,
2096[ .hidden foobar
2097foobar:])
2098
2099AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2100[if test $in_tree_ld = yes ; then
2101 gcc_cv_ld_hidden=no
2102 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 \
2103 && test $in_tree_ld_is_elf = yes; then
2104 gcc_cv_ld_hidden=yes
2105 fi
2106else
2107 gcc_cv_ld_hidden=yes
bace148a 2108 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
8ada417f 2109 if echo "$ld_ver" | grep GNU > /dev/null; then
c72931a6 2110changequote(,)dnl
8ada417f 2111 ld_vers=`echo $ld_ver | sed -n \
115e6e55 2112 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
8ada417f 2113 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
2114 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2115 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2116 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
8ada417f
ZW
2117 if test 0"$ld_date" -lt 20020404; then
2118 if test -n "$ld_date"; then
2119 # If there was date string, but was earlier than 2002-04-04, fail
2120 gcc_cv_ld_hidden=no
2121 elif test -z "$ld_vers"; then
2122 # If there was no date string nor ld version number, something is wrong
2123 gcc_cv_ld_hidden=no
2124 else
8ada417f
ZW
2125 test -z "$ld_vers_patch" && ld_vers_patch=0
2126 if test "$ld_vers_major" -lt 2; then
2127 gcc_cv_ld_hidden=no
2128 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2129 gcc_cv_ld_hidden="no"
2130 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2131 gcc_cv_ld_hidden=no
c72931a6 2132 fi
8ada417f
ZW
2133 fi
2134changequote([,])dnl
789b7de5 2135 fi
8ada417f 2136 else
28690784 2137 case "${target}" in
b0fd7d27 2138 hppa64*-*-hpux* | ia64*-*-hpux*)
28690784
JDA
2139 gcc_cv_ld_hidden=yes
2140 ;;
2141 *)
2142 gcc_cv_ld_hidden=no
2143 ;;
2144 esac
8ada417f
ZW
2145 fi
2146fi])
2147libgcc_visibility=no
9e944a16 2148AC_SUBST(libgcc_visibility)
232b67d9 2149GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
0f31374d 2150if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
8ada417f
ZW
2151 libgcc_visibility=yes
2152 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2153 [Define if your assembler and linker support .hidden.])
2154fi
6a9c5260 2155
e73da78e
RO
2156AC_MSG_CHECKING(linker read-only and read-write section mixing)
2157gcc_cv_ld_ro_rw_mix=unknown
2158if test $in_tree_ld = yes ; then
2159 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 \
2160 && test $in_tree_ld_is_elf = yes; then
2161 gcc_cv_ld_ro_rw_mix=read-write
2162 fi
2163elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2164 echo '.section myfoosect, "a"' > conftest1.s
2165 echo '.section myfoosect, "aw"' > conftest2.s
2166 echo '.byte 1' >> conftest2.s
2167 echo '.section myfoosect, "a"' > conftest3.s
2168 echo '.byte 0' >> conftest3.s
2169 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2170 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2171 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2172 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2173 conftest2.o conftest3.o > /dev/null 2>&1; then
2174 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2175 | sed -e '/myfoosect/!d' -e N`
2176 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2177 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2178 gcc_cv_ld_ro_rw_mix=read-only
2179 else
2180 gcc_cv_ld_ro_rw_mix=read-write
2181 fi
2182 fi
2183 fi
2184changequote(,)dnl
2185 rm -f conftest.* conftest[123].*
2186changequote([,])dnl
2187fi
2188if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2189 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2190 [Define if your linker links a mix of read-only
2191 and read-write sections into a read-write section.])
2192fi
2193AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2194
8ada417f
ZW
2195# Check if we have .[us]leb128, and support symbol arithmetic with it.
2196gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2197 [elf,2,11,0],,
2198[ .data
b7460f24
RH
2199 .uleb128 L2 - L1
2200L1:
2201 .uleb128 1280
2202 .sleb128 -1010
8ada417f
ZW
2203L2:],
2204 [# GAS versions before 2.11 do not support uleb128,
2205 # despite appearing to.
2206 # ??? There exists an elf-specific test that will crash
2207 # the assembler. Perhaps it's better to figure out whether
2208 # arbitrary sections are supported and try the test.
bace148a 2209 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
8ada417f 2210 if echo "$as_ver" | grep GNU > /dev/null; then
78e766a0 2211changequote(,)dnl
ddcd0f6f 2212 as_vers=`echo $as_ver | sed -n \
115e6e55 2213 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
ddcd0f6f
BS
2214 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2215 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
78e766a0 2216changequote([,])dnl
8ada417f
ZW
2217 if test $as_major -eq 2 && test $as_minor -lt 11
2218 then :
2219 else gcc_cv_as_leb128=yes
2220 fi
2221 fi],
2222 [AC_DEFINE(HAVE_AS_LEB128, 1,
2223 [Define if your assembler supports .sleb128 and .uleb128.])])
2224
d4ea4622
RH
2225# Check if we have assembler support for unwind directives.
2226gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
6e60703f 2227 ,,
d4ea4622
RH
2228[ .text
2229 .cfi_startproc
2230 .cfi_offset 0, 0
2231 .cfi_same_value 1
2232 .cfi_def_cfa 1, 2
2233 .cfi_escape 1, 2, 3, 4, 5
e73da78e
RO
2234 .cfi_endproc],
2235[case "$target" in
2236 *-*-solaris*)
2237 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2238 # read-only and read-write sections, we need to make sure that the
2239 # assembler used emits read-write .eh_frame sections.
2240 if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2241 if test "x$gcc_cv_objdump" != x; then
2242 if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2243 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2244 gcc_cv_as_cfi_directive=no
2245 else
2246 gcc_cv_as_cfi_directive=yes
2247 fi
2248 else
2249 # no objdump, err on the side of caution
2250 gcc_cv_as_cfi_directive=no
2251 fi
2252 else
2253 gcc_cv_as_cfi_directive=yes
2254 fi
2255 ;;
2256 *-*-*)
2257 gcc_cv_as_cfi_directive=yes
2258 ;;
2259esac])
6e97481b
JJ
2260if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_readelf != x; then
2261gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2262 ,,
2263[ .text
2264 .cfi_startproc
2265 .cfi_adjust_cfa_offset 64
2266 .skip 512, 0
2267 .cfi_adjust_cfa_offset 128
2268 .cfi_endproc],
2269[
2270changequote(,)dnl
2271if $gcc_cv_readelf -wf conftest.o 2>/dev/null \
2272 | grep 'DW_CFA_advance_loc[12]:[ ][ ]*512[ ]' >/dev/null; then
2273 gcc_cv_as_cfi_advance_working=yes
2274fi
2275changequote([,])dnl
2276])
2277else
2278 gcc_cv_as_cfi_advance_working=yes
2279fi
d4ea4622 2280AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
6e97481b
JJ
2281 [`if test $gcc_cv_as_cfi_directive = yes \
2282 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
058514b3
RH
2283 [Define 0/1 if your assembler supports CFI directives.])
2284
2285gcc_GAS_CHECK_FEATURE([cfi personality directive],
6e60703f 2286 gcc_cv_as_cfi_personality_directive, ,,
058514b3 2287[ .text
042628f9 2288 .cfi_startproc
058514b3
RH
2289 .cfi_personality 0, symbol
2290 .cfi_endproc])
2291AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2292 [`if test $gcc_cv_as_cfi_personality_directive = yes;
2293 then echo 1; else echo 0; fi`],
2294 [Define 0/1 if your assembler supports .cfi_personality.])
d4ea4622 2295
8ada417f
ZW
2296# GAS versions up to and including 2.11.0 may mis-optimize
2297# .eh_frame data.
2298gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2299 [elf,2,12,0],,
2300[ .text
c64688ae
RH
2301.LFB1:
2302 .4byte 0
2303.L1:
2304 .4byte 0
2305.LFE1:
2306 .section .eh_frame,"aw",@progbits
2307__FRAME_BEGIN__:
2308 .4byte .LECIE1-.LSCIE1
2309.LSCIE1:
2310 .4byte 0x0
2311 .byte 0x1
2312 .ascii "z\0"
2313 .byte 0x1
2314 .byte 0x78
2315 .byte 0x1a
2316 .byte 0x0
2317 .byte 0x4
2318 .4byte 1
2319 .p2align 1
2320.LECIE1:
2321.LSFDE1:
2322 .4byte .LEFDE1-.LASFDE1
2323.LASFDE1:
2324 .4byte .LASFDE1-__FRAME_BEGIN__
2325 .4byte .LFB1
2326 .4byte .LFE1-.LFB1
2327 .byte 0x4
2328 .4byte .LFE1-.LFB1
2329 .byte 0x4
2330 .4byte .L1-.LFB1
8ada417f 2331.LEFDE1:],
ba479fd2
NN
2332[ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2333cat > conftest.lit <<EOF
c64688ae
RH
2334 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2335 0010 01000000 12000000 18000000 00000000 ................
ba479fd2 2336 0020 08000000 04080000 0044 .........D @&t@
01efb963 2337EOF
ba479fd2 2338cat > conftest.big <<EOF
01efb963
AS
2339 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2340 0010 00000001 00000012 00000018 00000000 ................
ba479fd2 2341 0020 00000008 04000000 0844 .........D @&t@
c64688ae 2342EOF
8ada417f
ZW
2343 # If the assembler didn't choke, and we can objdump,
2344 # and we got the correct data, then succeed.
dbc02e7f
AS
2345 # The text in the here-document typically retains its unix-style line
2346 # endings, while the output of objdump will use host line endings.
2347 # Therefore, use diff -b for the comparisons.
8ada417f
ZW
2348 if test x$gcc_cv_objdump != x \
2349 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2350 | tail -3 > conftest.got \
dbc02e7f
AS
2351 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2352 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
8ada417f
ZW
2353 then
2354 gcc_cv_as_eh_frame=yes
2355 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2356 gcc_cv_as_eh_frame=buggy
2357 else
2358 # Uh oh, what do we do now?
2359 gcc_cv_as_eh_frame=no
2360 fi])
2361
2362if test $gcc_cv_as_eh_frame = buggy; then
2363 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2364 [Define if your assembler mis-optimizes .eh_frame data.])
201556f0 2365fi
201556f0 2366
8ada417f
ZW
2367gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2368 [elf,2,12,0], [--fatal-warnings],
5d4856a0 2369 [.section .rodata.str, "aMS", @progbits, 1])
c18a5b6c
MM
2370if test $gcc_cv_as_shf_merge = no; then
2371 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2372 [elf,2,12,0], [--fatal-warnings],
2373 [.section .rodata.str, "aMS", %progbits, 1])
2374fi
5d4856a0
RO
2375AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2376 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2377[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
8ada417f 2378
c18a5b6c 2379gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
11176d2a 2380 [elf,2,16,0], [--fatal-warnings],
c18a5b6c
MM
2381 [.section .text,"axG",@progbits,.foo,comdat])
2382if test $gcc_cv_as_comdat_group = yes; then
2383 gcc_cv_as_comdat_group_percent=no
2384else
2385 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
11176d2a 2386 [elf,2,16,0], [--fatal-warnings],
c18a5b6c
MM
2387 [.section .text,"axG",%progbits,.foo,comdat])
2388fi
11176d2a
JB
2389if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2390 comdat_group=yes
2391 if test 0"$ld_date" -lt 20050308; then
2392 if test -n "$ld_date"; then
2393 # If there was date string, but was earlier than 2005-03-08, fail
2394 comdat_group=no
2395 elif test "$ld_vers_major" -lt 2; then
2396 comdat_group=no
2397 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2398 comdat_group=no
2399 fi
2400 fi
1cf0118d
RO
2401else
2402 # assume linkers other than GNU ld don't support COMDAT group
2403 comdat_group=no
2404fi
2405if test $comdat_group = no; then
2406 gcc_cv_as_comdat_group=no
2407 gcc_cv_as_comdat_group_percent=no
11176d2a
JB
2408fi
2409AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
c18a5b6c 2410 [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
11176d2a 2411[Define 0/1 if your assembler and linker support COMDAT groups.])
c18a5b6c 2412
6a7a462c 2413# Thread-local storage - the check is heavily parameterized.
f996902d
RH
2414conftest_s=
2415tls_first_major=
2416tls_first_minor=
9739c90c 2417tls_as_opt=
f996902d
RH
2418case "$target" in
2419changequote(,)dnl
6f9b006d
RH
2420 alpha*-*-*)
2421 conftest_s='
2422 .section ".tdata","awT",@progbits
2423foo: .long 25
2424 .text
2425 ldq $27,__tls_get_addr($29) !literal!1
2426 lda $16,foo($29) !tlsgd!1
2427 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2428 ldq $27,__tls_get_addr($29) !literal!2
2429 lda $16,foo($29) !tlsldm!2
2430 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2431 ldq $1,foo($29) !gotdtprel
2432 ldah $2,foo($29) !dtprelhi
2433 lda $3,foo($2) !dtprello
2434 lda $4,foo($29) !dtprel
2435 ldq $1,foo($29) !gottprel
2436 ldah $2,foo($29) !tprelhi
2437 lda $3,foo($2) !tprello
2438 lda $4,foo($29) !tprel'
2439 tls_first_major=2
2440 tls_first_minor=13
2f3321ca 2441 tls_as_opt=--fatal-warnings
6f9b006d 2442 ;;
e4dd71de
AH
2443 frv*-*-*)
2444 conftest_s='
2445 .section ".tdata","awT",@progbits
2446x: .long 25
2447 .text
2448 call #gettlsoff(x)'
2449 tls_first_major=2
2450 tls_first_minor=14
2451 ;;
51076f96
RC
2452 hppa*-*-linux*)
2453 conftest_s='
2454t1: .reg %r20
2455t2: .reg %r21
2456gp: .reg %r19
2457 .section ".tdata","awT",@progbits
2458foo: .long 25
2459 .text
2460 .align 4
2461 addil LT%foo-$tls_gdidx$,gp
2462 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2463 b __tls_get_addr
2464 nop
2465 addil LT%foo-$tls_ldidx$,gp
2466 b __tls_get_addr
2467 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2468 addil LR%foo-$tls_dtpoff$,%ret0
2469 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2470 mfctl %cr27,%t1
2471 addil LT%foo-$tls_ieoff$,gp
2472 ldw RT%foo-$tls_ieoff$(%r1),%t2
2473 add %t1,%t2,%t3
2474 mfctl %cr27,%t1
2475 addil LR%foo-$tls_leoff$,%t1
2476 ldo RR%foo-$tls_leoff$(%r1),%t2'
2477 tls_first_major=2
2478 tls_first_minor=15
2479 tls_as_opt=--fatal-warnings
2480 ;;
d3585b76
DJ
2481 arm*-*-*)
2482 conftest_s='
2483 .section ".tdata","awT",%progbits
2484foo: .long 25
2485 .text
2486.word foo(gottpoff)
2487.word foo(tpoff)
2488.word foo(tlsgd)
2489.word foo(tlsldm)
2490.word foo(tlsldo)'
2491 tls_first_major=2
2492 tls_first_minor=17
2493 ;;
f996902d 2494 i[34567]86-*-*)
f996902d
RH
2495 conftest_s='
2496 .section ".tdata","awT",@progbits
2497foo: .long 25
2498 .text
2499 movl %gs:0, %eax
2500 leal foo@TLSGD(,%ebx,1), %eax
2501 leal foo@TLSLDM(%ebx), %eax
2502 leal foo@DTPOFF(%eax), %edx
2503 movl foo@GOTTPOFF(%ebx), %eax
2504 subl foo@GOTTPOFF(%ebx), %eax
75d38379
JJ
2505 addl foo@GOTNTPOFF(%ebx), %eax
2506 movl foo@INDNTPOFF, %eax
f996902d
RH
2507 movl $foo@TPOFF, %eax
2508 subl $foo@TPOFF, %eax
2509 leal foo@NTPOFF(%ecx), %eax'
2510 tls_first_major=2
75d38379 2511 tls_first_minor=14
2f3321ca 2512 tls_as_opt=--fatal-warnings
75d38379
JJ
2513 ;;
2514 x86_64-*-*)
2515 conftest_s='
2516 .section ".tdata","awT",@progbits
2517foo: .long 25
2518 .text
2519 movq %fs:0, %rax
2520 leaq foo@TLSGD(%rip), %rdi
2521 leaq foo@TLSLD(%rip), %rdi
2522 leaq foo@DTPOFF(%rax), %rdx
2523 movq foo@GOTTPOFF(%rip), %rax
2524 movq $foo@TPOFF, %rax'
2525 tls_first_major=2
2526 tls_first_minor=14
2f3321ca 2527 tls_as_opt=--fatal-warnings
f996902d 2528 ;;
7b6e506e
RH
2529 ia64-*-*)
2530 conftest_s='
2531 .section ".tdata","awT",@progbits
2532foo: data8 25
2533 .text
2534 addl r16 = @ltoff(@dtpmod(foo#)), gp
2535 addl r17 = @ltoff(@dtprel(foo#)), gp
2536 addl r18 = @ltoff(@tprel(foo#)), gp
2537 addl r19 = @dtprel(foo#), gp
2538 adds r21 = @dtprel(foo#), r13
2539 movl r23 = @dtprel(foo#)
2540 addl r20 = @tprel(foo#), gp
2541 adds r22 = @tprel(foo#), r13
2542 movl r24 = @tprel(foo#)'
2543 tls_first_major=2
2544 tls_first_minor=13
2f3321ca 2545 tls_as_opt=--fatal-warnings
7b6e506e 2546 ;;
69229b81
DJ
2547 mips*-*-*)
2548 conftest_s='
2549 .section .tdata,"awT",@progbits
2550x:
2551 .word 2
2552 .text
2553 addiu $4, $28, %tlsgd(x)
2554 addiu $4, $28, %tlsldm(x)
2555 lui $4, %dtprel_hi(x)
2556 addiu $4, $4, %dtprel_lo(x)
2557 lw $4, %gottprel(x)($28)
2558 lui $4, %tprel_hi(x)
2559 addiu $4, $4, %tprel_lo(x)'
2560 tls_first_major=2
2561 tls_first_minor=16
2562 tls_as_opt='-32 --fatal-warnings'
2563 ;;
c4501e62
JJ
2564 powerpc-*-*)
2565 conftest_s='
2566 .section ".tdata","awT",@progbits
2567 .align 2
2568ld0: .space 4
2569ld1: .space 4
2570x1: .space 4
2571x2: .space 4
2572x3: .space 4
2573 .text
2574 addi 3,31,ld0@got@tlsgd
2575 bl __tls_get_addr
2576 addi 3,31,x1@got@tlsld
2577 bl __tls_get_addr
2578 addi 9,3,x1@dtprel
2579 addis 9,3,x2@dtprel@ha
2580 addi 9,9,x2@dtprel@l
2581 lwz 9,x3@got@tprel(31)
2582 add 9,9,x@tls
2583 addi 9,2,x1@tprel
2584 addis 9,2,x2@tprel@ha
2585 addi 9,9,x2@tprel@l'
2586 tls_first_major=2
2587 tls_first_minor=14
2f3321ca 2588 tls_as_opt="-a32 --fatal-warnings"
c4501e62
JJ
2589 ;;
2590 powerpc64-*-*)
2591 conftest_s='
2592 .section ".tdata","awT",@progbits
2593 .align 3
2594ld0: .space 8
2595ld1: .space 8
2596x1: .space 8
2597x2: .space 8
2598x3: .space 8
2599 .text
2600 addi 3,2,ld0@got@tlsgd
2601 bl .__tls_get_addr
2602 nop
2603 addi 3,2,ld1@toc
2604 bl .__tls_get_addr
2605 nop
2606 addi 3,2,x1@got@tlsld
2607 bl .__tls_get_addr
2608 nop
2609 addi 9,3,x1@dtprel
2610 bl .__tls_get_addr
2611 nop
2612 addis 9,3,x2@dtprel@ha
2613 addi 9,9,x2@dtprel@l
2614 bl .__tls_get_addr
2615 nop
2616 ld 9,x3@got@dtprel(2)
2617 add 9,9,3
2618 bl .__tls_get_addr
2619 nop'
2620 tls_first_major=2
2621 tls_first_minor=14
2f3321ca 2622 tls_as_opt="-a64 --fatal-warnings"
c4501e62 2623 ;;
fd3cd001
UW
2624 s390-*-*)
2625 conftest_s='
2626 .section ".tdata","awT",@progbits
2627foo: .long 25
2628 .text
2629 .long foo@TLSGD
2630 .long foo@TLSLDM
2631 .long foo@DTPOFF
2632 .long foo@NTPOFF
2633 .long foo@GOTNTPOFF
2634 .long foo@INDNTPOFF
2635 l %r1,foo@GOTNTPOFF(%r12)
2636 l %r1,0(%r1):tls_load:foo
2637 bas %r14,0(%r1,%r13):tls_gdcall:foo
2638 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2639 tls_first_major=2
2640 tls_first_minor=14
2f3321ca 2641 tls_as_opt="-m31 --fatal-warnings"
fd3cd001
UW
2642 ;;
2643 s390x-*-*)
2644 conftest_s='
2645 .section ".tdata","awT",@progbits
2646foo: .long 25
2647 .text
2648 .quad foo@TLSGD
2649 .quad foo@TLSLDM
2650 .quad foo@DTPOFF
2651 .quad foo@NTPOFF
2652 .quad foo@GOTNTPOFF
2653 lg %r1,foo@GOTNTPOFF(%r12)
2654 larl %r1,foo@INDNTPOFF
2655 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2656 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2657 tls_first_major=2
2658 tls_first_minor=14
2f3321ca 2659 tls_as_opt="-m64 -Aesame --fatal-warnings"
fd3cd001 2660 ;;
9ff13962
KK
2661 sh-*-* | sh[34]-*-*)
2662 conftest_s='
2663 .section ".tdata","awT",@progbits
2664foo: .long 25
2665 .text
2666 .long foo@TLSGD
2667 .long foo@TLSLDM
2668 .long foo@DTPOFF
2669 .long foo@GOTTPOFF
2670 .long foo@TPOFF'
2671 tls_first_major=2
2672 tls_first_minor=13
2f3321ca 2673 tls_as_opt=--fatal-warnings
9ff13962 2674 ;;
5751a10b 2675 sparc*-*-*)
2f3321ca 2676 case "$target" in
7935dc1b
EB
2677 sparc*-sun-solaris2.[56789]*)
2678 # TLS was introduced in the Solaris 9 4/04 release but
2679 # we do not enable it by default on Solaris 9 either.
2680 if test "x$enable_tls" = xyes ; then
2681 on_solaris=yes
2682 else
2683 enable_tls=no;
2684 fi
2685 ;;
2f3321ca
EB
2686 sparc*-sun-solaris2.*)
2687 on_solaris=yes
2688 ;;
2689 *)
2690 on_solaris=no
2691 ;;
2692 esac
2693 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2694 conftest_s='
2695 .section ".tdata",#alloc,#write,#tls
2696foo: .long 25
2697 .text
2698 sethi %tgd_hi22(foo), %o0
2699 add %o0, %tgd_lo10(foo), %o1
2700 add %l7, %o1, %o0, %tgd_add(foo)
2701 call __tls_get_addr, %tgd_call(foo)
2702 sethi %tldm_hi22(foo), %l1
2703 add %l1, %tldm_lo10(foo), %l2
2704 add %l7, %l2, %o0, %tldm_add(foo)
2705 call __tls_get_addr, %tldm_call(foo)
2706 sethi %tldo_hix22(foo), %l3
2707 xor %l3, %tldo_lox10(foo), %l4
2708 add %o0, %l4, %l5, %tldo_add(foo)
2709 sethi %tie_hi22(foo), %o3
2710 add %o3, %tie_lo10(foo), %o3
2711 ld [%l7 + %o3], %o2, %tie_ld(foo)
2712 add %g7, %o2, %o4, %tie_add(foo)
2713 sethi %tle_hix22(foo), %l1
2714 xor %l1, %tle_lox10(foo), %o5
2715 ld [%g7 + %o5], %o1'
2716 tls_first_major=0
2717 tls_first_minor=0
2718 else
2719 conftest_s='
5751a10b
JJ
2720 .section ".tdata","awT",@progbits
2721foo: .long 25
2722 .text
2723 sethi %tgd_hi22(foo), %o0
2724 add %o0, %tgd_lo10(foo), %o1
2725 add %l7, %o1, %o0, %tgd_add(foo)
2726 call __tls_get_addr, %tgd_call(foo)
2727 sethi %tldm_hi22(foo), %l1
2728 add %l1, %tldm_lo10(foo), %l2
2729 add %l7, %l2, %o0, %tldm_add(foo)
2730 call __tls_get_addr, %tldm_call(foo)
2731 sethi %tldo_hix22(foo), %l3
2732 xor %l3, %tldo_lox10(foo), %l4
2733 add %o0, %l4, %l5, %tldo_add(foo)
2734 sethi %tie_hi22(foo), %o3
2735 add %o3, %tie_lo10(foo), %o3
2736 ld [%l7 + %o3], %o2, %tie_ld(foo)
2737 add %g7, %o2, %o4, %tie_add(foo)
2738 sethi %tle_hix22(foo), %l1
2739 xor %l1, %tle_lox10(foo), %o5
2740 ld [%g7 + %o5], %o1'
2741 tls_first_major=2
2742 tls_first_minor=14
2f3321ca
EB
2743 tls_as_opt="-32 --fatal-warnings"
2744 fi
5751a10b 2745 ;;
6a7a462c
BW
2746 xtensa*-*-*)
2747 conftest_s='
2748 .section ".tdata","awT",@progbits
2749foo: .long 25
2750 .text
2751 movi a8, foo@TLSFUNC
2752 movi a10, foo@TLSARG
2753 callx8.tls a8, foo@TLSCALL'
2754 tls_first_major=2
2755 tls_first_minor=19
2756 ;;
5751a10b 2757changequote([,])dnl
f996902d 2758esac
8dea1cca
DD
2759set_have_as_tls=no
2760if test "x$enable_tls" = xno ; then
2761 : # TLS explicitly disabled.
2762elif test "x$enable_tls" = xyes ; then
2763 set_have_as_tls=yes # TLS explicitly enabled.
2764elif test -z "$tls_first_major"; then
8ada417f
ZW
2765 : # If we don't have a check, assume no support.
2766else
2767 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2f3321ca 2768 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
8dea1cca
DD
2769 [set_have_as_tls=yes])
2770fi
2771if test $set_have_as_tls = yes ; then
2772 AC_DEFINE(HAVE_AS_TLS, 1,
2773 [Define if your assembler supports thread-local storage.])
f996902d 2774fi
8ada417f
ZW
2775
2776# Target-specific assembler checks.
f996902d 2777
7e9d8517
L
2778AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2779gcc_cv_ld_static_dynamic=no
2780if test $in_tree_ld = yes ; then
2781 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2782 gcc_cv_ld_static_dynamic=yes
2783 fi
2784elif test x$gcc_cv_ld != x; then
2785 # Check if linker supports -Bstatic/-Bdynamic option
2786 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2787 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2788 gcc_cv_ld_static_dynamic=yes
2789 fi
2790fi
2791if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2792 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2793[Define if your linker supports -Bstatic/-Bdynamic option.])
2794fi
2795AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2796
d594623a
L
2797if test x"$demangler_in_ld" = xyes; then
2798 AC_MSG_CHECKING(linker --demangle support)
2799 gcc_cv_ld_demangle=no
2800 if test $in_tree_ld = yes; then
2801 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 \
2802 gcc_cv_ld_demangle=yes
2803 fi
2804 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2805 # Check if the GNU linker supports --demangle option
2806 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2807 gcc_cv_ld_demangle=yes
2808 fi
2809 fi
2810 if test x"$gcc_cv_ld_demangle" = xyes; then
2811 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2812[Define if your linker supports --demangle option.])
2813 fi
2814 AC_MSG_RESULT($gcc_cv_ld_demangle)
2815fi
2816
275b60d6 2817case "$target" in
3a37b08e
RH
2818 # All TARGET_ABI_OSF targets.
2819 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
8ada417f
ZW
2820 gcc_GAS_CHECK_FEATURE([explicit relocation support],
2821 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2822[ .set nomacro
3a37b08e
RH
2823 .text
2824 extbl $3, $2, $3 !lituse_bytoff!1
2825 ldq $2, a($29) !literal!1
2826 ldq $4, b($29) !literal!2
2827 ldq_u $3, 0($2) !lituse_base!1
2828 ldq $27, f($29) !literal!5
2829 jsr $26, ($27), f !lituse_jsr!5
2830 ldah $29, 0($26) !gpdisp!3
2831 lda $0, c($29) !gprel
2832 ldah $1, d($29) !gprelhigh
2833 lda $1, d($1) !gprellow
8ada417f
ZW
2834 lda $29, 0($29) !gpdisp!3],,
2835 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2836 [Define if your assembler supports explicit relocations.])])
d006f5eb
RH
2837 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2838 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2839[ .set nomacro
2840 .text
2841 ldq $27, a($29) !literal!1
2842 jsr $26, ($27), a !lituse_jsrdirect!1],,
2843 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2844 [Define if your assembler supports the lituse_jsrdirect relocation.])])
3a37b08e 2845 ;;
e95b1e6a 2846
682a45fc
HPN
2847 cris-*-*)
2848 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2849 gcc_cv_as_cris_no_mul_bug,[2,15,91],
2850 [-no-mul-bug-abort], [.text],,
2851 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2852 [Define if your assembler supports the -no-mul-bug-abort option.])])
2853 ;;
2854
8ada417f
ZW
2855 sparc*-*-*)
2856 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2857 [.register %g2, #scratch],,
2858 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2859 [Define if your assembler supports .register.])])
2860
2861 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2862 [-relax], [.text],,
2863 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2864 [Define if your assembler supports -relax option.])])
2865
2866 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2867 gcc_cv_as_sparc_ua_pcrel,,
2868 [-K PIC],
2869[.text
2870foo:
2871 nop
2872.data
2873.align 4
2874.byte 0
2875.uaword %r_disp32(foo)],
2876 [if test x$gcc_cv_ld != x \
2877 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2878 gcc_cv_as_sparc_ua_pcrel=yes
2879 fi
2880 rm -f conftest],
2881 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
17e9e88c 2882 [Define if your assembler and linker support unaligned PC relative relocs.])
cf7b8b0d 2883
8ada417f
ZW
2884 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2885 gcc_cv_as_sparc_ua_pcrel_hidden,,
2886 [-K PIC],
2887[.data
2888.align 4
2889.byte 0x31
2890.uaword %r_disp32(foo)
2891.byte 0x32, 0x33, 0x34
2892.global foo
2893.hidden foo
2894foo:
2895.skip 4],
2896 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2897 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2898 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2899 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2900 if $gcc_cv_objdump -R conftest 2> /dev/null \
2901 | grep 'DISP32' > /dev/null 2>&1; then
2902 :
22252625 2903 else
8ada417f 2904 gcc_cv_as_sparc_ua_pcrel_hidden=yes
5b68c389 2905 fi
8ada417f
ZW
2906 fi
2907 rm -f conftest],
2908 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2909 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2910 ]) # unaligned pcrel relocs
2911
2912 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2913 gcc_cv_as_sparc_offsetable_lo10,,
2914 [-xarch=v9],
2915[.text
2916 or %g1, %lo(ab) + 12, %g1
2917 or %g1, %lo(ab + 12), %g1],
2918 [if test x$gcc_cv_objdump != x \
ecb0ccbc 2919 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
8ada417f 2920 | grep ' 82106000 82106000' > /dev/null 2>&1; then
1b5c0152 2921 gcc_cv_as_sparc_offsetable_lo10=yes
8ada417f
ZW
2922 fi],
2923 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2924 [Define if your assembler supports offsetable %lo().])])
1cb36a98
RH
2925 ;;
2926
2927changequote(,)dnl
c307e6dd 2928 i[34567]86-*-* | x86_64-*-*)
1cb36a98 2929changequote([,])dnl
d38bc601
BF
2930 case $target_os in
2931 cygwin* | pe | mingw32*)
2932 # Used for DWARF 2 in PE
2933 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2934 gcc_cv_as_ix86_pe_secrel32,
2935 [2,15,91],,
2936[.text
2937foo: nop
2938.data
2939 .secrel32 foo],
2940 [if test x$gcc_cv_ld != x \
2941 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2942 gcc_cv_as_ix86_pe_secrel32=yes
2943 fi
2944 rm -f conftest],
2945 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2946 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2947 ;;
2948 esac
2949
8ada417f
ZW
2950 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2951 gcc_cv_as_ix86_filds_fists,
2952 [2,9,0],, [filds mem; fists mem],,
2953 [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2954 [Define if your assembler uses the new HImode fild and fist notation.])])
2955
f6f5dff2
RO
2956 gcc_GAS_CHECK_FEATURE([cmov syntax],
2957 gcc_cv_as_ix86_cmov_sun_syntax,,,
2958 [cmovl.l %edx, %eax],,
2959 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2960 [Define if your assembler supports the Sun syntax for cmov.])])
2961
b6c03bcd
RS
2962 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
2963 gcc_cv_as_ix86_ffreep,,,
2964 [ffreep %st(1)],,
2965 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
2966 [Define if your assembler supports the ffreep mnemonic.])])
2967
38ca3765
UB
2968 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
2969 gcc_cv_as_ix86_sahf,,,
2970 [sahf],,
2971 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
2972 [Define if your assembler supports the sahf mnemonic.])])
2973
68b92f78
RS
2974 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
2975 gcc_cv_as_ix86_diff_sect_delta,,,
2976 [.section .rodata
2977.L1:
2978 .long .L2-.L1
2979 .long .L3-.L1
2980 .text
2981.L3: nop
2982.L2: nop],,
2983 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
2984 [Define if your assembler supports the subtraction of symbols in different sections.])])
2985
6f3ca281
ZW
2986 # This one is used unconditionally by i386.[ch]; it is to be defined
2987 # to 1 if the feature is present, 0 otherwise.
8ada417f
ZW
2988 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2989 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2990[ .text
f88c65f7
RH
2991.L0:
2992 nop
2993 .data
6f3ca281
ZW
2994 .long .L0@GOTOFF])
2995 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2996 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2997 [Define true if the assembler supports '.long foo@GOTOFF'.])
1cb36a98 2998 ;;
ef1ecf87
RH
2999
3000 ia64*-*-*)
8ada417f
ZW
3001 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3002 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
cfa9ee99 3003[ .text
ef1ecf87
RH
3004 addl r15 = @ltoffx(x#), gp
3005 ;;
cfa9ee99 3006 ld8.mov r16 = [[r15]], x#],,
8ada417f
ZW
3007 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3008 [Define if your assembler supports ltoffx and ldxmov relocations.])])
3009
ef1ecf87 3010 ;;
8ada417f 3011
2c4a9cff 3012 powerpc*-*-*)
8ada417f 3013 case $target in
432218ba
DE
3014 *-*-aix*) conftest_s=' .machine "pwr5"
3015 .csect .text[[PR]]
6b37db3c 3016 mfcr 3,128';;
8af4d362
PB
3017 *-*-darwin*)
3018 gcc_GAS_CHECK_FEATURE([.machine directive support],
3019 gcc_cv_as_machine_directive,,,
3020 [ .machine ppc7400])
3021 if test x$gcc_cv_as_machine_directive != xyes; then
3022 echo "*** This target requires an assembler supporting \".machine\"" >&2
3023 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3024 test x$build = x$target && exit 1
3025 fi
3026 conftest_s=' .text
6b37db3c 3027 mfcr r3,128';;
4c67db14 3028 *) conftest_s=' .machine power4
d2ab3e37 3029 .text
6b37db3c 3030 mfcr 3,128';;
8ada417f 3031 esac
8ada417f
ZW
3032
3033 gcc_GAS_CHECK_FEATURE([mfcr field support],
3034 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3035 [$conftest_s],,
3036 [AC_DEFINE(HAVE_AS_MFCRF, 1,
3037 [Define if your assembler supports mfcr field.])])
432218ba
DE
3038
3039 case $target in
3040 *-*-aix*) conftest_s=' .machine "pwr5"
3041 .csect .text[[PR]]
3042 popcntb 3,3';;
3043 *) conftest_s=' .machine power5
3044 .text
3045 popcntb 3,3';;
3046 esac
3047
3048 gcc_GAS_CHECK_FEATURE([popcntb support],
3049 gcc_cv_as_powerpc_popcntb, [2,17,0],,
3050 [$conftest_s],,
3051 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3052 [Define if your assembler supports popcntb field.])])
3053
9719f3b7
DE
3054 case $target in
3055 *-*-aix*) conftest_s=' .machine "pwr5x"
3056 .csect .text[[PR]]
3057 frin 1,1';;
1e04bfdc 3058 *) conftest_s=' .machine power5
9719f3b7
DE
3059 .text
3060 frin 1,1';;
3061 esac
3062
3063 gcc_GAS_CHECK_FEATURE([fp round support],
3064 gcc_cv_as_powerpc_fprnd, [2,17,0],,
3065 [$conftest_s],,
3066 [AC_DEFINE(HAVE_AS_FPRND, 1,
3067 [Define if your assembler supports fprnd.])])
3068
44cd321e
PS
3069 case $target in
3070 *-*-aix*) conftest_s=' .machine "pwr6"
3071 .csect .text[[PR]]
3072 mffgpr 1,3';;
3073 *) conftest_s=' .machine power6
3074 .text
3075 mffgpr 1,3';;
3076 esac
3077
3078 gcc_GAS_CHECK_FEATURE([move fp gpr support],
3079 gcc_cv_as_powerpc_mfpgpr, [9,99,0],,
3080 [$conftest_s],,
3081 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3082 [Define if your assembler supports mffgpr and mftgpr.])])
3083
7f970b70
AM
3084 case $target in
3085 *-*-aix*) conftest_s=' .csect .text[[PR]]
3086LCF..0:
3087 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3088 *-*-darwin*)
3089 conftest_s=' .text
3090LCF0:
3091 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3092 *) conftest_s=' .text
3093.LCF0:
3094 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3095 esac
3096
695d8830
AS
3097 gcc_GAS_CHECK_FEATURE([rel16 relocs],
3098 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3099 [$conftest_s],,
3100 [AC_DEFINE(HAVE_AS_REL16, 1,
3101 [Define if your assembler supports R_PPC_REL16 relocs.])])
3102
b639c3c2
JJ
3103 case $target in
3104 *-*-aix*) conftest_s=' .machine "pwr6"
3105 .csect .text[[PR]]
3106 cmpb 3,4,5';;
3107 *) conftest_s=' .machine power6
3108 .text
3109 cmpb 3,4,5';;
3110 esac
3111
3112 gcc_GAS_CHECK_FEATURE([compare bytes support],
3113 gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
3114 [$conftest_s],,
3115 [AC_DEFINE(HAVE_AS_CMPB, 1,
3116 [Define if your assembler supports cmpb.])])
3117
3118 case $target in
3119 *-*-aix*) conftest_s=' .machine "pwr6"
3120 .csect .text[[PR]]
0d74c0ee 3121 dadd 1,2,3';;
b639c3c2
JJ
3122 *) conftest_s=' .machine power6
3123 .text
0d74c0ee 3124 dadd 1,2,3';;
b639c3c2
JJ
3125 esac
3126
3127 gcc_GAS_CHECK_FEATURE([decimal float support],
3128 gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
3129 [$conftest_s],,
3130 [AC_DEFINE(HAVE_AS_DFP, 1,
3131 [Define if your assembler supports DFP instructions.])])
e51917ae 3132
d40c9e33
PB
3133 case $target in
3134 *-*-aix*) conftest_s=' .machine "pwr7"
3135 .csect .text[[PR]]
3136 lxvd2x 1,2,3';;
3137 *) conftest_s=' .machine power7
3138 .text
3139 lxvd2x 1,2,3';;
3140 esac
3141
3142 gcc_GAS_CHECK_FEATURE([vector-scalar support],
3143 gcc_cv_as_powerpc_vsx, [9,99,0], -a32,
3144 [$conftest_s],,
3145 [AC_DEFINE(HAVE_AS_VSX, 1,
3146 [Define if your assembler supports VSX instructions.])])
3147
e51917ae
JM
3148 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3149 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3150 [.gnu_attribute 4,1],,
3151 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3152 [Define if your assembler supports .gnu_attribute.])])
2c4a9cff 3153 ;;
53b5ce19 3154
8ada417f
ZW
3155 mips*-*-*)
3156 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3157 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3158[ lw $4,%gp_rel(foo)($4)],,
3159 [if test x$target_cpu_default = x
3160 then target_cpu_default=MASK_EXPLICIT_RELOCS
3161 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3162 fi])
4551169f
RS
3163 gcc_GAS_CHECK_FEATURE([-mno-shared support],
3164 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3165 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3166 [Define if the assembler understands -mno-shared.])])
dcb957d9
JM
3167
3168 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3169 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3170 [.gnu_attribute 4,1],,
3171 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3172 [Define if your assembler supports .gnu_attribute.])])
a44380d2
JM
3173
3174 gcc_GAS_CHECK_FEATURE([.dtprelword support],
3175 gcc_cv_as_mips_dtprelword, [2,18,0],,
3176 [.section .tdata,"awT",@progbits
3177x:
3178 .word 2
3179 .text
3180 .dtprelword x+0x8000],,
3181 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3182 [Define if your assembler supports .dtprelword.])])
dbad5e72
SE
3183 ;;
3184esac
3185
3186# Mips and HP-UX need the GNU assembler.
3187# Linux on IA64 might be able to use the Intel assembler.
8ada417f 3188
dbad5e72
SE
3189case "$target" in
3190 mips*-*-* | *-*-hpux* )
82563d35
RS
3191 if test x$gas_flag = xyes \
3192 || test x"$host" != x"$build" \
3193 || test ! -x "$gcc_cv_as" \
3194 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
3195 :
3196 else
3197 echo "*** This configuration requires the GNU assembler" >&2
3198 exit 1
3199 fi
8ada417f
ZW
3200 ;;
3201esac
dbad5e72 3202
9d147085
RH
3203# ??? Not all targets support dwarf2 debug_line, even within a version
3204# of gas. Moreover, we need to emit a valid instruction to trigger any
3205# info to the output file. So, as supported targets are added to gas 2.11,
3206# add some instruction here to (also) show we expect this might work.
3207# ??? Once 2.11 is released, probably need to add first known working
3208# version to the per-target configury.
3209case "$target" in
80486e06 3210 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
cd985f66 3211 | x86_64*-*-* | hppa*-*-* | arm*-*-* \
6d656178 3212 | xstormy16*-*-* | cris-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \
15a43677 3213 | spu-*-* | fido*-*-* | m32c-*-*)
9d147085
RH
3214 insn="nop"
3215 ;;
57116d8d 3216 ia64*-*-* | s390*-*-*)
9d147085
RH
3217 insn="nop 0"
3218 ;;
2853bc5a
HPN
3219 mmix-*-*)
3220 insn="swym 0"
3221 ;;
8ada417f
ZW
3222esac
3223if test x"$insn" != x; then
3224 conftest_s="\
3225 .file 1 \"conftest.s\"
3226 .loc 1 3 0
3227 $insn"
3228 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3229 gcc_cv_as_dwarf2_debug_line,
3230 [elf,2,11,0],, [$conftest_s],
080a5bb0
EB
3231 [if test x$gcc_cv_objdump != x \
3232 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3233 | grep debug_line > /dev/null 2>&1; then
8ada417f
ZW
3234 gcc_cv_as_dwarf2_debug_line=yes
3235 fi])
3236
3237# The .debug_line file table must be in the exact order that
3238# we specified the files, since these indices are also used
3239# by DW_AT_decl_file. Approximate this test by testing if
3240# the assembler bitches if the same index is assigned twice.
3241 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3242 gcc_cv_as_dwarf2_file_buggy,,,
3243[ .file 1 "foo.s"
3244 .file 1 "bar.s"])
3245
3246 if test $gcc_cv_as_dwarf2_debug_line = yes \
3247 && test $gcc_cv_as_dwarf2_file_buggy = no; then
9d147085 3248 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
8ada417f 3249 [Define if your assembler supports dwarf2 .file/.loc directives,
eaec9b3d 3250 and preserves file table indices exactly as given.])
8ada417f
ZW
3251 fi
3252
3253 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3254 gcc_cv_as_gdwarf2_flag,
3255 [elf,2,11,0], [--gdwarf2], [$insn],,
3256 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3257[Define if your assembler supports the --gdwarf2 option.])])
3258
3259 gcc_GAS_CHECK_FEATURE([--gstabs option],
3260 gcc_cv_as_gstabs_flag,
3261 [elf,2,11,0], [--gstabs], [$insn],
3262 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3263 # and warns about it, but still exits successfully. So check for
3264 # this.
3265 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3266 then :
3267 else gcc_cv_as_gstabs_flag=yes
3268 fi],
3269 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3270[Define if your assembler supports the --gstabs option.])])
c8aea42c
PB
3271
3272 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
3273 gcc_cv_as_debug_prefix_map_flag,
303a4698 3274 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
c8aea42c
PB
3275 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
3276[Define if your assembler supports the --debug-prefix-map option.])])
9d147085 3277fi
5f0e9ea2 3278
28e6bb13
NC
3279gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
3280 ,,
3281[.lcomm bar,4,16],,
3282[AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
3283 [Define if your assembler supports .lcomm with an alignment field.])])
3284
03943c05
AO
3285AC_CACHE_CHECK([assembler for tolerance to line number 0],
3286 [gcc_cv_as_line_zero],
3287 [gcc_cv_as_line_zero=no
3288 if test $in_tree_gas = yes; then
cf0eb7a1 3289 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
03943c05
AO
3290 elif test "x$gcc_cv_as" != x; then
3291 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3292 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3293 test "x`cat conftest.out`" = x
3294 then
3295 gcc_cv_as_line_zero=yes
3296 else
3297 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3298 cat conftest.s >&AS_MESSAGE_LOG_FD
3299 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3300 cat conftest.out >&AS_MESSAGE_LOG_FD
3301 fi
3302 rm -f conftest.o conftest.s conftest.out
3303 fi])
3304if test "x$gcc_cv_as_line_zero" = xyes; then
3305 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3306[Define if the assembler won't complain about a line such as # 0 "" 2.])
3307fi
3308
275b60d6
JJ
3309AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3310gcc_cv_ld_eh_frame_hdr=no
34a86c2b 3311if test $in_tree_ld = yes ; then
5408ac6c
HPN
3312 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 \
3313 && test $in_tree_ld_is_elf = yes; then
275b60d6
JJ
3314 gcc_cv_ld_eh_frame_hdr=yes
3315 fi
3316elif test x$gcc_cv_ld != x; then
3317 # Check if linker supports --eh-frame-hdr option
3318 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3319 gcc_cv_ld_eh_frame_hdr=yes
3320 fi
3321fi
232b67d9 3322GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
275b60d6
JJ
3323if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3324 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3325[Define if your linker supports --eh-frame-hdr option.])
3326fi
3327AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3328
24a4dd31
JJ
3329AC_MSG_CHECKING(linker position independent executable support)
3330gcc_cv_ld_pie=no
3331if test $in_tree_ld = yes ; then
5408ac6c
HPN
3332 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 \
3333 && test $in_tree_ld_is_elf = yes; then
24a4dd31
JJ
3334 gcc_cv_ld_pie=yes
3335 fi
3336elif test x$gcc_cv_ld != x; then
3337 # Check if linker supports -pie option
3338 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3339 gcc_cv_ld_pie=yes
3340 fi
3341fi
3342if test x"$gcc_cv_ld_pie" = xyes; then
3343 AC_DEFINE(HAVE_LD_PIE, 1,
3344[Define if your linker supports -pie option.])
3345fi
3346AC_MSG_RESULT($gcc_cv_ld_pie)
3347
22ba88ef
EB
3348AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3349gcc_cv_ld_eh_gc_sections=no
3350if test $in_tree_ld = yes ; then
3351 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 \
3352 && test $in_tree_ld_is_elf = yes; then
3353 gcc_cv_ld_eh_gc_sections=yes
3354 fi
3355elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3356 cat > conftest.s <<EOF
3357 .section .text
3358.globl _start
3359 .type _start, @function
3360_start:
3361 .long foo
3362 .size _start, .-_start
3363 .section .text.foo,"ax",@progbits
3364 .type foo, @function
3365foo:
3366 .long 0
3367 .size foo, .-foo
3368 .section .gcc_except_table.foo,"a",@progbits
3369.L0:
3370 .long 0
3371 .section .eh_frame,"a",@progbits
3372 .long .L0
3373EOF
3374 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3375 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3376 | grep "gc-sections option ignored" > /dev/null; then
3377 gcc_cv_ld_eh_gc_sections=no
3378 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3379 gcc_cv_ld_eh_gc_sections=yes
e9d207d9
EB
3380 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3381 if test x$gcc_cv_as_comdat_group != xyes; then
3382 gcc_cv_ld_eh_gc_sections=no
3383 cat > conftest.s <<EOF
3384 .section .text
3385.globl _start
3386 .type _start, @function
3387_start:
3388 .long foo
3389 .size _start, .-_start
3390 .section .gnu.linkonce.t.foo,"ax",@progbits
3391 .type foo, @function
3392foo:
3393 .long 0
3394 .size foo, .-foo
3395 .section .gcc_except_table.foo,"a",@progbits
3396.L0:
3397 .long 0
3398 .section .eh_frame,"a",@progbits
3399 .long .L0
3400EOF
3401 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3402 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3403 | grep "gc-sections option ignored" > /dev/null; then
3404 gcc_cv_ld_eh_gc_sections=no
3405 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3406 gcc_cv_ld_eh_gc_sections=yes
3407 fi
3408 fi
3409 fi
22ba88ef
EB
3410 fi
3411 fi
3412 rm -f conftest.s conftest.o conftest
3413fi
e9d207d9
EB
3414case "$target" in
3415 hppa*-*-linux*)
3416 # ??? This apparently exposes a binutils bug with PC-relative relocations.
3417 gcc_cv_ld_eh_gc_sections=no
3418 ;;
3419esac
22ba88ef
EB
3420if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3421 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3422 [Define if your linker supports garbage collection of
3423 sections in presence of EH frames.])
3424fi
3425AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3426
630327c3
NN
3427# --------
3428# UNSORTED
3429# --------
3430
82e923f6
RS
3431AC_CACHE_CHECK(linker --as-needed support,
3432gcc_cv_ld_as_needed,
3433[gcc_cv_ld_as_needed=no
765f1bf9
AM
3434if test $in_tree_ld = yes ; then
3435 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 \
3436 && test $in_tree_ld_is_elf = yes; then
3437 gcc_cv_ld_as_needed=yes
3438 fi
3439elif test x$gcc_cv_ld != x; then
3440 # Check if linker supports --as-needed and --no-as-needed options
3441 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3442 gcc_cv_ld_as_needed=yes
3443 fi
3444fi
82e923f6 3445])
765f1bf9
AM
3446if test x"$gcc_cv_ld_as_needed" = xyes; then
3447 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3448[Define if your linker supports --as-needed and --no-as-needed options.])
3449fi
765f1bf9 3450
d82bf747
AM
3451case "$target:$tm_file" in
3452 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
85b776df
AM
3453 AC_CACHE_CHECK(linker support for omitting dot symbols,
3454 gcc_cv_ld_no_dot_syms,
3455 [gcc_cv_ld_no_dot_syms=no
3456 if test $in_tree_ld = yes ; then
3457 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
3458 gcc_cv_ld_no_dot_syms=yes
3459 fi
3460 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3461 cat > conftest1.s <<EOF
3462 .text
3463 bl .foo
3464EOF
3465 cat > conftest2.s <<EOF
3466 .section ".opd","aw"
3467 .align 3
3468 .globl foo
3469 .type foo,@function
3470foo:
3471 .quad .LEfoo,.TOC.@tocbase,0
3472 .text
3473.LEfoo:
3474 blr
3475 .size foo,.-.LEfoo
3476EOF
3477 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3478 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3479 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3480 gcc_cv_ld_no_dot_syms=yes
3481 fi
3482 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3483 fi
3484 ])
3485 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3486 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3487 [Define if your PowerPC64 linker only needs function descriptor syms.])
3488 fi
3489 ;;
3490esac
3491
380e5ca4
MM
3492AC_CACHE_CHECK(linker --sysroot support,
3493 gcc_cv_ld_sysroot,
3494 [gcc_cv_ld_sysroot=no
3495 if test $in_tree_ld = yes ; then
3496 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 3497 gcc_cv_ld_sysroot=yes
380e5ca4
MM
3498 fi
3499 elif test x$gcc_cv_ld != x; then
3500 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3501 gcc_cv_ld_sysroot=yes
3502 fi
3503 fi])
3504if test x"$gcc_cv_ld_sysroot" = xyes; then
3505 AC_DEFINE(HAVE_LD_SYSROOT, 1,
3506 [Define if your linker supports --sysroot.])
3507fi
3508
9fb28a67 3509if test x$with_sysroot = x && test x$host = x$target \
c794c06f
CD
3510 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3511 && test "$prefix" != "NONE"; then
8ada417f
ZW
3512 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3513[Define to PREFIX/include if cpp should also search that directory.])
793e9558
PB
3514fi
3515
77008252 3516# Test for stack protector support in target C library.
a6ccdbab 3517AC_CACHE_CHECK(__stack_chk_fail in target C library,
77008252
JJ
3518 gcc_cv_libc_provides_ssp,
3519 [gcc_cv_libc_provides_ssp=no
a6ccdbab 3520 case "$target" in
22f96a0f 3521 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
77008252
JJ
3522 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3523 if test "x$with_sysroot" = x; then
3524 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
c9ecbf86
JM
3525 elif test "x$with_build_sysroot" != "x"; then
3526 glibc_header_dir="${with_build_sysroot}/usr/include"
77008252
JJ
3527 elif test "x$with_sysroot" = xyes; then
3528 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3529 else
3530 glibc_header_dir="${with_sysroot}/usr/include"
3531 fi
3532 else
3533 glibc_header_dir=/usr/include
3534 fi
3535 # glibc 2.4 and later provides __stack_chk_fail and
3536 # either __stack_chk_guard, or TLS access to stack guard canary.
3537 if test -f $glibc_header_dir/features.h \
3538 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
3539 $glibc_header_dir/features.h > /dev/null; then
3540 if $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
3541 $glibc_header_dir/features.h > /dev/null; then
3542 gcc_cv_libc_provides_ssp=yes
3543 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+2' \
3544 $glibc_header_dir/features.h > /dev/null \
3545 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
3546 $glibc_header_dir/features.h > /dev/null; then
3547 gcc_cv_libc_provides_ssp=yes
fed6d628
BF
3548 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
3549 $glibc_header_dir/features.h > /dev/null && \
3550 test -f $glibc_header_dir/bits/uClibc_config.h && \
3551 $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
3552 $glibc_header_dir/bits/uClibc_config.h > /dev/null; then
3553 gcc_cv_libc_provides_ssp=yes
77008252 3554 fi
fed6d628 3555 fi
a6ccdbab 3556 ;;
4cc115a2
TS
3557 *-*-gnu*)
3558 # Avoid complicated tests (see
3559 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
3560 # simply assert that glibc does provide this, which is true for all
3561 # realistically usable GNU/Hurd configurations.
3562 gcc_cv_libc_provides_ssp=yes;;
a6ccdbab
EC
3563 *-*-darwin*)
3564 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3565 [echo "no __stack_chk_fail on this target"])
3566 ;;
77008252 3567 *) gcc_cv_libc_provides_ssp=no ;;
a6ccdbab
EC
3568 esac])
3569
77008252
JJ
3570if test x$gcc_cv_libc_provides_ssp = xyes; then
3571 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3572 [Define if your target C library provides stack protector support])
3573fi
3574
ed965309
JJ
3575# Check if TFmode long double should be used by default or not.
3576# Some glibc targets used DFmode long double, but with glibc 2.4
3577# and later they can use TFmode.
3578case "$target" in
f7cc5390
JM
3579 powerpc*-*-linux* | \
3580 powerpc*-*-gnu* | \
ed965309
JJ
3581 sparc*-*-linux* | \
3582 s390*-*-linux* | \
3583 alpha*-*-linux*)
3584 AC_ARG_WITH(long-double-128,
3585[ --with-long-double-128 Use 128-bit long double by default.],
3586 gcc_cv_target_ldbl128="$with_long_double_128",
3587 [gcc_cv_target_ldbl128=no
3588 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3589 if test "x$with_sysroot" = x; then
3590 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
c9ecbf86
JM
3591 elif test "x$with_build_sysroot" != "x"; then
3592 glibc_header_dir="${with_build_sysroot}/usr/include"
ed965309
JJ
3593 elif test "x$with_sysroot" = xyes; then
3594 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3595 else
3596 glibc_header_dir="${with_sysroot}/usr/include"
3597 fi
3598 else
3599 glibc_header_dir=/usr/include
3600 fi
65280f6c 3601changequote(,)dnl
ed965309
JJ
3602 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3603 $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
65280f6c
JJ
3604 && gcc_cv_target_ldbl128=yes
3605changequote([,])dnl
3606 ])
ed965309
JJ
3607 ;;
3608esac
3609if test x$gcc_cv_target_ldbl128 = xyes; then
3610 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3611 [Define if TFmode long double should be the default])
3612fi
3613
81bf3d9e
RH
3614# Find out what GC implementation we want, or may, use.
3615AC_ARG_WITH(gc,
59415997 3616[ --with-gc={page,zone} choose the garbage collection mechanism to use
e8bec136 3617 with the compiler],
81bf3d9e 3618[case "$withval" in
08cee789 3619 page)
81bf3d9e
RH
3620 GGC=ggc-$withval
3621 ;;
08cee789
DJ
3622 zone)
3623 GGC=ggc-$withval
3624 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3625 ;;
81bf3d9e
RH
3626 *)
3627 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3628 ;;
3629esac],
130fadbb 3630[GGC=ggc-page])
81bf3d9e
RH
3631AC_SUBST(GGC)
3632echo "Using $GGC for garbage collection."
3633
3c809ba4 3634# Use the system's zlib library.
b8dad04b
ZW
3635zlibdir=-L../zlib
3636zlibinc="-I\$(srcdir)/../zlib"
3c809ba4
AG
3637AC_ARG_WITH(system-zlib,
3638[ --with-system-zlib use installed libz],
3639zlibdir=
3640zlibinc=
3641)
3642AC_SUBST(zlibdir)
3643AC_SUBST(zlibinc)
3644
dc6746e7
PT
3645dnl Very limited version of automake's enable-maintainer-mode
3646
3647AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3648 dnl maintainer-mode is disabled by default
3649 AC_ARG_ENABLE(maintainer-mode,
e8bec136
RO
3650[ --enable-maintainer-mode
3651 enable make rules and dependencies not useful
dc6746e7
PT
3652 (and sometimes confusing) to the casual installer],
3653 maintainer_mode=$enableval,
3654 maintainer_mode=no)
3655
3656AC_MSG_RESULT($maintainer_mode)
3657
3658if test "$maintainer_mode" = "yes"; then
3659 MAINT=''
3660else
3661 MAINT='#'
3662fi
3663AC_SUBST(MAINT)dnl
3664
630327c3
NN
3665# --------------
3666# Language hooks
3667# --------------
3668
571a8de5
DE
3669# Make empty files to contain the specs and options for each language.
3670# Then add #include lines to for a compiler that has specs and/or options.
3671
cc11cc9b 3672subdirs=
d7b42618 3673lang_opt_files=
571a8de5 3674lang_specs_files=
3103b7db 3675lang_tree_files=
571a8de5
DE
3676# These (without "all_") are set in each config-lang.in.
3677# `language' must be a single word so is spelled singularly.
3678all_languages=
571a8de5 3679all_compilers=
47ad7893 3680all_outputs='Makefile gccbug'
571a8de5 3681# List of language makefile fragments.
2ed26f6b
ZW
3682all_lang_makefrags=
3683# List of language subdirectory makefiles. Deprecated.
571a8de5 3684all_lang_makefiles=
11a67599 3685# Additional files for gengtype
ef69da62 3686all_gtfiles="$target_gtfiles"
571a8de5 3687
cc11cc9b
PB
3688# These are the languages that are set in --enable-languages,
3689# and are available in the GCC tree.
3690all_selected_languages=
3691
571a8de5
DE
3692# Add the language fragments.
3693# Languages are added via two mechanisms. Some information must be
3694# recorded in makefile variables, these are defined in config-lang.in.
3695# We accumulate them and plug them into the main Makefile.
3696# The other mechanism is a set of hooks for each of the main targets
3697# like `clean', `install', etc.
3698
571a8de5
DE
3699language_hooks="Make-hooks"
3700
cc11cc9b 3701for lang in ${srcdir}/*/config-lang.in
571a8de5 3702do
cc11cc9b 3703changequote(,)dnl
1546bb64
PB
3704 test "$lang" = "${srcdir}/*/config-lang.in" && continue
3705
cc11cc9b
PB
3706 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
3707 if test "x$lang_alias" = x
3708 then
3709 echo "$lang doesn't set \$language." 1>&2
3710 exit 1
3711 fi
3712 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3713 subdirs="$subdirs $subdir"
349c3166
OH
3714
3715 # $gcc_subdir is where the gcc integration files are to be found
3716 # for a language, both for internal compiler purposes (compiler
3717 # sources implementing front-end to GCC tree converters), and for
3718 # build infrastructure purposes (Make-lang.in, etc.)
3719 #
3720 # This will be <subdir> (relative to $srcdir) if a line like
3721 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
3722 # is found in <langdir>/config-lang.in, and will remain <langdir>
3723 # otherwise.
3724 #
3725 # Except for the language alias (fetched above), the regular
3726 # "config-lang.in" contents are always retrieved from $gcc_subdir,
3727 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
3728 # only this and the language alias.
3729
3730 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
3731 if [ "$gcc_subdir" = "" ]; then
3732 gcc_subdir="$subdir"
3733 fi
3734
cc11cc9b
PB
3735 case ",$enable_languages," in
3736 *,$lang_alias,*)
3737 all_selected_languages="$all_selected_languages $lang_alias"
349c3166
OH
3738 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
3739 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
cc11cc9b
PB
3740 fi
3741 ;;
3742 esac
3743changequote([,])dnl
3744
cc11cc9b
PB
3745 language=
3746 boot_language=
3747 compilers=
cc11cc9b
PB
3748 outputs=
3749 gtfiles=
1546bb64 3750 subdir_requires=
349c3166 3751 . ${srcdir}/$gcc_subdir/config-lang.in
cc11cc9b
PB
3752 if test "x$language" = x
3753 then
349c3166 3754 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
cc11cc9b
PB
3755 exit 1
3756 fi
1546bb64
PB
3757
3758 ok=:
3759 case ",$enable_languages," in
3760 *,$lang_alias,*) ;;
3761 *)
3762 for i in $subdir_requires; do
b6348cb3 3763 test -f "${srcdir}/$i/config-lang.in" && continue
1546bb64
PB
3764 ok=false
3765 break
3766 done
3767 ;;
3768 esac
3769 $ok || continue
3770
349c3166
OH
3771 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
3772 if test -f $srcdir/$gcc_subdir/lang.opt; then
3773 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
1546bb64 3774 fi
349c3166
OH
3775 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
3776 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
1546bb64 3777 fi
349c3166
OH
3778 if test -f ${srcdir}/$gcc_subdir/Makefile.in
3779 then all_lang_makefiles="$gcc_subdir/Makefile"
cc11cc9b
PB
3780 fi
3781 all_languages="$all_languages $language"
cc11cc9b 3782 all_compilers="$all_compilers $compilers"
cc11cc9b 3783 all_outputs="$all_outputs $outputs"
11a67599 3784 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
571a8de5
DE
3785done
3786
8ac9d31f
TJ
3787# Pick up gtfiles for c
3788gtfiles=
8ac9d31f 3789. ${srcdir}/c-config-lang.in
11a67599 3790all_gtfiles="$all_gtfiles [[c]] $gtfiles"
8ac9d31f 3791
cbc59f01 3792check_languages=
cc11cc9b 3793for language in $all_selected_languages
cbc59f01 3794do
cc11cc9b 3795 check_languages="$check_languages check-$language"
cbc59f01
DD
3796done
3797
62b81e45 3798# We link each language in with a set of hooks, reached indirectly via
cc11cc9b 3799# lang.${target}. Only do so for selected languages.
571a8de5
DE
3800
3801rm -f Make-hooks
3802touch Make-hooks
bd97af06 3803target_list="all.cross start.encap rest.encap tags \
bcc3d150
BM
3804 install-common install-man install-info install-pdf dvi pdf \
3805 html uninstall info man srcextra srcman srcinfo \
8b1f719a 3806 mostlyclean clean distclean maintainer-clean"
cc11cc9b 3807
571a8de5
DE
3808for t in $target_list
3809do
3810 x=
cc11cc9b 3811 for lang in $all_selected_languages
571a8de5 3812 do
cc11cc9b 3813 x="$x $lang.$t"
571a8de5
DE
3814 done
3815 echo "lang.$t: $x" >> Make-hooks
3816done
3817
630327c3
NN
3818# --------
3819# UNSORTED
3820# --------
3821
cc06d68c 3822# Create .gdbinit.
296e46bd 3823
cc06d68c
GP
3824echo "dir ." > .gdbinit
3825echo "dir ${srcdir}" >> .gdbinit
3826if test x$gdb_needs_out_file_path = xyes
3827then
3828 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3829fi
3830if test "x$subdirs" != x; then
3831 for s in $subdirs
3832 do
3833 echo "dir ${srcdir}/$s" >> .gdbinit
3834 done
296e46bd 3835fi
cc06d68c 3836echo "source ${srcdir}/gdbinit.in" >> .gdbinit
296e46bd 3837
15c723f3 3838gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
d062c304 3839AC_SUBST(gcc_tooldir)
4c112cda 3840AC_SUBST(dollar)
d062c304 3841
2bbea3a6
RH
3842# Find a directory in which to install a shared libgcc.
3843
3844AC_ARG_ENABLE(version-specific-runtime-libs,
e8bec136
RO
3845[ --enable-version-specific-runtime-libs
3846 specify that runtime libraries should be
3847 installed in a compiler-specific directory])
2bbea3a6 3848
5b15f277 3849AC_ARG_WITH(slibdir,
22482f74 3850[ --with-slibdir=DIR shared libraries in DIR [[LIBDIR]]],
5b15f277
RH
3851slibdir="$with_slibdir",
3852if test "${enable_version_specific_runtime_libs+set}" = set; then
2bbea3a6 3853 slibdir='$(libsubdir)'
5b15f277 3854elif test "$host" != "$target"; then
2bbea3a6
RH
3855 slibdir='$(build_tooldir)/lib'
3856else
5b15f277
RH
3857 slibdir='$(libdir)'
3858fi)
2bbea3a6
RH
3859AC_SUBST(slibdir)
3860
22482f74
MS
3861AC_ARG_WITH(datarootdir,
3862[ --with-datarootdir=DIR Use DIR as the data root [[PREFIX/share]]],
3863datarootdir="\${prefix}/$with_datarootdir",
3864datarootdir='$(prefix)/share')
3865AC_SUBST(datarootdir)
3866
3867AC_ARG_WITH(docdir,
3868[ --with-docdir=DIR Install documentation in DIR [[DATAROOTDIR]]],
3869docdir="\${prefix}/$with_docdir",
3870docdir='$(datarootdir)')
3871AC_SUBST(docdir)
3872
3873AC_ARG_WITH(htmldir,
3874[ --with-htmldir=DIR html documentation in in DIR [[DOCDIR]]],
3875htmldir="\${prefix}/$with_htmldir",
3876htmldir='$(docdir)')
3877AC_SUBST(htmldir)
3878
46f18e7b
RK
3879# Substitute configuration variables
3880AC_SUBST(subdirs)
8ac9d31f 3881AC_SUBST(srcdir)
46f18e7b 3882AC_SUBST(all_compilers)
e2500fed 3883AC_SUBST(all_gtfiles)
2ed26f6b 3884AC_SUBST(all_lang_makefrags)
9f3d1bc2
BK
3885AC_SUBST(all_lang_makefiles)
3886AC_SUBST(all_languages)
cc11cc9b 3887AC_SUBST(all_selected_languages)
9f3d1bc2
BK
3888AC_SUBST(build_exeext)
3889AC_SUBST(build_install_headers_dir)
3890AC_SUBST(build_xm_file_list)
e22340b0 3891AC_SUBST(build_xm_include_list)
11642c3a 3892AC_SUBST(build_xm_defines)
a0e527e3 3893AC_SUBST(build_file_translate)
cbc59f01 3894AC_SUBST(check_languages)
9f3d1bc2 3895AC_SUBST(cpp_install_dir)
2ed26f6b
ZW
3896AC_SUBST(xmake_file)
3897AC_SUBST(tmake_file)
30500d84 3898AC_SUBST(extra_gcc_objs)
9f3d1bc2 3899AC_SUBST(extra_headers_list)
46f18e7b 3900AC_SUBST(extra_objs)
9f3d1bc2
BK
3901AC_SUBST(extra_parts)
3902AC_SUBST(extra_passes)
3903AC_SUBST(extra_programs)
9f3d1bc2 3904AC_SUBST(float_h_file)
cc1e60ea 3905AC_SUBST(gcc_config_arguments)
9f3d1bc2 3906AC_SUBST(gcc_gxx_include_dir)
9f3d1bc2 3907AC_SUBST(host_exeext)
46f18e7b 3908AC_SUBST(host_xm_file_list)
e22340b0 3909AC_SUBST(host_xm_include_list)
11642c3a 3910AC_SUBST(host_xm_defines)
476d9098 3911AC_SUBST(out_host_hook_obj)
9f3d1bc2 3912AC_SUBST(install)
d7b42618 3913AC_SUBST(lang_opt_files)
9f3d1bc2 3914AC_SUBST(lang_specs_files)
3103b7db 3915AC_SUBST(lang_tree_files)
46f18e7b 3916AC_SUBST(local_prefix)
9f3d1bc2
BK
3917AC_SUBST(md_file)
3918AC_SUBST(objc_boehm_gc)
3919AC_SUBST(out_file)
3920AC_SUBST(out_object_file)
9f3d1bc2
BK
3921AC_SUBST(thread_file)
3922AC_SUBST(tm_file_list)
e22340b0 3923AC_SUBST(tm_include_list)
d5355cb2 3924AC_SUBST(tm_defines)
11642c3a 3925AC_SUBST(tm_p_file_list)
e22340b0
ZW
3926AC_SUBST(tm_p_include_list)
3927AC_SUBST(xm_file_list)
3928AC_SUBST(xm_include_list)
3d9d2476 3929AC_SUBST(xm_defines)
aac69a49
NC
3930AC_SUBST(c_target_objs)
3931AC_SUBST(cxx_target_objs)
c776a6d0 3932AC_SUBST(fortran_target_objs)
11642c3a 3933AC_SUBST(target_cpu_default)
46f18e7b 3934
46f18e7b
RK
3935AC_SUBST_FILE(language_hooks)
3936
7903cebc
NN
3937# Echo link setup.
3938if test x${build} = x${host} ; then
3939 if test x${host} = x${target} ; then
3940 echo "Links are now set up to build a native compiler for ${target}." 1>&2
3941 else
3942 echo "Links are now set up to build a cross-compiler" 1>&2
3943 echo " from ${host} to ${target}." 1>&2
3944 fi
46f18e7b 3945else
7903cebc
NN
3946 if test x${host} = x${target} ; then
3947 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3948 echo " for ${target}." 1>&2
3949 else
3950 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3951 echo " from ${host} to ${target}." 1>&2
3952 fi
46f18e7b
RK
3953fi
3954
6de9cd9a
DN
3955AC_ARG_VAR(GMPLIBS,[How to link GMP])
3956AC_ARG_VAR(GMPINC,[How to find GMP include files])
3957
f8bf9252
SP
3958AC_ARG_VAR(PPLLIBS,[How to link PPL])
3959AC_ARG_VAR(PPLINC,[How to find PPL include files])
3960
3961AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
3962AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
3963if test "x${CLOOGLIBS}" != "x" ; then
3964 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
3965fi
3966
46f18e7b
RK
3967# Configure the subdirectories
3968# AC_CONFIG_SUBDIRS($subdirs)
3969
3970# Create the Makefile
5891b37d 3971# and configure language subdirectories
914c5af7
NN
3972AC_CONFIG_FILES($all_outputs)
3973
3974AC_CONFIG_COMMANDS([default],
cdcc6a01 3975[
f1faaabd
NN
3976case ${CONFIG_HEADERS} in
3977 *auto-host.h:config.in*)
3978 echo > cstamp-h ;;
cdcc6a01 3979esac
2ed26f6b 3980# Make sure all the subdirs exist.
3b620440 3981for d in $subdirs doc build
2ed26f6b 3982do
2ed26f6b 3983 test -d $d || mkdir $d
2ed26f6b 3984done
0d24f4d1 3985],
35f06ae4 3986[subdirs='$subdirs'])
914c5af7 3987AC_OUTPUT