]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/configure.ac
Merge lto branch into trunk.
[thirdparty/gcc.git] / gcc / configure.ac
CommitLineData
2cd18f76 1# configure.ac for GCC
01dc27ef 2# Process this file with autoconf to generate a configuration script.
3
6ccd4361 4# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
f2397fc4 5# 2007, 2008, 2009 Free Software Foundation, Inc.
01dc27ef 6
f12b58b3 7#This file is part of GCC.
01dc27ef 8
f12b58b3 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
8c4c00c1 11#Software Foundation; either version 3, or (at your option) any later
f12b58b3 12#version.
01dc27ef 13
f12b58b3 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.
01dc27ef 18
19#You should have received a copy of the GNU General Public License
8c4c00c1 20#along with GCC; see the file COPYING3. If not see
21#<http://www.gnu.org/licenses/>.
01dc27ef 22
7349ace9 23# --------------------------------
24# Initialization and sanity checks
25# --------------------------------
26
81a71e2b 27AC_PREREQ(2.64)
1211e6bc 28AC_INIT
29AC_CONFIG_SRCDIR(tree.c)
764fc592 30AC_CONFIG_HEADER(auto-host.h:config.in)
805483cf 31
f32e3360 32gcc_version=`cat $srcdir/BASE-VER`
33
7349ace9 34# Determine the host, build, and target systems
1211e6bc 35AC_CANONICAL_BUILD
36AC_CANONICAL_HOST
37AC_CANONICAL_TARGET
7349ace9 38
d58156a1 39# Determine the noncanonical target name, for directory use.
dabbc00f 40ACX_NONCANONICAL_TARGET
d58156a1 41
4f442f07 42# Determine the target- and build-specific subdirectories
43GCC_TOPLEV_SUBDIRS
44
7349ace9 45# Set program_transform_name
46AC_ARG_PROGRAM
01dc27ef 47
279894f2 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
edf2430c 71*** building gcc. Please change the environment variable
279894f2 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
edf2430c 97*** building gcc. Please change the environment variable
279894f2 98*** and run configure again.])
99fi
100
7349ace9 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
0bf9691e 134# This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
7349ace9 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
0bf9691e 139 libstdcxx_incdir='include/c++/$(version)'
140 if test x$host != x$target; then
141 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
142 fi
fc5f9e0c 143 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
7349ace9 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
37c96b91 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
a6b4c5a9 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=''
a6b4c5a9 177else
178 GENINSRC='#'
a6b4c5a9 179fi
180AC_SUBST(GENINSRC)
37c96b91 181
7349ace9 182# -------------------
183# Find default linker
184# -------------------
01dc27ef 185
186# With GNU ld
187AC_ARG_WITH(gnu-ld,
188[ --with-gnu-ld arrange to work with GNU ld.],
c4f70bb2 189gnu_ld_flag="$with_gnu_ld",
190gnu_ld_flag=no)
01dc27ef 191
f07251bc 192# With pre-defined ld
193AC_ARG_WITH(ld,
77eb56d4 194[ --with-ld arrange to use the specified ld (full pathname)],
f8b7dbdb 195DEFAULT_LINKER="$with_ld")
196if test x"${DEFAULT_LINKER+set}" = x"set"; then
197 if test ! -x "$DEFAULT_LINKER"; then
b452b31a 198 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
16e09e89 199 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
f07251bc 200 gnu_ld_flag=yes
201 fi
42f1312d 202 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
203 [Define to enable the use of a default linker.])
f07251bc 204fi
205
c159e0b7 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
7349ace9 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
9c948bc2 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
7349ace9 226# ----------------------
227# Find default assembler
228# ----------------------
229
01dc27ef 230# With GNU as
231AC_ARG_WITH(gnu-as,
77eb56d4 232[ --with-gnu-as arrange to work with GNU as],
c4f70bb2 233gas_flag="$with_gnu_as",
234gas_flag=no)
01dc27ef 235
f07251bc 236AC_ARG_WITH(as,
77eb56d4 237[ --with-as arrange to use the specified as (full pathname)],
f8b7dbdb 238DEFAULT_ASSEMBLER="$with_as")
239if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
240 if test ! -x "$DEFAULT_ASSEMBLER"; then
b452b31a 241 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
16e09e89 242 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
f07251bc 243 gas_flag=yes
244 fi
42f1312d 245 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
246 [Define to enable the use of a default assembler.])
f8b7dbdb 247fi
f07251bc 248
c6429fa9 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
7349ace9 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)])
6e014aa3 256 else
7349ace9 257 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
6e014aa3 258 fi
7349ace9 259else
260 AC_MSG_RESULT(no)
6e014aa3 261fi
01dc27ef 262
7349ace9 263# ---------------
264# Find C compiler
265# ---------------
1c6c0617 266
f7a804c7 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
0fa54ff1 276# Find the native compiler
277AC_PROG_CC
524a54cf 278AM_PROG_CC_C_O
7ab76cec 279AC_PROG_CXX
f1984c57 280ACX_PROG_GNAT([-I"$srcdir"/ada])
281
0fa54ff1 282# autoconf is lame and doesn't give us any substitution variable for this.
283if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
284 NO_MINUS_C_MINUS_O=yes
285else
286 OUTPUT_OPTION='-o $@'
287fi
288AC_SUBST(NO_MINUS_C_MINUS_O)
289AC_SUBST(OUTPUT_OPTION)
290
c81c13fb 291# Remove the -O2: for historical reasons, unless bootstrapping we prefer
292# optimizations to be activated explicitly by the toplevel.
293case "$CC" in
294 */prev-gcc/xgcc*) ;;
295 *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
296esac
297AC_SUBST(CFLAGS)
298
966842d4 299# -------------------------
300# Check C compiler features
301# -------------------------
302
b9146087 303AC_USE_SYSTEM_EXTENSIONS
7349ace9 304AC_PROG_CPP
305AC_C_INLINE
7349ace9 306
7349ace9 307# sizeof(char) is 1 by definition.
b085c511 308AC_CHECK_SIZEOF(void *)
309AC_CHECK_SIZEOF(short)
310AC_CHECK_SIZEOF(int)
311AC_CHECK_SIZEOF(long)
cd29f3a4 312AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
313AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
82e964b0 314GCC_STDINT_TYPES
7349ace9 315
7349ace9 316# ---------------------
317# Warnings and checking
318# ---------------------
319
1f59d204 320# Check $CC warning features (if it's GCC).
321# We want to use -pedantic, but we don't want warnings about
322# * 'long long'
323# * variadic macros
1d752508 324# * overlong strings
1f59d204 325# So, we only use -pedantic if we can disable those warnings.
326
9fce6407 327ACX_PROG_CC_WARNING_OPTS(
7ab76cec 328 m4_quote(m4_do([-W -Wall -Wwrite-strings -Wcast-qual])), [loose_warn])
9fce6407 329ACX_PROG_CC_WARNING_OPTS(
7ab76cec 330 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
331 [c_loose_warn])
332ACX_PROG_CC_WARNING_OPTS(
333 m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
334ACX_PROG_CC_WARNING_OPTS(
335 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
9fce6407 336ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
c3aa71d4 337 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
338 [-Wno-overlength-strings])), [strict_warn])
c7cc973b 339ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
340
341# The above macros do nothing if the compiler is not GCC. However, the
7ab76cec 342# Makefile has more goo to add other flags, so these variables are used
343# to enable warnings only for GCC.
0fa54ff1 344warn_cflags=
7ab76cec 345warn_cxxflags=
0fa54ff1 346if test "x$GCC" = "xyes"; then
347 warn_cflags='$(GCC_WARN_CFLAGS)'
7ab76cec 348 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
0fa54ff1 349fi
350AC_SUBST(warn_cflags)
7ab76cec 351AC_SUBST(warn_cxxflags)
0fa54ff1 352
e3ca137a 353# Enable expensive internal checks
1af67e62 354is_release=
355if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
356 is_release=yes
357fi
a179eb24 358
485205d1 359AC_ARG_ENABLE(checking,
0c4e40c5 360[ --enable-checking[=LIST]
361 enable expensive run-time checks. With LIST,
362 enable only specific categories of checks.
5391b316 363 Categories are: yes,no,all,none,release.
75a70cf9 364 Flags are: assert,df,fold,gc,gcac,gimple,misc,
f03e0ae4 365 rtlflag,rtl,runtime,tree,valgrind,types.],
a1fa05f0 366[ac_checking_flags="${enableval}"],[
367# Determine the default checks.
368if test x$is_release = x ; then
369 ac_checking_flags=yes
370else
371 ac_checking_flags=release
372fi])
a1fa05f0 373IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
624a5fae 374for check in release $ac_checking_flags
a1fa05f0 375do
376 case $check in
5391b316 377 # these set all the flags to specific states
314966f4 378 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
5391b316 379 ac_fold_checking= ; ac_gc_checking=1 ;
75a70cf9 380 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
fcd42b1e 381 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
f03e0ae4 382 ac_tree_checking=1 ; ac_valgrind_checking= ;
80296012 383 ac_types_checking=1 ;;
5ccba2dc 384 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
5391b316 385 ac_fold_checking= ; ac_gc_checking= ;
75a70cf9 386 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
fcd42b1e 387 ac_rtlflag_checking= ; ac_runtime_checking= ;
f03e0ae4 388 ac_tree_checking= ; ac_valgrind_checking= ;
389 ac_types_checking= ;;
5ccba2dc 390 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
5391b316 391 ac_fold_checking=1 ; ac_gc_checking=1 ;
75a70cf9 392 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
5391b316 393 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
f03e0ae4 394 ac_tree_checking=1 ; ac_valgrind_checking= ;
395 ac_types_checking=1 ;;
5ccba2dc 396 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
5391b316 397 ac_fold_checking= ; ac_gc_checking= ;
75a70cf9 398 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
5391b316 399 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
f03e0ae4 400 ac_tree_checking= ; ac_valgrind_checking= ;
401 ac_types_checking= ;;
5391b316 402 # these enable particular checks
a1fa05f0 403 assert) ac_assert_checking=1 ;;
5ccba2dc 404 df) ac_df_checking=1 ;;
a1fa05f0 405 fold) ac_fold_checking=1 ;;
406 gc) ac_gc_checking=1 ;;
407 gcac) ac_gc_always_collect=1 ;;
75a70cf9 408 gimple) ac_gimple_checking=1 ;;
a1fa05f0 409 misc) ac_checking=1 ;;
a1fa05f0 410 rtl) ac_rtl_checking=1 ;;
5391b316 411 rtlflag) ac_rtlflag_checking=1 ;;
06350693 412 runtime) ac_runtime_checking=1 ;;
a1fa05f0 413 tree) ac_tree_checking=1 ;;
f03e0ae4 414 types) ac_types_checking=1 ;;
5391b316 415 valgrind) ac_valgrind_checking=1 ;;
a1fa05f0 416 *) AC_MSG_ERROR(unknown check category $check) ;;
417 esac
418done
419IFS="$ac_save_IFS"
420
0d74b24d 421nocommon_flag=""
42f1312d 422if test x$ac_checking != x ; then
423 AC_DEFINE(ENABLE_CHECKING, 1,
424[Define if you want more run-time sanity checks. This one gets a grab
425 bag of miscellaneous but relatively cheap checks.])
0d74b24d 426 nocommon_flag=-fno-common
42f1312d 427fi
0d74b24d 428AC_SUBST(nocommon_flag)
5ccba2dc 429if test x$ac_df_checking != x ; then
430 AC_DEFINE(ENABLE_DF_CHECKING, 1,
431[Define if you want more run-time sanity checks for dataflow.])
432fi
997731eb 433if test x$ac_assert_checking != x ; then
434 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
435[Define if you want assertions enabled. This is a cheap check.])
436fi
75a70cf9 437if test x$ac_gimple_checking != x ; then
438 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
439[Define if you want operations on GIMPLE (the basic data structure of
440the high-level optimizers) to be checked for dynamic type safety at
441runtime. This is moderately expensive.])
442fi
fcd42b1e 443GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
06350693 444if test x$ac_runtime_checking != x ; then
445 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
446[Define if you want runtime assertions enabled. This is a cheap check.])
447fi
42f1312d 448if test x$ac_tree_checking != x ; then
449 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
450[Define if you want all operations on trees (the basic data
451 structure of the front ends) to be checked for dynamic type safety
4e7212d1 452 at runtime. This is moderately expensive. The tree browser debugging
453 routines will also be enabled by this option.
454 ])
455 TREEBROWSER=tree-browser.o
42f1312d 456fi
f03e0ae4 457if test x$ac_types_checking != x ; then
458 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
459[Define if you want all gimple types to be verified after gimplifiation.
460 This is cheap.
461 ])
462fi
4e7212d1 463AC_SUBST(TREEBROWSER)
42f1312d 464if test x$ac_rtl_checking != x ; then
465 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
466[Define if you want all operations on RTL (the basic data structure
467 of the optimizer and back end) to be checked for dynamic type safety
468 at runtime. This is quite expensive.])
469fi
b0e7e012 470if test x$ac_rtlflag_checking != x ; then
471 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
472[Define if you want RTL flag accesses to be checked against the RTL
473 codes that are supported for each access macro. This is relatively
474 cheap.])
475fi
42f1312d 476if test x$ac_gc_checking != x ; then
477 AC_DEFINE(ENABLE_GC_CHECKING, 1,
478[Define if you want the garbage collector to do object poisoning and
479 other memory allocation checks. This is quite expensive.])
480fi
481if test x$ac_gc_always_collect != x ; then
482 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
483[Define if you want the garbage collector to operate in maximally
484 paranoid mode, validating the entire heap and collecting garbage at
485 every opportunity. This is extremely expensive.])
486fi
fc3df357 487if test x$ac_fold_checking != x ; then
488 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
489[Define if you want fold checked that it never destructs its argument.
490 This is quite expensive.])
491fi
0fa54ff1 492valgrind_path_defines=
493valgrind_command=
3f720cf7 494
495dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
496dnl # an if statement. This was the source of very frustrating bugs
497dnl # in converting to autoconf 2.5x!
498AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
499
5391b316 500if test x$ac_valgrind_checking != x ; then
0fa54ff1 501 # It is certainly possible that there's valgrind but no valgrind.h.
502 # GCC relies on making annotations so we must have both.
a519c4d3 503 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
11e66330 504 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
505 [[#include <valgrind/memcheck.h>
a519c4d3 506#ifndef VALGRIND_DISCARD
507#error VALGRIND_DISCARD not defined
11e66330 508#endif]])],
a519c4d3 509 [gcc_cv_header_valgrind_memcheck_h=yes],
510 [gcc_cv_header_valgrind_memcheck_h=no])
511 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
8adead19 512 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
11e66330 513 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
514 [[#include <memcheck.h>
8adead19 515#ifndef VALGRIND_DISCARD
516#error VALGRIND_DISCARD not defined
11e66330 517#endif]])],
518 [gcc_cv_header_memcheck_h=yes],
519 [gcc_cv_header_memcheck_h=no])
8adead19 520 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
0fa54ff1 521 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
522 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
a519c4d3 523 if test "x$valgrind_path" = "x" \
524 || (test $have_valgrind_h = no \
525 && test $gcc_cv_header_memcheck_h = no \
526 && test $gcc_cv_header_valgrind_memcheck_h = no); then
527 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
0fa54ff1 528 fi
529 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
530 valgrind_command="$valgrind_path -q"
531 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
532[Define if you want to run subprograms and generated programs
533 through valgrind (a memory checker). This is extremely expensive.])
a519c4d3 534 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
535 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
536 [Define if valgrind's valgrind/memcheck.h header is installed.])
537 fi
8adead19 538 if test $gcc_cv_header_memcheck_h = yes; then
539 AC_DEFINE(HAVE_MEMCHECK_H, 1,
540 [Define if valgrind's memcheck.h header is installed.])
541 fi
0fa54ff1 542fi
543AC_SUBST(valgrind_path_defines)
544AC_SUBST(valgrind_command)
59420fa7 545
d5a37d75 546# Enable code coverage collection
547AC_ARG_ENABLE(coverage,
548[ --enable-coverage[=LEVEL]
36d91445 549 enable compiler's code coverage collection.
d5a37d75 550 Use to measure compiler performance and locate
33987224 551 unused parts of the compiler. With LEVEL, specify
d5a37d75 552 optimization. Values are opt, noopt,
553 default is noopt],
554[case "${enableval}" in
034b0f6e 555 yes|noopt)
556 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
557 ;;
558 opt)
559 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
560 ;;
561 no)
562 # a.k.a. --disable-coverage
563 coverage_flags=""
564 ;;
565 *)
566 AC_MSG_ERROR(unknown coverage setting $enableval)
567 ;;
d5a37d75 568esac],
5328265b 569[coverage_flags=""])
d5a37d75 570AC_SUBST(coverage_flags)
571
86736f9e 572AC_ARG_ENABLE(gather-detailed-mem-stats,
573[ --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering], [],
574[enable_gather_detailed_mem_stats=no])
575if test x$enable_gather_detailed_mem_stats = xyes ; then
576 AC_DEFINE(GATHER_STATISTICS, 1,
577 [Define to enable detailed memory allocation stats gathering.])
578fi
579
966842d4 580# -------------------------------
581# Miscenalleous configure options
582# -------------------------------
7349ace9 583
7ab76cec 584# See if we are building gcc with C++.
585AC_ARG_ENABLE(build-with-cxx,
586[ --enable-build-with-cxx build with C++ compiler instead of C compiler],
587ENABLE_BUILD_WITH_CXX=$enableval,
588ENABLE_BUILD_WITH_CXX=no)
589AC_SUBST(ENABLE_BUILD_WITH_CXX)
590
7349ace9 591# With stabs
592AC_ARG_WITH(stabs,
593[ --with-stabs arrange to use stabs instead of host debug format],
594stabs="$with_stabs",
595stabs=no)
596
7349ace9 597# Determine whether or not multilibs are enabled.
598AC_ARG_ENABLE(multilib,
599[ --enable-multilib enable library support for multiple ABIs],
600[], [enable_multilib=yes])
601AC_SUBST(enable_multilib)
f7b90398 602
70ac8784 603# Enable __cxa_atexit for C++.
604AC_ARG_ENABLE(__cxa_atexit,
605[ --enable-__cxa_atexit enable __cxa_atexit for C++],
606[], [])
bc5ae993 607
e38498a2 608# Enable C extension for decimal float if target supports it.
609AC_ARG_ENABLE(decimal-float,
10de71e1 610[ --enable-decimal-float={no,yes,bid,dpd}
611 enable decimal float extension to C. Selecting 'bid'
612 or 'dpd' choses which decimal floating point format
613 to use],
e38498a2 614[
10de71e1 615 case $enable_decimal_float in
616 yes | no | bid | dpd) ;;
617 *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
618Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
619 esac
620],
621[
622 case $target in
623 powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
f705e144 624 enable_decimal_float=yes
e38498a2 625 ;;
626 *)
627 AC_MSG_WARN(decimal float is not supported for this target, ignored)
628 enable_decimal_float=no
629 ;;
10de71e1 630 esac
631])
e38498a2 632
10de71e1 633dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
e38498a2 634AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
635[Define to 1 to enable decimal float extension to C.])
636
10de71e1 637# x86's use BID format instead of DPD
638case x$enable_decimal_float in
639 xyes)
640 case $target in
641 i?86*-*-linux* | x86_64*-*-linux*)
642 enable_decimal_float=bid
643 ;;
644 *)
645 enable_decimal_float=dpd
646 ;;
647 esac
648 ;;
649 xno)
650 # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
651 # dependency on libdecnumber.
652 enable_decimal_float=dpd
653 ;;
654esac
655AC_SUBST(enable_decimal_float)
656
657bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
658AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
659[Define to 1 to specify that we are using the BID decimal floating
660point format instead of DPD])
661
9421ebb9 662# Enable C extension for fixed-point arithmetic.
663AC_ARG_ENABLE(fixed-point,
664[ --enable-fixed-point enable fixed-point arithmetic extension to C],
665[
666],
667[
668 case $target in
669 mips*-*-*)
6ccd4361 670 case $host in
671 mips*-sgi-irix*)
672 AC_MSG_WARN(fixed-point is not supported on IRIX, ignored)
673 enable_fixed_point=no
674 ;;
675 *)
676 enable_fixed_point=yes
677 ;;
678 esac
9421ebb9 679 ;;
680 *)
681 AC_MSG_WARN(fixed-point is not supported for this target, ignored)
682 enable_fixed_point=no
683 ;;
684 esac
685])
686AC_SUBST(enable_fixed_point)
687
688fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
689AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
690[Define to 1 to enable fixed-point arithmetic extension to C.])
691
3e637c99 692# Enable threads
693# Pass with no value to take the default
694# Pass with a value to specify a thread package
695AC_ARG_ENABLE(threads,
77eb56d4 696[ --enable-threads enable thread usage for target GCC
697 --enable-threads=LIB use LIB thread package for target GCC],,
334c8279 698[enable_threads=''])
3e637c99 699
c024e802 700AC_ARG_ENABLE(tls,
701[ --enable-tls enable or disable generation of tls code
702 overriding the assembler check for tls support],
703[
704 case $enable_tls in
705 yes | no) ;;
706 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
707Valid choices are 'yes' and 'no'.]) ;;
708 esac
709], [enable_tls=''])
710
5c872430 711AC_ARG_ENABLE(objc-gc,
712[ --enable-objc-gc enable the use of Boehm's garbage collector with
77eb56d4 713 the GNU Objective-C runtime],
7a28a1b6 714if test x$enable_objc_gc = xno; then
5c872430 715 objc_boehm_gc=''
716else
717 objc_boehm_gc=1
718fi,
719objc_boehm_gc='')
720
27b15aee 721AC_ARG_WITH(dwarf2,
77eb56d4 722[ --with-dwarf2 force the default debug format to be DWARF 2],
27b15aee 723dwarf2="$with_dwarf2",
724dwarf2=no)
725
a1415e6d 726AC_ARG_ENABLE(shared,
77eb56d4 727[ --disable-shared don't provide a shared libgcc],
10393ad5 728[
729 case $enable_shared in
730 yes | no) ;;
731 *)
732 enable_shared=no
733 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
734 for pkg in $enableval; do
735 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
736 enable_shared=yes
737 fi
738 done
739 IFS="$ac_save_ifs"
740 ;;
741 esac
742], [enable_shared=yes])
a1415e6d 743AC_SUBST(enable_shared)
744
a99be165 745AC_ARG_WITH(build-sysroot,
746 [ --with-build-sysroot=sysroot
747 use sysroot as the system root during the build])
748
805e22b2 749AC_ARG_WITH(sysroot,
750[ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
751[
752 case ${with_sysroot} in
d58156a1 753 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
805e22b2 754 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
755 esac
756
757 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
6ea4242f 758 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
5e368ffe 759
35ab6286 760 if test "x$prefix" = xNONE; then
761 test_prefix=/usr/local
762 else
763 test_prefix=$prefix
764 fi
17acc97a 765 if test "x$exec_prefix" = xNONE; then
35ab6286 766 test_exec_prefix=$test_prefix
17acc97a 767 else
35ab6286 768 test_exec_prefix=$exec_prefix
17acc97a 769 fi
770 case ${TARGET_SYSTEM_ROOT} in
c323a7f4 771 "${test_prefix}"|"${test_prefix}/"*|\
35ab6286 772 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
773 '${prefix}'|'${prefix}/'*|\
c323a7f4 774 '${exec_prefix}'|'${exec_prefix}/'*)
17acc97a 775 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
776 TARGET_SYSTEM_ROOT_DEFINE="$t"
777 ;;
778 esac
805e22b2 779], [
780 TARGET_SYSTEM_ROOT=
d68c6656 781 TARGET_SYSTEM_ROOT_DEFINE=
805e22b2 782 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
783])
784AC_SUBST(TARGET_SYSTEM_ROOT)
785AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
786AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
787
40109983 788# Build with intermodule optimisations
40109983 789AC_ARG_ENABLE(intermodule,
790[ --enable-intermodule build the compiler in one step],
9285d7bb 791[case ${enable_intermodule} in
792 yes) onestep="-onestep";;
793 *) onestep="";;
794esac],
795[onestep=""])
40109983 796AC_SUBST(onestep)
797
d25dc80e 798ACX_PKGVERSION([GCC])
799ACX_BUGURL([http://gcc.gnu.org/bugs.html])
800
c24c5e46 801# Sanity check enable_languages in case someone does not run the toplevel
802# configure # script.
803AC_ARG_ENABLE(languages,
804[ --enable-languages=LIST specify which front-ends to build],
805[case ,${enable_languages}, in
806 ,,|,yes,)
807 # go safe -- we cannot be much sure without the toplevel
808 # configure's
809 # analysis of which target libs are present and usable
810 enable_languages=c
811 ;;
812 *,all,*)
813 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
814 ;;
815 *,c,*)
816 ;;
817 *)
818 enable_languages=c,${enable_languages}
819 ;;
820esac],
821[enable_languages=c])
822
f555bf81 823AC_ARG_WITH(multilib-list,
824[ --with-multilib-list Select multilibs (SH only)],
825:,
826with_multilib_list=default)
827
966842d4 828# -------------------------
829# Checks for other programs
830# -------------------------
6f63674e 831
0dbd1c74 832AC_PROG_MAKE_SET
833
01dc27ef 834# Find some useful tools
835AC_PROG_AWK
e8b212b8 836# We need awk to create options.c and options.h.
b007b385 837# Bail out if it's missing.
838case ${AWK} in
839 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
840esac
841
f9708620 842gcc_AC_PROG_LN_S
599a3eac 843ACX_PROG_LN($LN_S)
01dc27ef 844AC_PROG_RANLIB
72318bfa 845case "${host}" in
846*-*-darwin*)
847 # By default, the Darwin ranlib will not treat common symbols as
848 # definitions when building the archive table of contents. Other
849 # ranlibs do that; pass an option to the Darwin ranlib that makes
850 # it behave similarly.
851 ranlib_flags="-c"
852 ;;
853*)
854 ranlib_flags=""
855esac
856AC_SUBST(ranlib_flags)
857
f9708620 858gcc_AC_PROG_INSTALL
01dc27ef 859
8fea036f 860# See if cmp has --ignore-initial.
861gcc_AC_PROG_CMP_IGNORE_INITIAL
862
72f3368f 863# See if we have the mktemp command.
864AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
865
a1ad7483 866# See if makeinfo has been installed and is modern enough
867# that we can use it.
c7cc973b 868ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
049ccec1 869 [GNU texinfo.* \([0-9][0-9.]*\)],
69f31627 870 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
049ccec1 871if test $gcc_cv_prog_makeinfo_modern = no; then
872 AC_MSG_WARN([
873*** Makeinfo is missing or too old.
c94ba072 874*** Info documentation will not be built.])
049ccec1 875 BUILD_INFO=
049ccec1 876else
a1ad7483 877 BUILD_INFO=info
049ccec1 878fi
a1ad7483 879AC_SUBST(BUILD_INFO)
049ccec1 880
0dd06be9 881# Is pod2man recent enough to regenerate manpages?
882AC_MSG_CHECKING([for recent Pod::Man])
7e8ebf06 883if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
fefb5ea6 884 AC_MSG_RESULT(yes)
a1ad7483 885 GENERATED_MANPAGES=generated-manpages
fefb5ea6 886else
887 AC_MSG_RESULT(no)
888 GENERATED_MANPAGES=
889fi
a1ad7483 890AC_SUBST(GENERATED_MANPAGES)
fefb5ea6 891
c7cc973b 892MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
893
345a1501 894# How about lex?
895dnl Don't use AC_PROG_LEX; we insist on flex.
896dnl LEXLIB is not useful in gcc.
a1ad7483 897AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
345a1501 898
899# Bison?
a1ad7483 900AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
901
902# Binutils are not build modules, unlike bison/flex/makeinfo. So we
903# check for build == host before using them.
345a1501 904
6ac26439 905# NM
28c79bfe 906if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
907 && test -d ../binutils ; then
6ac26439 908 NM='$(objdir)/../binutils/nm-new'
909else
910 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
911fi
912
913# AR
28c79bfe 914if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
915 && test -d ../binutils ; then
6ac26439 916 AR='$(objdir)/../binutils/ar'
917else
918 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
919fi
920
921
966842d4 922# --------------------
923# Checks for C headers
924# --------------------
925
2cd18f76 926# Need to reject headers which give warnings, so that the -Werror bootstrap
927# works later. *sigh* This needs to come before all header checks.
928AC_PROG_CPP_WERROR
929
966842d4 930AC_HEADER_STDC
931AC_HEADER_TIME
d856c8a6 932ACX_HEADER_STRING
966842d4 933AC_HEADER_SYS_WAIT
e5d424c9 934AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
9f0cea1b 935 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
966842d4 936 sys/resource.h sys/param.h sys/times.h sys/stat.h \
c6976b58 937 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
966842d4 938
939# Check for thread headers.
940AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
941AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
942
943# These tests can't be done till we know if we have limits.h.
944gcc_AC_C_CHAR_BIT
fd158959 945AC_C_BIGENDIAN
966842d4 946
947# --------
948# UNSORTED
949# --------
950
966842d4 951
45449d9f 952# These libraries may be used by collect2.
953# We may need a special search path to get them linked.
954AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
955[save_LIBS="$LIBS"
8e01c6f6 956for libs in '' -lld -lmld \
45449d9f 957 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
958 '-L/usr/lib/cmplrs/cc3.11 -lmld'
959do
960 LIBS="$libs"
961 AC_TRY_LINK_FUNC(ldopen,
962 [gcc_cv_collect2_libs="$libs"; break])
963done
964LIBS="$save_LIBS"
965test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
966case $gcc_cv_collect2_libs in
967 "none required") ;;
968 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
969esac
970AC_SUBST(COLLECT2_LIBS)
971
8e01c6f6 972# When building Ada code on Alpha, we need exc_resume which is usually in
973# -lexc. So test for it.
974save_LIBS="$LIBS"
975LIBS=
976AC_SEARCH_LIBS(exc_resume, exc)
977GNAT_LIBEXC="$LIBS"
978LIBS="$save_LIBS"
979AC_SUBST(GNAT_LIBEXC)
980
96b74343 981# Some systems put ldexp and frexp in libm instead of libc; assume
982# they're both in the same place. jcf-dump needs them.
983save_LIBS="$LIBS"
984LIBS=
985AC_SEARCH_LIBS(ldexp, m)
986LDEXP_LIB="$LIBS"
987LIBS="$save_LIBS"
988AC_SUBST(LDEXP_LIB)
989
a3477a0e 990# Use <inttypes.h> only if it exists,
991# doesn't clash with <sys/types.h>, and declares intmax_t.
992AC_MSG_CHECKING(for inttypes.h)
993AC_CACHE_VAL(gcc_cv_header_inttypes_h,
11e66330 994[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
995[[#include <sys/types.h>
996#include <inttypes.h>]],
997 [[intmax_t i = -1;]])],
fd80090d 998 [gcc_cv_header_inttypes_h=yes],
11e66330 999 [gcc_cv_header_inttypes_h=no])])
a3477a0e 1000AC_MSG_RESULT($gcc_cv_header_inttypes_h)
fd80090d 1001if test $gcc_cv_header_inttypes_h = yes; then
42f1312d 1002 AC_DEFINE(HAVE_INTTYPES_H, 1,
1003 [Define if you have a working <inttypes.h> header file.])
fd80090d 1004fi
805483cf 1005
aab9bda6 1006dnl Disabled until we have a complete test for buggy enum bitfields.
1007dnl gcc_AC_C_ENUM_BF_UNSIGNED
488c4206 1008
077a3c99 1009define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1010 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1011 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1012 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1013 putchar_unlocked putc_unlocked)
b88c06b5 1014AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
0a7b2ad2 1015 sysconf strsignal getrusage nl_langinfo \
077a3c99 1016 gettimeofday mbstowcs wcswidth mmap mincore setlocale \
1017 gcc_UNLOCKED_FUNCS)
4211624c 1018
b503c1a2 1019if test x$ac_cv_func_mbstowcs = xyes; then
1020 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
11e66330 1021[ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
b503c1a2 1022int main()
1023{
1024 mbstowcs(0, "", 0);
1025 return 0;
11e66330 1026}]])],
1027 [gcc_cv_func_mbstowcs_works=yes],
1028 [gcc_cv_func_mbstowcs_works=no],
1029 [gcc_cv_func_mbstowcs_works=yes])])
b503c1a2 1030 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1031 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1032 [Define this macro if mbstowcs does not crash when its
1033 first argument is NULL.])
1034 fi
1035fi
1036
478a5aa8 1037AC_CHECK_TYPE(ssize_t, int)
1d5a5c71 1038AC_CHECK_TYPE(caddr_t, char *)
33a62e3f 1039
9f0cea1b 1040gcc_AC_FUNC_MMAP_BLACKLIST
f1959ea2 1041
1042case "${host}" in
8f966bdb 1043*-*-*vms*)
0d4639d6 1044 # Under VMS, vfork works very differently than on Unix. The standard test
8f966bdb 1045 # won't work, and it isn't easily adaptable. It makes more sense to
1046 # just force it.
1047 ac_cv_func_vfork_works=yes
1048 ;;
f1959ea2 1049esac
11e66330 1050AC_FUNC_FORK
0a0a425e 1051
7093ff41 1052AM_ICONV
c6976b58 1053# Until we have in-tree GNU iconv:
1054LIBICONV_DEP=
1055AC_SUBST(LIBICONV_DEP)
1056
1057AM_LC_MESSAGES
7093ff41 1058
ac31415f 1059AM_LANGINFO_CODESET
1060
3c014a93 1061# We will need to find libiberty.h and ansidecl.h
1062saved_CFLAGS="$CFLAGS"
1063CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
9b1f316f 1064gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1065 strsignal strstr strverscmp \
1066 errno snprintf vsnprintf vasprintf malloc realloc calloc \
7e5ef2ef 1067 free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
673b6e5a 1068#include "ansidecl.h"
3c014a93 1069#include "system.h"])
7014838c 1070
07c927cb 1071gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
673b6e5a 1072#include "ansidecl.h"
3c014a93 1073#include "system.h"
436f5383 1074#ifdef HAVE_SYS_RESOURCE_H
1075#include <sys/resource.h>
1076#endif
1077])
1078
11e66330 1079AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c1b9d008 1080#include "ansidecl.h"
1081#include "system.h"
1082#ifdef HAVE_SYS_RESOURCE_H
1083#include <sys/resource.h>
1084#endif
11e66330 1085]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
dea92435 1086[Define to `long' if <sys/resource.h> doesn't define.])])
c1b9d008 1087
d71e0d30 1088# On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1089# FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1090# in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1091# to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
31a83412 1092gcc_AC_CHECK_DECLS(ldgetname, , ,[
1093#include "ansidecl.h"
1094#include "system.h"
1095#ifdef HAVE_LDFCN_H
d71e0d30 1096#undef FREAD
1097#undef FWRITE
31a83412 1098#include <ldfcn.h>
1099#endif
1100])
1101
c770a4cb 1102gcc_AC_CHECK_DECLS(times, , ,[
1103#include "ansidecl.h"
1104#include "system.h"
1105#ifdef HAVE_SYS_TIMES_H
1106#include <sys/times.h>
1107#endif
1108])
1109
168c58e0 1110gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1111#include "ansidecl.h"
1112#include "system.h"
1113#include <signal.h>
1114])
1115
c770a4cb 1116# More time-related stuff.
1117AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
11e66330 1118AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c770a4cb 1119#include "ansidecl.h"
1120#include "system.h"
1121#ifdef HAVE_SYS_TIMES_H
1122#include <sys/times.h>
1123#endif
11e66330 1124]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
c770a4cb 1125if test $ac_cv_struct_tms = yes; then
1126 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1127 [Define if <sys/times.h> defines struct tms.])
1128fi
1129
1130# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1131# revisit after autoconf 2.50.
1132AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
11e66330 1133AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
c770a4cb 1134#include "ansidecl.h"
1135#include "system.h"
11e66330 1136]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
c770a4cb 1137if test $gcc_cv_type_clock_t = yes; then
1138 AC_DEFINE(HAVE_CLOCK_T, 1,
1139 [Define if <time.h> defines clock_t.])
1140fi
1141
3c014a93 1142# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1143CFLAGS="$saved_CFLAGS"
1144
24d1674d 1145gcc_AC_INITFINI_ARRAY
1146
a729d1c3 1147# mkdir takes a single argument on some systems.
f9708620 1148gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
a729d1c3 1149
01dc27ef 1150# File extensions
1151manext='.1'
1152objext='.o'
01dc27ef 1153AC_SUBST(manext)
1154AC_SUBST(objext)
01dc27ef 1155
805e22b2 1156# With Setjmp/Longjmp based exception handling.
1157AC_ARG_ENABLE(sjlj-exceptions,
1158[ --enable-sjlj-exceptions
1159 arrange to use setjmp/longjmp exception handling],
d4f869a6 1160[case $target in
1161 *-*-hpux10*)
1162 if test $enableval != yes; then
1163 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1164 enableval=yes
1165 fi
1166 ;;
1167esac
1168force_sjlj_exceptions=yes],
1169[case $target in
1170 *-*-hpux10*)
1171 force_sjlj_exceptions=yes
1172 enableval=yes
1173 ;;
1174 *)
1175 force_sjlj_exceptions=no
1176 ;;
1177esac])
1178if test $force_sjlj_exceptions = yes; then
1179 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1180 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1181 [Define 0/1 to force the choice for exception handling model.])
1182fi
805e22b2 1183
8bdf23ae 1184# For platforms with the unwind ABI which includes an unwind library,
1185# libunwind, we can choose to use the system libunwind.
f406e07e 1186# config.gcc also contains tests of with_system_libunwind.
e70ecbc3 1187GCC_CHECK_UNWIND_GETIPINFO
f406e07e 1188
7349ace9 1189# --------------------------------------------------------
1190# Build, host, and target specific configuration fragments
1191# --------------------------------------------------------
1192
eab1a815 1193# Collect build-machine-specific information.
1194. ${srcdir}/config.build
1195
973f8bf3 1196# Collect host-machine-specific information.
1197. ${srcdir}/config.host
1198
eb1bd38b 1199target_gtfiles=
973f8bf3 1200
1201# Collect target-machine-specific information.
09c6646e 1202. ${srcdir}/config.gcc
01dc27ef 1203
1204extra_objs="${host_extra_objs} ${extra_objs}"
69eb04f7 1205extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
01dc27ef 1206
1207# Default the target-machine variables that were not explicitly set.
bf3637a9 1208if test x"$tm_file" = x
01dc27ef 1209then tm_file=$cpu_type/$cpu_type.h; fi
1210
2a8be21e 1211if test x"$extra_headers" = x
01dc27ef 1212then extra_headers=; fi
1213
bf3637a9 1214if test x$md_file = x
0579e60e 1215then md_file=$cpu_type/$cpu_type.md; fi
01dc27ef 1216
bf3637a9 1217if test x$out_file = x
01dc27ef 1218then out_file=$cpu_type/$cpu_type.c; fi
1219
bf3637a9 1220if test x"$tmake_file" = x
01dc27ef 1221then tmake_file=$cpu_type/t-$cpu_type
1222fi
1223
27b15aee 1224if test x"$dwarf2" = xyes
b65d2e3c 1225then tm_file="$tm_file tm-dwarf2.h"
27b15aee 1226fi
1227
01dc27ef 1228# Say what files are being used for the output code and MD file.
83b8e55b 1229echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
01dc27ef 1230echo "Using \`$srcdir/config/$md_file' as machine description file."
1231
83b8e55b 1232# If any of the xm_file variables contain nonexistent files, warn
e1688c3e 1233# about them and drop them.
1234
83b8e55b 1235bx=
1236for x in $build_xm_file; do
1237 if test -f $srcdir/config/$x
1238 then bx="$bx $x"
83b8e55b 1239 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1240 fi
1241done
1242build_xm_file="$bx"
1243
1244hx=
1245for x in $host_xm_file; do
1246 if test -f $srcdir/config/$x
1247 then hx="$hx $x"
83b8e55b 1248 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1249 fi
1250done
1251host_xm_file="$hx"
1252
1253tx=
1254for x in $xm_file; do
1255 if test -f $srcdir/config/$x
1256 then tx="$tx $x"
83b8e55b 1257 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1258 fi
1259done
1260xm_file="$tx"
1261
01dc27ef 1262count=a
1263for f in $tm_file; do
1264 count=${count}x
1265done
bf3637a9 1266if test $count = ax; then
01dc27ef 1267 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1268else
1269 echo "Using the following target machine macro files:"
1270 for f in $tm_file; do
1271 echo " $srcdir/config/$f"
1272 done
1273fi
1274
805e22b2 1275if test x$need_64bit_hwint = xyes; then
1276 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1277[Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1278fi
1279
3f28a032 1280if test x$use_long_long_for_widest_fast_int = xyes; then
1281 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1282[Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1283efficiently supported by the host hardware.])
1284fi
1285
01dc27ef 1286count=a
1287for f in $host_xm_file; do
1288 count=${count}x
1289done
83b8e55b 1290if test $count = a; then
1291 :
1292elif test $count = ax; then
01dc27ef 1293 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1294else
1295 echo "Using the following host machine macro files:"
1296 for f in $host_xm_file; do
1297 echo " $srcdir/config/$f"
1298 done
1299fi
b197fbcf 1300echo "Using ${out_host_hook_obj} for host machine hooks."
01dc27ef 1301
bf3637a9 1302if test "$host_xm_file" != "$build_xm_file"; then
01dc27ef 1303 count=a
1304 for f in $build_xm_file; do
1305 count=${count}x
1306 done
83b8e55b 1307 if test $count = a; then
1308 :
1309 elif test $count = ax; then
01dc27ef 1310 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1311 else
1312 echo "Using the following build machine macro files:"
1313 for f in $build_xm_file; do
1314 echo " $srcdir/config/$f"
1315 done
1316 fi
1317fi
1318
168c58e0 1319case ${host} in
84eba009 1320 powerpc*-*-darwin*)
168c58e0 1321 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1322 gcc_cv_mcontext_underscores,
1323 AC_COMPILE_IFELSE([
267a6571 1324#include <sys/cdefs.h>
679f19b4 1325#include <sys/signal.h>
168c58e0 1326#include <ucontext.h>
1327int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1328],
1329 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1330 if test $gcc_cv_mcontext_underscores = yes; then
1331 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1332 [mcontext_t fields start with __])
1333 fi
1334 ;;
1335esac
1336
d976f534 1337# ---------
1338# Threading
1339# ---------
1340
267d993c 1341# Check if a valid thread package
334c8279 1342case ${enable_threads} in
267d993c 1343 "" | no)
1344 # No threads
1345 target_thread_file='single'
1346 ;;
1347 yes)
1348 # default
1349 target_thread_file='single'
1350 ;;
8fde03ba 1351 aix | dce | gnat | irix | posix | posix95 | rtems | \
68c9bc25 1352 single | solaris | vxworks | win32 | mipssde)
334c8279 1353 target_thread_file=${enable_threads}
267d993c 1354 ;;
1355 *)
334c8279 1356 echo "${enable_threads} is an unknown thread package" 1>&2
267d993c 1357 exit 1
1358 ;;
1359esac
1360
1361if test x${thread_file} = x; then
1362 # No thread file set by target-specific clauses in config.gcc,
1363 # so use file chosen by default logic above
1364 thread_file=${target_thread_file}
01dc27ef 1365fi
01dc27ef 1366
d976f534 1367# Make gthr-default.h if we have a thread file.
1368gthread_flags=
1369if test $thread_file != single; then
71a71532 1370 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h-t
1371 if diff gthr-default.h-t gthr-default.h 2>/dev/null; then
1372 rm -f gthr-default.h-t
1373 else
1374 mv -f gthr-default.h-t gthr-default.h
1375 fi
d976f534 1376 gthread_flags=-DHAVE_GTHR_DEFAULT
1377fi
1378AC_SUBST(gthread_flags)
1379
1380# --------
1381# UNSORTED
1382# --------
1383
d9ab9cb9 1384use_cxa_atexit=no
bc5ae993 1385if test x$enable___cxa_atexit = xyes || \
1386 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
d9ab9cb9 1387 if test x$host = x$target; then
d91ef9b0 1388 case $host in
1389 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1390 # keyed to flag_use_cxa_atexit
1391 *-*-mingw32*)
1392 use_cxa_atexit=yes
1393 ;;
1394 *)
1395 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1396 [echo "__cxa_atexit can't be enabled on this target"])
55a5bb1e 1397 ;;
d91ef9b0 1398 esac
d9ab9cb9 1399 else
1400 # We can't check for __cxa_atexit when building a cross, so assume
1401 # it is available
1402 use_cxa_atexit=yes
1403 fi
1404 if test x$use_cxa_atexit = xyes; then
3bf418bd 1405 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
d9ab9cb9 1406 [Define if you want to use __cxa_atexit, rather than atexit, to
1407 register C++ destructors for local statics and global objects.
1408 This is essential for fully standards-compliant handling of
1409 destructors, but requires __cxa_atexit in libc.])
1410 fi
bc5ae993 1411fi
1412
6f432b58 1413# Look for a file containing extra machine modes.
b5ccaa7b 1414if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1415 extra_modes_file='$(srcdir)'/config/${extra_modes}
6f432b58 1416 AC_SUBST(extra_modes_file)
4dcab8b7 1417 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
6f432b58 1418 [Define to the name of a file containing a list of extra machine modes
1419 for this architecture.])
6f432b58 1420fi
1421
ff05e09e 1422# Convert extra_options into a form suitable for Makefile use.
1423extra_opt_files=
1424for f in $extra_options; do
1425 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1426done
1427AC_SUBST(extra_opt_files)
1428
764fc592 1429# auto-host.h is the file containing items generated by autoconf and is
0dbd1c74 1430# the first file included by config.h.
805e22b2 1431# If host=build, it is correct to have bconfig include auto-host.h
58b16c1a 1432# as well. If host!=build, we are in error and need to do more
1433# work to find out the build config parameters.
bf3637a9 1434if test x$host = x$build
58b16c1a 1435then
d826737c 1436 build_auto=auto-host.h
764fc592 1437else
1438 # We create a subdir, then run autoconf in the subdir.
1439 # To prevent recursion we set host and build for the new
1440 # invocation of configure to the build for this invocation
1441 # of configure.
1442 tempdir=build.$$
1443 rm -rf $tempdir
1444 mkdir $tempdir
1445 cd $tempdir
1446 case ${srcdir} in
e868f582 1447 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
764fc592 1448 *) realsrcdir=../${srcdir};;
1449 esac
fc5104b7 1450 saved_CFLAGS="${CFLAGS}"
1451 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
9841cd80 1452 LDFLAGS="${LDFLAGS_FOR_BUILD}" \
fc5104b7 1453 ${realsrcdir}/configure \
1f3fcf32 1454 --enable-languages=${enable_languages-all} \
ab3470ec 1455 --target=$target_alias --host=$build_alias --build=$build_alias
fc5104b7 1456 CFLAGS="${saved_CFLAGS}"
764fc592 1457
1458 # We just finished tests for the build machine, so rename
1459 # the file auto-build.h in the gcc directory.
1460 mv auto-host.h ../auto-build.h
1461 cd ..
1462 rm -rf $tempdir
d826737c 1463 build_auto=auto-build.h
58b16c1a 1464fi
2b59cb05 1465AC_SUBST(build_subdir)
58b16c1a 1466
d826737c 1467tm_file="${tm_file} defaults.h"
805e22b2 1468tm_p_file="${tm_p_file} tm-preds.h"
1469host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1470build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
4b0e3ddb 1471# We don't want ansidecl.h in target files, write code there in ISO/GNU C.
18320123 1472# put this back in temporarily.
fcd42b1e 1473xm_file="auto-host.h ansidecl.h ${xm_file}"
4a7d7a8b 1474
7349ace9 1475# --------
1476# UNSORTED
1477# --------
1478
14ac9144 1479changequote(,)dnl
9371935c 1480# Compile in configure arguments.
6e11eb2c 1481if test -f configargs.h ; then
9371935c 1482 # Being re-configured.
8bffa377 1483 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
9371935c 1484 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1485else
1486 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1487fi
5df533c9 1488
1489# Double all backslashes and backslash all quotes to turn
1490# gcc_config_arguments into a C string.
1491sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1492$gcc_config_arguments
1493EOF
1494gcc_config_arguments_str=`cat conftest.out`
1495rm -f conftest.out
1496
9371935c 1497cat > configargs.h <<EOF
1498/* Generated automatically. */
5df533c9 1499static const char configuration_arguments[] = "$gcc_config_arguments_str";
6d72c630 1500static const char thread_model[] = "$thread_file";
7dd97ab6 1501
1502static const struct {
1503 const char *name, *value;
1504} configure_default_options[] = $configure_default_options;
9371935c 1505EOF
bf3637a9 1506changequote([,])dnl
01dc27ef 1507
e8ad34e4 1508changequote(,)dnl
6ac2286b 1509gcc_BASEVER=`cat $srcdir/BASE-VER`
1510gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1511gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
e8ad34e4 1512if test -f $srcdir/REVISION ; then
6ac2286b 1513 gcc_REVISION=`cat $srcdir/REVISION`
e8ad34e4 1514else
1515 gcc_REVISION=""
1516fi
1517cat > plugin-version.h <<EOF
1518#include "configargs.h"
1519
1520static char basever[] = "$gcc_BASEVER";
1521static char datestamp[] = "$gcc_DATESTAMP";
1522static char devphase[] = "$gcc_DEVPHASE";
1523static char revision[] = "$gcc_REVISION";
1524
1525/* FIXME plugins: We should make the version information more precise.
1526 One way to do is to add a checksum. */
1527
1528static struct plugin_gcc_version gcc_version = {basever, datestamp,
1529 devphase, revision,
1530 configuration_arguments};
1531EOF
1532changequote([,])dnl
1533
be2828ce 1534# Internationalization
c6976b58 1535ZW_GNU_GETTEXT_SISTER_DIR
c5ab9ed2 1536
c6976b58 1537# If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1538# -liconv on the link line twice.
1539case "$LIBINTL" in *$LIBICONV*)
1540 LIBICONV= ;;
1541esac
be2828ce 1542
197f58fa 1543AC_ARG_ENABLE(secureplt,
1544[ --enable-secureplt enable -msecure-plt by default for PowerPC],
1545[], [])
1546
144c3e90 1547AC_ARG_ENABLE(cld,
1548[ --enable-cld enable -mcld by default for 32bit x86], [],
1549[enable_cld=no])
1550
778a2833 1551# Windows32 Registry support for specifying GCC installation paths.
1552AC_ARG_ENABLE(win32-registry,
1553[ --disable-win32-registry
77eb56d4 1554 disable lookup of installation paths in the
1555 Registry on Windows hosts
1556 --enable-win32-registry enable registry lookup (default)
778a2833 1557 --enable-win32-registry=KEY
77eb56d4 1558 use KEY instead of GCC version as the last portion
1559 of the registry key],,)
1af67e62 1560
45449d9f 1561case $host_os in
1af67e62 1562 win32 | pe | cygwin* | mingw32* | uwin*)
1563 if test "x$enable_win32_registry" != xno; then
1564 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1565 fi
778a2833 1566
1af67e62 1567 if test "x$enable_win32_registry" != xno; then
1568 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1569 [Define to 1 if installation paths should be looked up in the Windows
1570 Registry. Ignored on non-Windows hosts.])
1571
1572 if test "x$enable_win32_registry" != xyes \
1573 && test "x$enable_win32_registry" != x; then
1574 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1575 [Define to be the last component of the Windows registry key under which
1576 to look for installation paths. The full key used will be
1577 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1578 The default is the GCC version number.])
1579 fi
1580 fi
778a2833 1581 ;;
1582esac
1583
cab2aaca 1584# Get an absolute path to the GCC top-level source directory
3354d061 1585holddir=`${PWDCMD-pwd}`
cab2aaca 1586cd $srcdir
3354d061 1587topdir=`${PWDCMD-pwd}`
cab2aaca 1588cd $holddir
1589
0045e563 1590# Conditionalize the makefile for this host machine.
a455468e 1591xmake_file=
2e222ce5 1592for f in ${host_xmake_file}
5a92ba2a 1593do
bf3637a9 1594 if test -f ${srcdir}/config/$f
5a92ba2a 1595 then
a455468e 1596 xmake_file="${xmake_file} \$(srcdir)/config/$f"
5a92ba2a 1597 fi
1598done
01dc27ef 1599
0045e563 1600# Conditionalize the makefile for this target machine.
a455468e 1601tmake_file_=
2e222ce5 1602for f in ${tmake_file}
5a92ba2a 1603do
bf3637a9 1604 if test -f ${srcdir}/config/$f
5a92ba2a 1605 then
a455468e 1606 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
5a92ba2a 1607 fi
1608done
a455468e 1609tmake_file="${tmake_file_}"
4fc83d8e 1610
0045e563 1611out_object_file=`basename $out_file .c`.o
4fc83d8e 1612
ff05e09e 1613tm_file_list="options.h"
1614tm_include_list="options.h"
0045e563 1615for f in $tm_file; do
de5102fe 1616 case $f in
504cf784 1617 ./* )
1618 f=`echo $f | sed 's/^..//'`
1619 tm_file_list="${tm_file_list} $f"
1620 tm_include_list="${tm_include_list} $f"
1621 ;;
673b6e5a 1622 defaults.h )
4dcab8b7 1623 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1624 tm_include_list="${tm_include_list} $f"
1625 ;;
1626 * )
1627 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1628 tm_include_list="${tm_include_list} config/$f"
1629 ;;
de5102fe 1630 esac
0045e563 1631done
01dc27ef 1632
83b8e55b 1633tm_p_file_list=
4dcab8b7 1634tm_p_include_list=
83b8e55b 1635for f in $tm_p_file; do
805e22b2 1636 case $f in
1637 tm-preds.h )
4dcab8b7 1638 tm_p_file_list="${tm_p_file_list} $f"
1639 tm_p_include_list="${tm_p_include_list} $f"
1640 ;;
1641 * )
1642 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1643 tm_p_include_list="${tm_p_include_list} config/$f"
1644 esac
1645done
1646
1647xm_file_list=
1648xm_include_list=
1649for f in $xm_file; do
1650 case $f in
1651 ansidecl.h )
1652 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1653 xm_include_list="${xm_include_list} $f"
1654 ;;
1655 auto-host.h )
1656 xm_file_list="${xm_file_list} $f"
1657 xm_include_list="${xm_include_list} $f"
1658 ;;
1659 * )
1660 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1661 xm_include_list="${xm_include_list} config/$f"
1662 ;;
805e22b2 1663 esac
83b8e55b 1664done
1665
0045e563 1666host_xm_file_list=
4dcab8b7 1667host_xm_include_list=
0045e563 1668for f in $host_xm_file; do
de5102fe 1669 case $f in
673b6e5a 1670 ansidecl.h )
4dcab8b7 1671 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1672 host_xm_include_list="${host_xm_include_list} $f"
1673 ;;
1f3233d1 1674 auto-host.h )
4dcab8b7 1675 host_xm_file_list="${host_xm_file_list} $f"
1676 host_xm_include_list="${host_xm_include_list} $f"
1677 ;;
1678 * )
1679 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1680 host_xm_include_list="${host_xm_include_list} config/$f"
1681 ;;
de5102fe 1682 esac
0045e563 1683done
1684
1685build_xm_file_list=
1686for f in $build_xm_file; do
de5102fe 1687 case $f in
673b6e5a 1688 ansidecl.h )
4dcab8b7 1689 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1690 build_xm_include_list="${build_xm_include_list} $f"
1691 ;;
1f3233d1 1692 auto-build.h | auto-host.h )
4dcab8b7 1693 build_xm_file_list="${build_xm_file_list} $f"
1694 build_xm_include_list="${build_xm_include_list} $f"
1695 ;;
1696 * )
1697 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1698 build_xm_include_list="${build_xm_include_list} config/$f"
1699 ;;
de5102fe 1700 esac
0045e563 1701done
01dc27ef 1702
29d774d0 1703# Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1704# cross-compiler which does not use the native headers and libraries.
0fc07c25 1705# Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1706CROSS= AC_SUBST(CROSS)
1707ALL=all.internal AC_SUBST(ALL)
1708SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
5e368ffe 1709
1710if test "x$with_build_sysroot" != x; then
6ea4242f 1711 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
5e368ffe 1712else
1713 # This value is used, even on a native system, because
1714 # CROSS_SYSTEM_HEADER_DIR is just
1715 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1716 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1717fi
1718
bf3637a9 1719if test x$host != x$target
0045e563 1720then
29d774d0 1721 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
0fc07c25 1722 ALL=all.cross
a99be165 1723 SYSTEM_HEADER_DIR=$build_system_header_dir
4ae4e5e8 1724 case "$host","$target" in
62cb8057 1725 # Darwin crosses can use the host system's libraries and headers,
1726 # because of the fat library support. Of course, it must be the
1727 # same version of Darwin on both sides. Allow the user to
1728 # just say --target=foo-darwin without a version number to mean
1729 # "the version on this system".
1730 *-*-darwin*,*-*-darwin*)
1731 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1732 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1733 if test $hostos = $targetos -o $targetos = darwin ; then
1734 CROSS=
1735 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1736 with_headers=yes
1737 fi
1738 ;;
1739
4ae4e5e8 1740 i?86-*-*,x86_64-*-* \
1741 | powerpc*-*-*,powerpc64*-*-*)
1742 CROSS="$CROSS -DNATIVE_CROSS" ;;
1743 esac
e81222a4 1744elif test "x$TARGET_SYSTEM_ROOT" != x; then
5e368ffe 1745 SYSTEM_HEADER_DIR=$build_system_header_dir
0045e563 1746fi
01dc27ef 1747
81aabcf8 1748# If this is a cross-compiler that does not
1749# have its own set of headers then define
1750# inhibit_libc
1751
3caddd4e 1752# If this is using newlib, without having the headers available now,
1753# then define inhibit_libc in LIBGCC2_CFLAGS.
c872ef71 1754# This prevents libgcc2 from containing any code which requires libc
1755# support.
58a8c75f 1756: ${inhibit_libc=false}
3caddd4e 1757if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1758 test x$with_newlib = xyes ; } &&
9ad4b12b 1759 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
a99be165 1760 inhibit_libc=true
81aabcf8 1761fi
1762AC_SUBST(inhibit_libc)
1763
0fc07c25 1764# When building gcc with a cross-compiler, we need to adjust things so
1765# that the generator programs are still built with the native compiler.
f2397fc4 1766# Also, we cannot run fixincludes.
0fc07c25 1767
1768# These are the normal (build=host) settings:
58933515 1769CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
805e22b2 1770BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
9841cd80 1771BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
0fc07c25 1772STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
4c05f6ec 1773
c19ee476 1774# And these apply if build != host, or we are generating coverage data
1775if test x$build != x$host || test "x$coverage_flags" != x
0045e563 1776then
4a867005 1777 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
9841cd80 1778 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
0045e563 1779fi
01dc27ef 1780
33fd845b 1781# Expand extra_headers to include complete path.
1782# This substitutes for lots of t-* files.
1783extra_headers_list=
a78cd2c1 1784# Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1785for file in ${extra_headers} ; do
1786 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1787done
33fd845b 1788
50388ca3 1789# If use_gcc_tgmath is set, append ginclude/tgmath.h.
1790if test x"$use_gcc_tgmath" = xyes
1791then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1792fi
1793
e08c7853 1794# Define collect2 in Makefile.
1795case $host_can_use_collect2 in
1796 no) collect2= ;;
1797 *) collect2='collect2$(exeext)' ;;
1798esac
1799AC_SUBST([collect2])
1800
0045e563 1801# Add a definition of USE_COLLECT2 if system wants one.
7349ace9 1802case $use_collect2 in
1803 no) use_collect2= ;;
1804 "") ;;
1805 *)
1806 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1807 xm_defines="${xm_defines} USE_COLLECT2"
e08c7853 1808 case $host_can_use_collect2 in
1809 no)
1810 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1811 ;;
1812 esac
7349ace9 1813 ;;
1814esac
0045e563 1815
d8a2ca58 1816# ---------------------------
1817# Assembler & linker features
1818# ---------------------------
1819
794723c1 1820# During stage 2, ld is actually gcc/collect-ld, which is a small script to
1821# discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1822# However when ld-new is first executed from the build tree, libtool will
1823# relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1824# to the build tree. While doing this we need to use the previous-stage
1825# linker, or we have an infinite loop. The presence of a shell script as
1826# ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1827# the gcc/collect-ld script. So we need to know how libtool works, or
1828# exec-tool will fail.
1829
1830m4_defun([_LT_CONFIG_COMMANDS], [])
1831AC_PROG_LIBTOOL
1832AC_SUBST(objdir)
1833AC_SUBST(enable_fast_install)
1834
d2aaa43f 1835# Identify the assembler which will work hand-in-glove with the newly
1836# built GCC, so that we can examine its features. This is the assembler
1837# which will be driven by the driver program.
1838#
1839# If build != host, and we aren't building gas in-tree, we identify a
1840# build->target assembler and hope that it will have the same features
1841# as the host->target assembler we'll be using.
398f3874 1842gcc_cv_gas_major_version=
1843gcc_cv_gas_minor_version=
0a4f4d70 1844gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
c47832b1 1845
1846m4_pattern_allow([AS_FOR_TARGET])dnl
1847AS_VAR_SET_IF(gcc_cv_as,, [
f8b7dbdb 1848if test -x "$DEFAULT_ASSEMBLER"; then
1849 gcc_cv_as="$DEFAULT_ASSEMBLER"
7349ace9 1850elif test -f $gcc_cv_as_gas_srcdir/configure.in \
58220290 1851 && test -f ../gas/Makefile \
1852 && test x$build = x$host; then
c47832b1 1853 gcc_cv_as=../gas/as-new$build_exeext
1854elif test -x as$build_exeext; then
1855 # Build using assembler in the current directory.
1856 gcc_cv_as=./as$build_exeext
1857elif test -x $AS_FOR_TARGET; then
1858 gcc_cv_as="$AS_FOR_TARGET"
1859else
1860 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1861fi])
1862
1863ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1864AC_SUBST(ORIGINAL_AS_FOR_TARGET)
bdbe7091 1865case "$ORIGINAL_AS_FOR_TARGET" in
1866 ./as | ./as$build_exeext) ;;
1867 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1868esac
c47832b1 1869
1870AC_MSG_CHECKING(what assembler to use)
1871if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
58220290 1872 # Single tree build which includes gas. We want to prefer it
1873 # over whatever linker top-level may have detected, since
1874 # we'll use what we're building after installation anyway.
c47832b1 1875 AC_MSG_RESULT(newly built gas)
667fe30b 1876 in_tree_gas=yes
1877 _gcc_COMPUTE_GAS_VERSION
0dac358a 1878 in_tree_gas_is_elf=no
1879 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1880 || (grep 'obj_format = multi' ../gas/Makefile \
1881 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1882 then
1883 in_tree_gas_is_elf=yes
1884 fi
c47832b1 1885else
1886 AC_MSG_RESULT($gcc_cv_as)
1887 in_tree_gas=no
398f3874 1888fi
1889
d2aaa43f 1890# Identify the linker which will work hand-in-glove with the newly
1891# built GCC, so that we can examine its features. This is the linker
1892# which will be driven by the driver program.
1893#
1894# If build != host, and we aren't building gas in-tree, we identify a
1895# build->target linker and hope that it will have the same features
1896# as the host->target linker we'll be using.
0d6378a9 1897gcc_cv_gld_major_version=
1898gcc_cv_gld_minor_version=
1899gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1900gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
c47832b1 1901
1902AS_VAR_SET_IF(gcc_cv_ld,, [
0d6378a9 1903if test -x "$DEFAULT_LINKER"; then
1904 gcc_cv_ld="$DEFAULT_LINKER"
7349ace9 1905elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
58220290 1906 && test -f ../ld/Makefile \
1907 && test x$build = x$host; then
c47832b1 1908 gcc_cv_ld=../ld/ld-new$build_exeext
1909elif test -x collect-ld$build_exeext; then
1910 # Build using linker in the current directory.
1911 gcc_cv_ld=./collect-ld$build_exeext
1912elif test -x $LD_FOR_TARGET; then
1913 gcc_cv_ld="$LD_FOR_TARGET"
1914else
1915 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1916fi])
1917
1918ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1919AC_SUBST(ORIGINAL_LD_FOR_TARGET)
bdbe7091 1920case "$ORIGINAL_LD_FOR_TARGET" in
1921 ./collect-ld | ./collect-ld$build_exeext) ;;
1922 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
1923esac
c47832b1 1924
1925AC_MSG_CHECKING(what linker to use)
1926if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
58220290 1927 # Single tree build which includes ld. We want to prefer it
1928 # over whatever linker top-level may have detected, since
1929 # we'll use what we're building after installation anyway.
c47832b1 1930 AC_MSG_RESULT(newly built ld)
7349ace9 1931 in_tree_ld=yes
0dac358a 1932 in_tree_ld_is_elf=no
1933 if (grep 'EMUL = .*elf' ../ld/Makefile \
092f763e 1934 || grep 'EMUL = .*linux' ../ld/Makefile \
1935 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
0dac358a 1936 in_tree_ld_is_elf=yes
1937 fi
0d6378a9 1938 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
1939 do
1940changequote(,)dnl
78dde42d 1941 gcc_cv_gld_version=`sed -n -e 's/^[ ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
0d6378a9 1942 if test x$gcc_cv_gld_version != x; then
1943 break
1944 fi
1945 done
0d6378a9 1946 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1947 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1948changequote([,])dnl
c47832b1 1949else
1950 AC_MSG_RESULT($gcc_cv_ld)
1951 in_tree_ld=no
0d6378a9 1952fi
1953
398f3874 1954# Figure out what nm we will be using.
37c5bbf8 1955gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
c47832b1 1956AS_VAR_SET_IF(gcc_cv_nm,, [
f32e3360 1957if test -f $gcc_cv_binutils_srcdir/configure.in \
13648950 1958 && test -f ../binutils/Makefile \
1959 && test x$build = x$host; then
f32e3360 1960 gcc_cv_nm=../binutils/nm-new$build_exeext
1961elif test -x nm$build_exeext; then
68c3d71c 1962 gcc_cv_nm=./nm$build_exeext
c47832b1 1963elif test -x $NM_FOR_TARGET; then
1964 gcc_cv_nm="$NM_FOR_TARGET"
1965else
1966 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1967fi])
f32e3360 1968
f32e3360 1969AC_MSG_CHECKING(what nm to use)
c47832b1 1970if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1971 # Single tree build which includes binutils.
1972 AC_MSG_RESULT(newly built nm)
1973 in_tree_nm=yes
1974else
1975 AC_MSG_RESULT($gcc_cv_nm)
1976 in_tree_nm=no
1977fi
1978
1979ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
1980AC_SUBST(ORIGINAL_NM_FOR_TARGET)
bdbe7091 1981case "$ORIGINAL_NM_FOR_TARGET" in
1982 ./nm | ./nm$build_exeext) ;;
1983 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
1984esac
1985
398f3874 1986
74e387fc 1987# Figure out what objdump we will be using.
c47832b1 1988AS_VAR_SET_IF(gcc_cv_objdump,, [
ae74ffb7 1989if test -f $gcc_cv_binutils_srcdir/configure.in \
13648950 1990 && test -f ../binutils/Makefile \
1991 && test x$build = x$host; then
37c5bbf8 1992 # Single tree build which includes binutils.
f32e3360 1993 gcc_cv_objdump=../binutils/objdump$build_exeext
ae74ffb7 1994elif test -x objdump$build_exeext; then
1995 gcc_cv_objdump=./objdump$build_exeext
c47832b1 1996elif test -x $OBJDUMP_FOR_TARGET; then
1997 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
1998else
1999 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2000fi])
ae74ffb7 2001
ae74ffb7 2002AC_MSG_CHECKING(what objdump to use)
c47832b1 2003if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2004 # Single tree build which includes binutils.
2005 AC_MSG_RESULT(newly built objdump)
2006elif test x$gcc_cv_objdump = x; then
2007 AC_MSG_RESULT(not found)
2008else
2009 AC_MSG_RESULT($gcc_cv_objdump)
2010fi
74e387fc 2011
8eac5d17 2012# Figure out what readelf we will be using.
2013AS_VAR_SET_IF(gcc_cv_readelf,, [
2014if test -f $gcc_cv_binutils_srcdir/configure.in \
2015 && test -f ../binutils/Makefile \
2016 && test x$build = x$host; then
2017 # Single tree build which includes binutils.
2018 gcc_cv_readelf=../binutils/readelf$build_exeext
2019elif test -x readelf$build_exeext; then
2020 gcc_cv_readelf=./readelf$build_exeext
2021else
2022 AC_PATH_PROG(gcc_cv_readelf, readelf)
2023fi])
2024
2025AC_MSG_CHECKING(what readelf to use)
2026if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2027 # Single tree build which includes binutils.
2028 AC_MSG_RESULT(newly built readelf)
2029elif test x$gcc_cv_readelf = x; then
2030 AC_MSG_RESULT(not found)
2031else
2032 AC_MSG_RESULT($gcc_cv_readelf)
2033fi
2034
398f3874 2035# Figure out what assembler alignment features are present.
6d6c1801 2036gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2037 [2,6,0],,
2038[.balign 4
2039.p2align 2],,
2040[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2041 [Define if your assembler supports .balign and .p2align.])])
2042
2043gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2044 [2,8,0],,
2045 [.p2align 4,,7],,
2046[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2047 [Define if your assembler supports specifying the maximum number
2048 of bytes to skip when using the GAS .p2align command.])])
2049
4be92808 2050gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2051 [2,8,0],,
2052 [.literal16],,
2053[AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2054 [Define if your assembler supports .literal16.])])
2055
6d6c1801 2056gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2057 [elf,2,9,0],,
2058 [conftest_label1: .word 0
b6d28b19 2059.subsection -1
2060conftest_label2: .word 0
6d6c1801 2061.previous],
2062 [if test x$gcc_cv_nm != x; then
2063 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2064 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2065 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2066 then :
2067 else gcc_cv_as_subsection_m1=yes
2068 fi
2069 rm -f conftest.nm1 conftest.nm2
2070 fi],
2071 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2072 [Define if your assembler supports .subsection and .subsection -1 starts
2073 emitting at the beginning of your section.])])
2074
2075gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2076 [2,2,0],,
2077 [ .weak foobar],,
2078[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2079
f4a30bd7 2080gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2081 [2,17,0],,
2082 [ .weakref foobar, barfnot],,
2083[AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2084
2455c36b 2085gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2086 [2,15,91],,
2087 [ .SPACE $TEXT$
2088 .NSUBSPA $CODE$,COMDAT],,
2089[AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2090
6d6c1801 2091# .hidden needs to be supported in both the assembler and the linker,
2092# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2093# This is irritatingly difficult to feature test for; we have to check the
2094# date string after the version number. If we've got an in-tree
2095# ld, we don't know its patchlevel version, so we set the baseline at 2.13
2096# to be safe.
2097# The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2098gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2099 [elf,2,13,0],,
2100[ .hidden foobar
2101foobar:])
2102
2103AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2104[if test $in_tree_ld = yes ; then
2105 gcc_cv_ld_hidden=no
2106 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 \
2107 && test $in_tree_ld_is_elf = yes; then
2108 gcc_cv_ld_hidden=yes
2109 fi
2110else
8177d9d5 2111changequote(,)dnl
6d6c1801 2112 gcc_cv_ld_hidden=yes
43557a8f 2113 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
6d6c1801 2114 if echo "$ld_ver" | grep GNU > /dev/null; then
6d6c1801 2115 ld_vers=`echo $ld_ver | sed -n \
c7871c82 2116 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
6d6c1801 2117 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'`
2593b9be 2118 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2119 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2120 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
6d6c1801 2121 if test 0"$ld_date" -lt 20020404; then
2122 if test -n "$ld_date"; then
2123 # If there was date string, but was earlier than 2002-04-04, fail
2124 gcc_cv_ld_hidden=no
2125 elif test -z "$ld_vers"; then
2126 # If there was no date string nor ld version number, something is wrong
2127 gcc_cv_ld_hidden=no
2128 else
6d6c1801 2129 test -z "$ld_vers_patch" && ld_vers_patch=0
2130 if test "$ld_vers_major" -lt 2; then
2131 gcc_cv_ld_hidden=no
2132 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2133 gcc_cv_ld_hidden="no"
2134 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2135 gcc_cv_ld_hidden=no
a985a485 2136 fi
6d6c1801 2137 fi
61ab9ea9 2138 fi
6d6c1801 2139 else
6f8f5d6c 2140 case "${target}" in
ecb7c90c 2141 hppa64*-*-hpux* | ia64*-*-hpux*)
6f8f5d6c 2142 gcc_cv_ld_hidden=yes
2143 ;;
8177d9d5 2144 *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2145 gcc_cv_ld_hidden=yes
2146 ;;
6f8f5d6c 2147 *)
2148 gcc_cv_ld_hidden=no
2149 ;;
2150 esac
6d6c1801 2151 fi
8177d9d5 2152changequote([,])dnl
6d6c1801 2153fi])
2154libgcc_visibility=no
e8c2499b 2155AC_SUBST(libgcc_visibility)
fcd42b1e 2156GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
0b4b4686 2157if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
6d6c1801 2158 libgcc_visibility=yes
2159 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2160 [Define if your assembler and linker support .hidden.])
2161fi
5be729c9 2162
e94830ac 2163AC_MSG_CHECKING(linker read-only and read-write section mixing)
2164gcc_cv_ld_ro_rw_mix=unknown
2165if test $in_tree_ld = yes ; then
2166 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 \
2167 && test $in_tree_ld_is_elf = yes; then
2168 gcc_cv_ld_ro_rw_mix=read-write
2169 fi
2170elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2171 echo '.section myfoosect, "a"' > conftest1.s
2172 echo '.section myfoosect, "aw"' > conftest2.s
2173 echo '.byte 1' >> conftest2.s
2174 echo '.section myfoosect, "a"' > conftest3.s
2175 echo '.byte 0' >> conftest3.s
2176 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2177 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2178 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2179 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2180 conftest2.o conftest3.o > /dev/null 2>&1; then
2181 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2182 | sed -e '/myfoosect/!d' -e N`
2183 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2184 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2185 gcc_cv_ld_ro_rw_mix=read-only
2186 else
2187 gcc_cv_ld_ro_rw_mix=read-write
2188 fi
2189 fi
2190 fi
2191changequote(,)dnl
2192 rm -f conftest.* conftest[123].*
2193changequote([,])dnl
2194fi
2195if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2196 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2197 [Define if your linker links a mix of read-only
2198 and read-write sections into a read-write section.])
2199fi
2200AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2201
6d6c1801 2202# Check if we have .[us]leb128, and support symbol arithmetic with it.
2203gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2204 [elf,2,11,0],,
2205[ .data
37a2e188 2206 .uleb128 L2 - L1
2207L1:
2208 .uleb128 1280
2209 .sleb128 -1010
6d6c1801 2210L2:],
2211 [# GAS versions before 2.11 do not support uleb128,
2212 # despite appearing to.
2213 # ??? There exists an elf-specific test that will crash
2214 # the assembler. Perhaps it's better to figure out whether
2215 # arbitrary sections are supported and try the test.
43557a8f 2216 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
6d6c1801 2217 if echo "$as_ver" | grep GNU > /dev/null; then
088fd851 2218changequote(,)dnl
b29dc614 2219 as_vers=`echo $as_ver | sed -n \
c7871c82 2220 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
b29dc614 2221 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2222 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
088fd851 2223changequote([,])dnl
6d6c1801 2224 if test $as_major -eq 2 && test $as_minor -lt 11
2225 then :
2226 else gcc_cv_as_leb128=yes
2227 fi
2228 fi],
2229 [AC_DEFINE(HAVE_AS_LEB128, 1,
2230 [Define if your assembler supports .sleb128 and .uleb128.])])
2231
fb39ff6e 2232# Check if we have assembler support for unwind directives.
2233gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
90deca2e 2234 ,,
fb39ff6e 2235[ .text
2236 .cfi_startproc
2237 .cfi_offset 0, 0
2238 .cfi_same_value 1
2239 .cfi_def_cfa 1, 2
2240 .cfi_escape 1, 2, 3, 4, 5
e94830ac 2241 .cfi_endproc],
2242[case "$target" in
2243 *-*-solaris*)
2244 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2245 # read-only and read-write sections, we need to make sure that the
2246 # assembler used emits read-write .eh_frame sections.
2247 if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2248 if test "x$gcc_cv_objdump" != x; then
2249 if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2250 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2251 gcc_cv_as_cfi_directive=no
2252 else
2253 gcc_cv_as_cfi_directive=yes
2254 fi
2255 else
2256 # no objdump, err on the side of caution
2257 gcc_cv_as_cfi_directive=no
2258 fi
2259 else
2260 gcc_cv_as_cfi_directive=yes
2261 fi
2262 ;;
2263 *-*-*)
2264 gcc_cv_as_cfi_directive=yes
2265 ;;
2266esac])
8eac5d17 2267if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_readelf != x; then
2268gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2269 ,,
2270[ .text
2271 .cfi_startproc
2272 .cfi_adjust_cfa_offset 64
2273 .skip 512, 0
2274 .cfi_adjust_cfa_offset 128
2275 .cfi_endproc],
2276[
2277changequote(,)dnl
2278if $gcc_cv_readelf -wf conftest.o 2>/dev/null \
2279 | grep 'DW_CFA_advance_loc[12]:[ ][ ]*512[ ]' >/dev/null; then
2280 gcc_cv_as_cfi_advance_working=yes
2281fi
2282changequote([,])dnl
2283])
2284else
f9a42338 2285 # no readelf, err on the side of caution
2286 gcc_cv_as_cfi_advance_working=no
8eac5d17 2287fi
fb39ff6e 2288AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
8eac5d17 2289 [`if test $gcc_cv_as_cfi_directive = yes \
2290 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3dcd5df1 2291 [Define 0/1 if your assembler supports CFI directives.])
2292
2293gcc_GAS_CHECK_FEATURE([cfi personality directive],
90deca2e 2294 gcc_cv_as_cfi_personality_directive, ,,
3dcd5df1 2295[ .text
846a6223 2296 .cfi_startproc
3dcd5df1 2297 .cfi_personality 0, symbol
2298 .cfi_endproc])
2299AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2300 [`if test $gcc_cv_as_cfi_personality_directive = yes;
2301 then echo 1; else echo 0; fi`],
2302 [Define 0/1 if your assembler supports .cfi_personality.])
fb39ff6e 2303
033a2356 2304gcc_GAS_CHECK_FEATURE([cfi sections directive],
2305 gcc_cv_as_cfi_sections_directive, ,,
2306[ .text
2307 .cfi_sections .debug_frame, .eh_frame
2308 .cfi_startproc
2309 .cfi_endproc])
2310AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2311 [`if test $gcc_cv_as_cfi_sections_directive = yes;
2312 then echo 1; else echo 0; fi`],
2313 [Define 0/1 if your assembler supports .cfi_sections.])
2314
6d6c1801 2315# GAS versions up to and including 2.11.0 may mis-optimize
2316# .eh_frame data.
2317gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2318 [elf,2,12,0],,
2319[ .text
c3f311c4 2320.LFB1:
2321 .4byte 0
2322.L1:
2323 .4byte 0
2324.LFE1:
2325 .section .eh_frame,"aw",@progbits
2326__FRAME_BEGIN__:
2327 .4byte .LECIE1-.LSCIE1
2328.LSCIE1:
2329 .4byte 0x0
2330 .byte 0x1
2331 .ascii "z\0"
2332 .byte 0x1
2333 .byte 0x78
2334 .byte 0x1a
2335 .byte 0x0
2336 .byte 0x4
2337 .4byte 1
2338 .p2align 1
2339.LECIE1:
2340.LSFDE1:
2341 .4byte .LEFDE1-.LASFDE1
2342.LASFDE1:
2343 .4byte .LASFDE1-__FRAME_BEGIN__
2344 .4byte .LFB1
2345 .4byte .LFE1-.LFB1
2346 .byte 0x4
2347 .4byte .LFE1-.LFB1
2348 .byte 0x4
2349 .4byte .L1-.LFB1
6d6c1801 2350.LEFDE1:],
6a8964db 2351[ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2352cat > conftest.lit <<EOF
c3f311c4 2353 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2354 0010 01000000 12000000 18000000 00000000 ................
6a8964db 2355 0020 08000000 04080000 0044 .........D @&t@
82ebecf9 2356EOF
6a8964db 2357cat > conftest.big <<EOF
82ebecf9 2358 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2359 0010 00000001 00000012 00000018 00000000 ................
6a8964db 2360 0020 00000008 04000000 0844 .........D @&t@
c3f311c4 2361EOF
6d6c1801 2362 # If the assembler didn't choke, and we can objdump,
2363 # and we got the correct data, then succeed.
a9e7d751 2364 # The text in the here-document typically retains its unix-style line
2365 # endings, while the output of objdump will use host line endings.
2366 # Therefore, use diff -b for the comparisons.
6d6c1801 2367 if test x$gcc_cv_objdump != x \
2368 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2369 | tail -3 > conftest.got \
a9e7d751 2370 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2371 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
6d6c1801 2372 then
2373 gcc_cv_as_eh_frame=yes
2374 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2375 gcc_cv_as_eh_frame=buggy
2376 else
2377 # Uh oh, what do we do now?
2378 gcc_cv_as_eh_frame=no
2379 fi])
2380
2381if test $gcc_cv_as_eh_frame = buggy; then
2382 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2383 [Define if your assembler mis-optimizes .eh_frame data.])
bb2821c0 2384fi
bb2821c0 2385
6d6c1801 2386gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2387 [elf,2,12,0], [--fatal-warnings],
cdb2d692 2388 [.section .rodata.str, "aMS", @progbits, 1])
537cd941 2389if test $gcc_cv_as_shf_merge = no; then
2390 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2391 [elf,2,12,0], [--fatal-warnings],
2392 [.section .rodata.str, "aMS", %progbits, 1])
2393fi
cdb2d692 2394AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2395 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2396[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
6d6c1801 2397
537cd941 2398gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2593b9be 2399 [elf,2,16,0], [--fatal-warnings],
537cd941 2400 [.section .text,"axG",@progbits,.foo,comdat])
2401if test $gcc_cv_as_comdat_group = yes; then
2402 gcc_cv_as_comdat_group_percent=no
2403else
2404 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2593b9be 2405 [elf,2,16,0], [--fatal-warnings],
537cd941 2406 [.section .text,"axG",%progbits,.foo,comdat])
2407fi
e97d11c2 2408if test $in_tree_ld = yes ; then
2409 comdat_group=no
2410 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 \
2411 && test $in_tree_ld_is_elf = yes; then
2412 comdat_group=yes
2413 fi
2414elif test x"$ld_vers" != x; then
2593b9be 2415 comdat_group=yes
2416 if test 0"$ld_date" -lt 20050308; then
2417 if test -n "$ld_date"; then
2418 # If there was date string, but was earlier than 2005-03-08, fail
2419 comdat_group=no
2420 elif test "$ld_vers_major" -lt 2; then
2421 comdat_group=no
2422 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2423 comdat_group=no
2424 fi
2425 fi
f3424fe6 2426else
2427 # assume linkers other than GNU ld don't support COMDAT group
2428 comdat_group=no
2429fi
2430if test $comdat_group = no; then
2431 gcc_cv_as_comdat_group=no
2432 gcc_cv_as_comdat_group_percent=no
2593b9be 2433fi
2434AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
537cd941 2435 [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2593b9be 2436[Define 0/1 if your assembler and linker support COMDAT groups.])
537cd941 2437
d01c707b 2438gcc_GAS_CHECK_FEATURE([line table discriminator support],
2439 gcc_cv_as_discriminator,
2440 [2,19,51],,
2441[ .text
2442 .file 1 "conf.c"
2443 .loc 1 1 0 discriminator 1],,
2444[AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2445 [Define if your assembler supports the .loc discriminator sub-directive.])])
2446
c656b8fd 2447# Thread-local storage - the check is heavily parameterized.
2d6788fe 2448conftest_s=
2449tls_first_major=
2450tls_first_minor=
527d5be8 2451tls_as_opt=
2d6788fe 2452case "$target" in
2453changequote(,)dnl
5f7b9df8 2454 alpha*-*-*)
2455 conftest_s='
2456 .section ".tdata","awT",@progbits
2457foo: .long 25
2458 .text
2459 ldq $27,__tls_get_addr($29) !literal!1
2460 lda $16,foo($29) !tlsgd!1
2461 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2462 ldq $27,__tls_get_addr($29) !literal!2
2463 lda $16,foo($29) !tlsldm!2
2464 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2465 ldq $1,foo($29) !gotdtprel
2466 ldah $2,foo($29) !dtprelhi
2467 lda $3,foo($2) !dtprello
2468 lda $4,foo($29) !dtprel
2469 ldq $1,foo($29) !gottprel
2470 ldah $2,foo($29) !tprelhi
2471 lda $3,foo($2) !tprello
2472 lda $4,foo($29) !tprel'
2473 tls_first_major=2
2474 tls_first_minor=13
07a23b4e 2475 tls_as_opt=--fatal-warnings
5f7b9df8 2476 ;;
10178ded 2477 cris-*-*|crisv32-*-*)
2478 conftest_s='
2479 .section ".tdata","awT",@progbits
2480x: .long 25
2481 .text
2482 move.d x:IE,$r10
2483 nop'
2484 tls_first_major=2
2485 tls_first_minor=20
2486 tls_as_opt=--fatal-warnings
2487 ;;
cfd199cb 2488 frv*-*-*)
2489 conftest_s='
2490 .section ".tdata","awT",@progbits
2491x: .long 25
2492 .text
2493 call #gettlsoff(x)'
2494 tls_first_major=2
2495 tls_first_minor=14
2496 ;;
716b2c5a 2497 hppa*-*-linux*)
2498 conftest_s='
2499t1: .reg %r20
2500t2: .reg %r21
2501gp: .reg %r19
2502 .section ".tdata","awT",@progbits
2503foo: .long 25
2504 .text
2505 .align 4
2506 addil LT%foo-$tls_gdidx$,gp
2507 ldo RT%foo-$tls_gdidx$(%r1),%arg0
2508 b __tls_get_addr
2509 nop
2510 addil LT%foo-$tls_ldidx$,gp
2511 b __tls_get_addr
2512 ldo RT%foo-$tls_ldidx$(%r1),%arg0
2513 addil LR%foo-$tls_dtpoff$,%ret0
2514 ldo RR%foo-$tls_dtpoff$(%r1),%t1
2515 mfctl %cr27,%t1
2516 addil LT%foo-$tls_ieoff$,gp
2517 ldw RT%foo-$tls_ieoff$(%r1),%t2
2518 add %t1,%t2,%t3
2519 mfctl %cr27,%t1
2520 addil LR%foo-$tls_leoff$,%t1
2521 ldo RR%foo-$tls_leoff$(%r1),%t2'
2522 tls_first_major=2
2523 tls_first_minor=15
2524 tls_as_opt=--fatal-warnings
2525 ;;
f655717d 2526 arm*-*-*)
2527 conftest_s='
2528 .section ".tdata","awT",%progbits
2529foo: .long 25
2530 .text
2531.word foo(gottpoff)
2532.word foo(tpoff)
2533.word foo(tlsgd)
2534.word foo(tlsldm)
2535.word foo(tlsldo)'
2536 tls_first_major=2
2537 tls_first_minor=17
2538 ;;
2d6788fe 2539 i[34567]86-*-*)
2d6788fe 2540 conftest_s='
2541 .section ".tdata","awT",@progbits
2542foo: .long 25
2543 .text
2544 movl %gs:0, %eax
2545 leal foo@TLSGD(,%ebx,1), %eax
2546 leal foo@TLSLDM(%ebx), %eax
2547 leal foo@DTPOFF(%eax), %edx
2548 movl foo@GOTTPOFF(%ebx), %eax
2549 subl foo@GOTTPOFF(%ebx), %eax
29d8dd5c 2550 addl foo@GOTNTPOFF(%ebx), %eax
2551 movl foo@INDNTPOFF, %eax
2d6788fe 2552 movl $foo@TPOFF, %eax
2553 subl $foo@TPOFF, %eax
2554 leal foo@NTPOFF(%ecx), %eax'
2555 tls_first_major=2
29d8dd5c 2556 tls_first_minor=14
07a23b4e 2557 tls_as_opt=--fatal-warnings
29d8dd5c 2558 ;;
2559 x86_64-*-*)
2560 conftest_s='
2561 .section ".tdata","awT",@progbits
2562foo: .long 25
2563 .text
2564 movq %fs:0, %rax
2565 leaq foo@TLSGD(%rip), %rdi
2566 leaq foo@TLSLD(%rip), %rdi
2567 leaq foo@DTPOFF(%rax), %rdx
2568 movq foo@GOTTPOFF(%rip), %rax
2569 movq $foo@TPOFF, %rax'
2570 tls_first_major=2
2571 tls_first_minor=14
07a23b4e 2572 tls_as_opt=--fatal-warnings
2d6788fe 2573 ;;
c87e09ad 2574 ia64-*-*)
2575 conftest_s='
2576 .section ".tdata","awT",@progbits
2577foo: data8 25
2578 .text
2579 addl r16 = @ltoff(@dtpmod(foo#)), gp
2580 addl r17 = @ltoff(@dtprel(foo#)), gp
2581 addl r18 = @ltoff(@tprel(foo#)), gp
2582 addl r19 = @dtprel(foo#), gp
2583 adds r21 = @dtprel(foo#), r13
2584 movl r23 = @dtprel(foo#)
2585 addl r20 = @tprel(foo#), gp
2586 adds r22 = @tprel(foo#), r13
2587 movl r24 = @tprel(foo#)'
2588 tls_first_major=2
2589 tls_first_minor=13
07a23b4e 2590 tls_as_opt=--fatal-warnings
c87e09ad 2591 ;;
42bdde4b 2592 mips*-*-*)
2593 conftest_s='
2594 .section .tdata,"awT",@progbits
2595x:
2596 .word 2
2597 .text
2598 addiu $4, $28, %tlsgd(x)
2599 addiu $4, $28, %tlsldm(x)
2600 lui $4, %dtprel_hi(x)
2601 addiu $4, $4, %dtprel_lo(x)
2602 lw $4, %gottprel(x)($28)
2603 lui $4, %tprel_hi(x)
2604 addiu $4, $4, %tprel_lo(x)'
2605 tls_first_major=2
2606 tls_first_minor=16
2607 tls_as_opt='-32 --fatal-warnings'
2608 ;;
869bde6b 2609 m68k-*-*)
2610 conftest_s='
2611 .section .tdata,"awT",@progbits
2612x:
2613 .word 2
2614 .text
2615foo:
2616 move.l x@TLSGD(%a5),%a0
2617 move.l x@TLSLDM(%a5),%a0
2618 move.l x@TLSLDO(%a5),%a0
2619 move.l x@TLSIE(%a5),%a0
2620 move.l x@TLSLE(%a5),%a0'
2621 tls_first_major=2
2622 tls_first_minor=19
2623 tls_as_opt='--fatal-warnings'
2624 ;;
9b552c45 2625 powerpc-*-*)
2626 conftest_s='
2627 .section ".tdata","awT",@progbits
2628 .align 2
2629ld0: .space 4
2630ld1: .space 4
2631x1: .space 4
2632x2: .space 4
2633x3: .space 4
2634 .text
2635 addi 3,31,ld0@got@tlsgd
2636 bl __tls_get_addr
2637 addi 3,31,x1@got@tlsld
2638 bl __tls_get_addr
2639 addi 9,3,x1@dtprel
2640 addis 9,3,x2@dtprel@ha
2641 addi 9,9,x2@dtprel@l
2642 lwz 9,x3@got@tprel(31)
2643 add 9,9,x@tls
2644 addi 9,2,x1@tprel
2645 addis 9,2,x2@tprel@ha
2646 addi 9,9,x2@tprel@l'
2647 tls_first_major=2
2648 tls_first_minor=14
07a23b4e 2649 tls_as_opt="-a32 --fatal-warnings"
9b552c45 2650 ;;
2651 powerpc64-*-*)
2652 conftest_s='
2653 .section ".tdata","awT",@progbits
2654 .align 3
2655ld0: .space 8
2656ld1: .space 8
2657x1: .space 8
2658x2: .space 8
2659x3: .space 8
2660 .text
2661 addi 3,2,ld0@got@tlsgd
2662 bl .__tls_get_addr
2663 nop
2664 addi 3,2,ld1@toc
2665 bl .__tls_get_addr
2666 nop
2667 addi 3,2,x1@got@tlsld
2668 bl .__tls_get_addr
2669 nop
2670 addi 9,3,x1@dtprel
2671 bl .__tls_get_addr
2672 nop
2673 addis 9,3,x2@dtprel@ha
2674 addi 9,9,x2@dtprel@l
2675 bl .__tls_get_addr
2676 nop
2677 ld 9,x3@got@dtprel(2)
2678 add 9,9,3
2679 bl .__tls_get_addr
2680 nop'
2681 tls_first_major=2
2682 tls_first_minor=14
07a23b4e 2683 tls_as_opt="-a64 --fatal-warnings"
9b552c45 2684 ;;
be00aaa8 2685 s390-*-*)
2686 conftest_s='
2687 .section ".tdata","awT",@progbits
2688foo: .long 25
2689 .text
2690 .long foo@TLSGD
2691 .long foo@TLSLDM
2692 .long foo@DTPOFF
2693 .long foo@NTPOFF
2694 .long foo@GOTNTPOFF
2695 .long foo@INDNTPOFF
2696 l %r1,foo@GOTNTPOFF(%r12)
2697 l %r1,0(%r1):tls_load:foo
2698 bas %r14,0(%r1,%r13):tls_gdcall:foo
2699 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2700 tls_first_major=2
2701 tls_first_minor=14
07a23b4e 2702 tls_as_opt="-m31 --fatal-warnings"
be00aaa8 2703 ;;
2704 s390x-*-*)
2705 conftest_s='
2706 .section ".tdata","awT",@progbits
2707foo: .long 25
2708 .text
2709 .quad foo@TLSGD
2710 .quad foo@TLSLDM
2711 .quad foo@DTPOFF
2712 .quad foo@NTPOFF
2713 .quad foo@GOTNTPOFF
2714 lg %r1,foo@GOTNTPOFF(%r12)
2715 larl %r1,foo@INDNTPOFF
2716 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2717 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2718 tls_first_major=2
2719 tls_first_minor=14
07a23b4e 2720 tls_as_opt="-m64 -Aesame --fatal-warnings"
be00aaa8 2721 ;;
ae852eea 2722 sh-*-* | sh[34]-*-*)
2723 conftest_s='
2724 .section ".tdata","awT",@progbits
2725foo: .long 25
2726 .text
2727 .long foo@TLSGD
2728 .long foo@TLSLDM
2729 .long foo@DTPOFF
2730 .long foo@GOTTPOFF
2731 .long foo@TPOFF'
2732 tls_first_major=2
2733 tls_first_minor=13
07a23b4e 2734 tls_as_opt=--fatal-warnings
ae852eea 2735 ;;
05b3a83f 2736 sparc*-*-*)
07a23b4e 2737 case "$target" in
43eca37c 2738 sparc*-sun-solaris2.[56789]*)
2739 # TLS was introduced in the Solaris 9 4/04 release but
2740 # we do not enable it by default on Solaris 9 either.
2741 if test "x$enable_tls" = xyes ; then
2742 on_solaris=yes
2743 else
2744 enable_tls=no;
2745 fi
2746 ;;
07a23b4e 2747 sparc*-sun-solaris2.*)
2748 on_solaris=yes
2749 ;;
2750 *)
2751 on_solaris=no
2752 ;;
2753 esac
2754 if test x$on_solaris = xyes && test x$gas_flag = xno; then
2755 conftest_s='
2756 .section ".tdata",#alloc,#write,#tls
2757foo: .long 25
2758 .text
2759 sethi %tgd_hi22(foo), %o0
2760 add %o0, %tgd_lo10(foo), %o1
2761 add %l7, %o1, %o0, %tgd_add(foo)
2762 call __tls_get_addr, %tgd_call(foo)
2763 sethi %tldm_hi22(foo), %l1
2764 add %l1, %tldm_lo10(foo), %l2
2765 add %l7, %l2, %o0, %tldm_add(foo)
2766 call __tls_get_addr, %tldm_call(foo)
2767 sethi %tldo_hix22(foo), %l3
2768 xor %l3, %tldo_lox10(foo), %l4
2769 add %o0, %l4, %l5, %tldo_add(foo)
2770 sethi %tie_hi22(foo), %o3
2771 add %o3, %tie_lo10(foo), %o3
2772 ld [%l7 + %o3], %o2, %tie_ld(foo)
2773 add %g7, %o2, %o4, %tie_add(foo)
2774 sethi %tle_hix22(foo), %l1
2775 xor %l1, %tle_lox10(foo), %o5
2776 ld [%g7 + %o5], %o1'
2777 tls_first_major=0
2778 tls_first_minor=0
2779 else
2780 conftest_s='
05b3a83f 2781 .section ".tdata","awT",@progbits
2782foo: .long 25
2783 .text
2784 sethi %tgd_hi22(foo), %o0
2785 add %o0, %tgd_lo10(foo), %o1
2786 add %l7, %o1, %o0, %tgd_add(foo)
2787 call __tls_get_addr, %tgd_call(foo)
2788 sethi %tldm_hi22(foo), %l1
2789 add %l1, %tldm_lo10(foo), %l2
2790 add %l7, %l2, %o0, %tldm_add(foo)
2791 call __tls_get_addr, %tldm_call(foo)
2792 sethi %tldo_hix22(foo), %l3
2793 xor %l3, %tldo_lox10(foo), %l4
2794 add %o0, %l4, %l5, %tldo_add(foo)
2795 sethi %tie_hi22(foo), %o3
2796 add %o3, %tie_lo10(foo), %o3
2797 ld [%l7 + %o3], %o2, %tie_ld(foo)
2798 add %g7, %o2, %o4, %tie_add(foo)
2799 sethi %tle_hix22(foo), %l1
2800 xor %l1, %tle_lox10(foo), %o5
2801 ld [%g7 + %o5], %o1'
2802 tls_first_major=2
2803 tls_first_minor=14
07a23b4e 2804 tls_as_opt="-32 --fatal-warnings"
2805 fi
05b3a83f 2806 ;;
c656b8fd 2807 xtensa*-*-*)
2808 conftest_s='
2809 .section ".tdata","awT",@progbits
2810foo: .long 25
2811 .text
2812 movi a8, foo@TLSFUNC
2813 movi a10, foo@TLSARG
2814 callx8.tls a8, foo@TLSCALL'
2815 tls_first_major=2
2816 tls_first_minor=19
2817 ;;
05b3a83f 2818changequote([,])dnl
2d6788fe 2819esac
c024e802 2820set_have_as_tls=no
2821if test "x$enable_tls" = xno ; then
2822 : # TLS explicitly disabled.
2823elif test "x$enable_tls" = xyes ; then
2824 set_have_as_tls=yes # TLS explicitly enabled.
2825elif test -z "$tls_first_major"; then
6d6c1801 2826 : # If we don't have a check, assume no support.
2827else
2828 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
07a23b4e 2829 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
c024e802 2830 [set_have_as_tls=yes])
2831fi
2832if test $set_have_as_tls = yes ; then
2833 AC_DEFINE(HAVE_AS_TLS, 1,
2834 [Define if your assembler supports thread-local storage.])
2d6788fe 2835fi
6d6c1801 2836
2837# Target-specific assembler checks.
2d6788fe 2838
79f90e2b 2839AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2840gcc_cv_ld_static_dynamic=no
2841if test $in_tree_ld = yes ; then
1301d110 2842 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; then
79f90e2b 2843 gcc_cv_ld_static_dynamic=yes
2844 fi
2845elif test x$gcc_cv_ld != x; then
2846 # Check if linker supports -Bstatic/-Bdynamic option
2847 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2848 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2849 gcc_cv_ld_static_dynamic=yes
2850 fi
2851fi
2852if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2853 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2854[Define if your linker supports -Bstatic/-Bdynamic option.])
2855fi
2856AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2857
9c948bc2 2858if test x"$demangler_in_ld" = xyes; then
2859 AC_MSG_CHECKING(linker --demangle support)
2860 gcc_cv_ld_demangle=no
2861 if test $in_tree_ld = yes; then
2862 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 \
2863 gcc_cv_ld_demangle=yes
2864 fi
2865 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2866 # Check if the GNU linker supports --demangle option
2867 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2868 gcc_cv_ld_demangle=yes
2869 fi
2870 fi
2871 if test x"$gcc_cv_ld_demangle" = xyes; then
2872 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2873[Define if your linker supports --demangle option.])
2874 fi
2875 AC_MSG_RESULT($gcc_cv_ld_demangle)
2876fi
2877
0d6378a9 2878case "$target" in
8626dbb9 2879 # All TARGET_ABI_OSF targets.
2880 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
6d6c1801 2881 gcc_GAS_CHECK_FEATURE([explicit relocation support],
2882 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2883[ .set nomacro
8626dbb9 2884 .text
2885 extbl $3, $2, $3 !lituse_bytoff!1
2886 ldq $2, a($29) !literal!1
2887 ldq $4, b($29) !literal!2
2888 ldq_u $3, 0($2) !lituse_base!1
2889 ldq $27, f($29) !literal!5
2890 jsr $26, ($27), f !lituse_jsr!5
2891 ldah $29, 0($26) !gpdisp!3
2892 lda $0, c($29) !gprel
2893 ldah $1, d($29) !gprelhigh
2894 lda $1, d($1) !gprellow
6d6c1801 2895 lda $29, 0($29) !gpdisp!3],,
2896 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2897 [Define if your assembler supports explicit relocations.])])
592222c2 2898 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2899 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2900[ .set nomacro
2901 .text
2902 ldq $27, a($29) !literal!1
2903 jsr $26, ($27), a !lituse_jsrdirect!1],,
2904 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2905 [Define if your assembler supports the lituse_jsrdirect relocation.])])
8626dbb9 2906 ;;
4c335027 2907
ce4d6134 2908 cris-*-*)
2909 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2910 gcc_cv_as_cris_no_mul_bug,[2,15,91],
2911 [-no-mul-bug-abort], [.text],,
2912 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2913 [Define if your assembler supports the -no-mul-bug-abort option.])])
2914 ;;
2915
6d6c1801 2916 sparc*-*-*)
2917 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2918 [.register %g2, #scratch],,
2919 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2920 [Define if your assembler supports .register.])])
2921
2922 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2923 [-relax], [.text],,
2924 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2925 [Define if your assembler supports -relax option.])])
2926
2927 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2928 gcc_cv_as_sparc_ua_pcrel,,
2929 [-K PIC],
2930[.text
2931foo:
2932 nop
2933.data
2934.align 4
2935.byte 0
2936.uaword %r_disp32(foo)],
2937 [if test x$gcc_cv_ld != x \
2938 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2939 gcc_cv_as_sparc_ua_pcrel=yes
2940 fi
2941 rm -f conftest],
2942 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
66e333b1 2943 [Define if your assembler and linker support unaligned PC relative relocs.])
e715c863 2944
6d6c1801 2945 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2946 gcc_cv_as_sparc_ua_pcrel_hidden,,
2947 [-K PIC],
2948[.data
2949.align 4
2950.byte 0x31
2951.uaword %r_disp32(foo)
2952.byte 0x32, 0x33, 0x34
2953.global foo
2954.hidden foo
2955foo:
2956.skip 4],
2957 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2958 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2959 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2960 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2961 if $gcc_cv_objdump -R conftest 2> /dev/null \
2962 | grep 'DISP32' > /dev/null 2>&1; then
2963 :
5a49bf3e 2964 else
6d6c1801 2965 gcc_cv_as_sparc_ua_pcrel_hidden=yes
0569c094 2966 fi
6d6c1801 2967 fi
2968 rm -f conftest],
2969 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2970 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2971 ]) # unaligned pcrel relocs
2972
2973 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2974 gcc_cv_as_sparc_offsetable_lo10,,
2975 [-xarch=v9],
2976[.text
2977 or %g1, %lo(ab) + 12, %g1
2978 or %g1, %lo(ab + 12), %g1],
2979 [if test x$gcc_cv_objdump != x \
7908b1a1 2980 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
6d6c1801 2981 | grep ' 82106000 82106000' > /dev/null 2>&1; then
19f7ae9a 2982 gcc_cv_as_sparc_offsetable_lo10=yes
6d6c1801 2983 fi],
2984 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2985 [Define if your assembler supports offsetable %lo().])])
d300bd48 2986 ;;
2987
2988changequote(,)dnl
96b9fbc1 2989 i[34567]86-*-* | x86_64-*-*)
d300bd48 2990changequote([,])dnl
1f10d387 2991 case $target_os in
2992 cygwin* | pe | mingw32*)
7b897de3 2993 # Recent binutils allows the three-operand form of ".comm" on PE. This
2994 # definition is used unconditionally to initialise the default state of
2995 # the target option variable that governs usage of the feature.
2996 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
2997 [2,19,52],,[.comm foo,1,32])
2998 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
2999 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3000 [Define if your assembler supports specifying the alignment
3001 of objects allocated using the GAS .comm command.])
1f10d387 3002 # Used for DWARF 2 in PE
3003 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3004 gcc_cv_as_ix86_pe_secrel32,
3005 [2,15,91],,
3006[.text
3007foo: nop
3008.data
3009 .secrel32 foo],
3010 [if test x$gcc_cv_ld != x \
3011 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3012 gcc_cv_as_ix86_pe_secrel32=yes
3013 fi
3014 rm -f conftest],
3015 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3016 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3017 ;;
3018 esac
3019
6d6c1801 3020 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
6cc62ffa 3021 gcc_cv_as_ix86_filds,,,
3022 [filds mem; fists mem],,
3023 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3024 [Define if your assembler uses filds and fists mnemonics.])])
3025
3026 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3027 gcc_cv_as_ix86_fildq,,,
3028 [fildq mem; fistpq mem],,
3029 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3030 [Define if your assembler uses fildq and fistq mnemonics.])])
6d6c1801 3031
65cce9df 3032 gcc_GAS_CHECK_FEATURE([cmov syntax],
3033 gcc_cv_as_ix86_cmov_sun_syntax,,,
3034 [cmovl.l %edx, %eax],,
3035 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3036 [Define if your assembler supports the Sun syntax for cmov.])])
3037
97f2677a 3038 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3039 gcc_cv_as_ix86_ffreep,,,
3040 [ffreep %st(1)],,
3041 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3042 [Define if your assembler supports the ffreep mnemonic.])])
3043
735630ef 3044 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3045 gcc_cv_as_ix86_sahf,,,
3046 [sahf],,
3047 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3048 [Define if your assembler supports the sahf mnemonic.])])
3049
95792072 3050 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3051 gcc_cv_as_ix86_diff_sect_delta,,,
3052 [.section .rodata
3053.L1:
3054 .long .L2-.L1
3055 .long .L3-.L1
3056 .text
3057.L3: nop
3058.L2: nop],,
3059 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3060 [Define if your assembler supports the subtraction of symbols in different sections.])])
3061
f079b855 3062 # This one is used unconditionally by i386.[ch]; it is to be defined
3063 # to 1 if the feature is present, 0 otherwise.
6d6c1801 3064 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3065 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3066[ .text
bb006a84 3067.L0:
3068 nop
3069 .data
f079b855 3070 .long .L0@GOTOFF])
3071 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3072 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3073 [Define true if the assembler supports '.long foo@GOTOFF'.])
d300bd48 3074 ;;
0cc4b4a2 3075
3076 ia64*-*-*)
6d6c1801 3077 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3078 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
13f3d840 3079[ .text
0cc4b4a2 3080 addl r15 = @ltoffx(x#), gp
3081 ;;
13f3d840 3082 ld8.mov r16 = [[r15]], x#],,
6d6c1801 3083 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3084 [Define if your assembler supports ltoffx and ldxmov relocations.])])
3085
0cc4b4a2 3086 ;;
6d6c1801 3087
24880e5b 3088 powerpc*-*-*)
6d6c1801 3089 case $target in
a8bb341c 3090 *-*-aix*) conftest_s=' .machine "pwr5"
3091 .csect .text[[PR]]
3ba829c3 3092 mfcr 3,128';;
cd0c3d24 3093 *-*-darwin*)
3094 gcc_GAS_CHECK_FEATURE([.machine directive support],
3095 gcc_cv_as_machine_directive,,,
3096 [ .machine ppc7400])
3097 if test x$gcc_cv_as_machine_directive != xyes; then
3098 echo "*** This target requires an assembler supporting \".machine\"" >&2
3099 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3100 test x$build = x$target && exit 1
3101 fi
3102 conftest_s=' .text
3ba829c3 3103 mfcr r3,128';;
ce1a729a 3104 *) conftest_s=' .machine power4
4adb2d8e 3105 .text
3ba829c3 3106 mfcr 3,128';;
6d6c1801 3107 esac
6d6c1801 3108
3109 gcc_GAS_CHECK_FEATURE([mfcr field support],
3110 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3111 [$conftest_s],,
3112 [AC_DEFINE(HAVE_AS_MFCRF, 1,
3113 [Define if your assembler supports mfcr field.])])
a8bb341c 3114
3115 case $target in
3116 *-*-aix*) conftest_s=' .machine "pwr5"
3117 .csect .text[[PR]]
3118 popcntb 3,3';;
3119 *) conftest_s=' .machine power5
3120 .text
3121 popcntb 3,3';;
3122 esac
3123
3124 gcc_GAS_CHECK_FEATURE([popcntb support],
3125 gcc_cv_as_powerpc_popcntb, [2,17,0],,
3126 [$conftest_s],,
3127 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3128 [Define if your assembler supports popcntb field.])])
3129
a6018579 3130 case $target in
3131 *-*-aix*) conftest_s=' .machine "pwr5x"
3132 .csect .text[[PR]]
3133 frin 1,1';;
015fab10 3134 *) conftest_s=' .machine power5
a6018579 3135 .text
3136 frin 1,1';;
3137 esac
3138
3139 gcc_GAS_CHECK_FEATURE([fp round support],
3140 gcc_cv_as_powerpc_fprnd, [2,17,0],,
3141 [$conftest_s],,
3142 [AC_DEFINE(HAVE_AS_FPRND, 1,
3143 [Define if your assembler supports fprnd.])])
3144
c15fcd1f 3145 case $target in
3146 *-*-aix*) conftest_s=' .machine "pwr6"
3147 .csect .text[[PR]]
3148 mffgpr 1,3';;
3149 *) conftest_s=' .machine power6
3150 .text
3151 mffgpr 1,3';;
3152 esac
3153
3154 gcc_GAS_CHECK_FEATURE([move fp gpr support],
9c878e1b 3155 gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
c15fcd1f 3156 [$conftest_s],,
3157 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3158 [Define if your assembler supports mffgpr and mftgpr.])])
3159
197f58fa 3160 case $target in
3161 *-*-aix*) conftest_s=' .csect .text[[PR]]
3162LCF..0:
3163 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3164 *-*-darwin*)
3165 conftest_s=' .text
3166LCF0:
3167 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3168 *) conftest_s=' .text
3169.LCF0:
3170 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3171 esac
3172
34fe62ca 3173 gcc_GAS_CHECK_FEATURE([rel16 relocs],
3174 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3175 [$conftest_s],,
3176 [AC_DEFINE(HAVE_AS_REL16, 1,
3177 [Define if your assembler supports R_PPC_REL16 relocs.])])
3178
3230b740 3179 case $target in
3180 *-*-aix*) conftest_s=' .machine "pwr6"
3181 .csect .text[[PR]]
3182 cmpb 3,4,5';;
3183 *) conftest_s=' .machine power6
3184 .text
3185 cmpb 3,4,5';;
3186 esac
3187
3188 gcc_GAS_CHECK_FEATURE([compare bytes support],
9c878e1b 3189 gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3230b740 3190 [$conftest_s],,
3191 [AC_DEFINE(HAVE_AS_CMPB, 1,
3192 [Define if your assembler supports cmpb.])])
3193
3194 case $target in
3195 *-*-aix*) conftest_s=' .machine "pwr6"
3196 .csect .text[[PR]]
88f38265 3197 dadd 1,2,3';;
3230b740 3198 *) conftest_s=' .machine power6
3199 .text
88f38265 3200 dadd 1,2,3';;
3230b740 3201 esac
3202
3203 gcc_GAS_CHECK_FEATURE([decimal float support],
9c878e1b 3204 gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
3230b740 3205 [$conftest_s],,
3206 [AC_DEFINE(HAVE_AS_DFP, 1,
3207 [Define if your assembler supports DFP instructions.])])
6c7d78e4 3208
94f7a54b 3209 case $target in
3210 *-*-aix*) conftest_s=' .machine "pwr7"
3211 .csect .text[[PR]]
3212 lxvd2x 1,2,3';;
3213 *) conftest_s=' .machine power7
3214 .text
3215 lxvd2x 1,2,3';;
3216 esac
3217
3218 gcc_GAS_CHECK_FEATURE([vector-scalar support],
9c878e1b 3219 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
94f7a54b 3220 [$conftest_s],,
3221 [AC_DEFINE(HAVE_AS_VSX, 1,
3222 [Define if your assembler supports VSX instructions.])])
3223
9c878e1b 3224 case $target in
3225 *-*-aix*) conftest_s=' .machine "pwr7"
3226 .csect .text[[PR]]
3227 popcntd 3,3';;
3228 *) conftest_s=' .machine power7
3229 .text
3230 popcntd 3,3';;
3231 esac
3232
3233 gcc_GAS_CHECK_FEATURE([popcntd support],
3234 gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3235 [$conftest_s],,
3236 [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3237 [Define if your assembler supports POPCNTD instructions.])])
3238
3239 case $target in
3240 *-*-aix*) conftest_s=' .csect .text[[PR]]
3241 lwsync';;
3242 *) conftest_s=' .text
3243 lwsync';;
3244 esac
3245
3246 gcc_GAS_CHECK_FEATURE([lwsync support],
3247 gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3248 [$conftest_s],,
3249 [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3250 [Define if your assembler supports LWSYNC instructions.])])
3251
6c7d78e4 3252 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3253 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3254 [.gnu_attribute 4,1],,
3255 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3256 [Define if your assembler supports .gnu_attribute.])])
d46ea878 3257
3258 gcc_GAS_CHECK_FEATURE([tls marker support],
3259 gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3260 [ bl __tls_get_addr(x@tlsgd)],,
3261 [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3262 [Define if your assembler supports arg info for __tls_get_addr.])])
24880e5b 3263 ;;
d6723bcd 3264
6d6c1801 3265 mips*-*-*)
3266 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3267 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3268[ lw $4,%gp_rel(foo)($4)],,
3269 [if test x$target_cpu_default = x
3270 then target_cpu_default=MASK_EXPLICIT_RELOCS
3271 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3272 fi])
f863d3e3 3273 gcc_GAS_CHECK_FEATURE([-mno-shared support],
3274 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3275 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3276 [Define if the assembler understands -mno-shared.])])
0fd6d684 3277
3278 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3279 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3280 [.gnu_attribute 4,1],,
3281 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3282 [Define if your assembler supports .gnu_attribute.])])
c9eabb6d 3283
3284 gcc_GAS_CHECK_FEATURE([.dtprelword support],
3285 gcc_cv_as_mips_dtprelword, [2,18,0],,
3286 [.section .tdata,"awT",@progbits
3287x:
3288 .word 2
3289 .text
3290 .dtprelword x+0x8000],,
3291 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3292 [Define if your assembler supports .dtprelword.])])
ca30e0b9 3293
3294 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3295 gcc_cv_as_ld_jalr_reloc=no
3296 if test $gcc_cv_as_mips_explicit_relocs = yes; then
3297 if test $in_tree_ld = yes ; then
3298 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
3299 && test $in_tree_ld_is_elf = yes; then
3300 gcc_cv_as_ld_jalr_reloc=yes
3301 fi
3302 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3303 echo ' .ent x' > conftest.s
3304 echo 'x: ld $2,%got_disp(y)($3)' >> conftest.s
3305 echo ' ld $25,%call16(y)($28)' >> conftest.s
3306 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
3307 echo '1: jalr $25' >> conftest.s
3308 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
3309 echo '1: jalr $25' >> conftest.s
3310 echo ' .end x' >> conftest.s
3311 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
3312 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
3313 if $gcc_cv_objdump -d conftest.so | grep -q jalr \
3314 && $gcc_cv_objdump -d conftest.so | grep -q "bal.*<x>"; then
3315 gcc_cv_as_ld_jalr_reloc=yes
3316 fi
3317 fi
3318 rm -f conftest.*
3319 fi
3320 fi
3321 if test $gcc_cv_as_ld_jalr_reloc = yes; then
3322 if test x$target_cpu_default = x; then
3323 target_cpu_default=MASK_RELAX_PIC_CALLS
3324 else
3325 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
3326 fi
3327 fi
3328 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
c4cf26ad 3329
3330 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
3331 [gcc_cv_ld_mips_personality_relaxation],
3332 [gcc_cv_ld_mips_personality_relaxation=no
3333 if test $in_tree_ld = yes ; then
3334 if test "$gcc_cv_gld_major_version" -eq 2 \
3335 -a "$gcc_cv_gld_minor_version" -ge 21 \
3336 -o "$gcc_cv_gld_major_version" -gt 2; then
3337 gcc_cv_ld_mips_personality_relaxation=yes
3338 fi
3339 elif test x$gcc_cv_as != x \
3340 -a x$gcc_cv_ld != x \
3341 -a x$gcc_cv_readelf != x ; then
3342 cat > conftest.s <<EOF
3343 .cfi_startproc
3344 .cfi_personality 0x80,indirect_ptr
3345 .ent test
3346test:
3347 nop
3348 .end test
3349 .cfi_endproc
3350
3351 .section .data,"aw",@progbits
3352indirect_ptr:
3353 .dc.a personality
3354EOF
3355 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
3356 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
3357 if $gcc_cv_readelf -d conftest 2>&1 \
3358 | grep TEXTREL > /dev/null 2>&1; then
3359 :
3360 elif $gcc_cv_readelf --relocs conftest 2>&1 \
3361 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
3362 :
3363 else
3364 gcc_cv_ld_mips_personality_relaxation=yes
3365 fi
3366 fi
3367 fi
3368 rm -f conftest.s conftest.o conftest])
3369 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
3370 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
3371 [Define if your linker can relax absolute .eh_frame personality
3372pointers into PC-relative form.])
3373 fi
c8aeaa6d 3374 ;;
3375esac
3376
3377# Mips and HP-UX need the GNU assembler.
3378# Linux on IA64 might be able to use the Intel assembler.
6d6c1801 3379
c8aeaa6d 3380case "$target" in
3381 mips*-*-* | *-*-hpux* )
6e930e6c 3382 if test x$gas_flag = xyes \
3383 || test x"$host" != x"$build" \
3384 || test ! -x "$gcc_cv_as" \
3385 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
3386 :
3387 else
3388 echo "*** This configuration requires the GNU assembler" >&2
3389 exit 1
3390 fi
6d6c1801 3391 ;;
3392esac
c8aeaa6d 3393
142cf471 3394# ??? Not all targets support dwarf2 debug_line, even within a version
3395# of gas. Moreover, we need to emit a valid instruction to trigger any
3396# info to the output file. So, as supported targets are added to gas 2.11,
3397# add some instruction here to (also) show we expect this might work.
3398# ??? Once 2.11 is released, probably need to add first known working
3399# version to the per-target configury.
3400case "$target" in
549c28fd 3401 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
6af9f7ea 3402 | x86_64*-*-* | hppa*-*-* | arm*-*-* \
10178ded 3403 | xstormy16*-*-* | cris-*-* | crisv32-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \
ae74c491 3404 | spu-*-* | fido*-*-* | m32c-*-*)
142cf471 3405 insn="nop"
3406 ;;
15dff672 3407 ia64*-*-* | s390*-*-*)
142cf471 3408 insn="nop 0"
3409 ;;
482662fd 3410 mmix-*-*)
3411 insn="swym 0"
3412 ;;
6d6c1801 3413esac
3414if test x"$insn" != x; then
3415 conftest_s="\
3416 .file 1 \"conftest.s\"
3417 .loc 1 3 0
3418 $insn"
3419 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3420 gcc_cv_as_dwarf2_debug_line,
3421 [elf,2,11,0],, [$conftest_s],
1b33a244 3422 [if test x$gcc_cv_objdump != x \
3423 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3424 | grep debug_line > /dev/null 2>&1; then
6d6c1801 3425 gcc_cv_as_dwarf2_debug_line=yes
3426 fi])
3427
3428# The .debug_line file table must be in the exact order that
3429# we specified the files, since these indices are also used
3430# by DW_AT_decl_file. Approximate this test by testing if
3431# the assembler bitches if the same index is assigned twice.
3432 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3433 gcc_cv_as_dwarf2_file_buggy,,,
3434[ .file 1 "foo.s"
3435 .file 1 "bar.s"])
3436
3437 if test $gcc_cv_as_dwarf2_debug_line = yes \
3438 && test $gcc_cv_as_dwarf2_file_buggy = no; then
142cf471 3439 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
6d6c1801 3440 [Define if your assembler supports dwarf2 .file/.loc directives,
4a82352a 3441 and preserves file table indices exactly as given.])
6d6c1801 3442 fi
3443
3444 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3445 gcc_cv_as_gdwarf2_flag,
3446 [elf,2,11,0], [--gdwarf2], [$insn],,
3447 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3448[Define if your assembler supports the --gdwarf2 option.])])
3449
3450 gcc_GAS_CHECK_FEATURE([--gstabs option],
3451 gcc_cv_as_gstabs_flag,
3452 [elf,2,11,0], [--gstabs], [$insn],
3453 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3454 # and warns about it, but still exits successfully. So check for
3455 # this.
3456 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3457 then :
3458 else gcc_cv_as_gstabs_flag=yes
3459 fi],
3460 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3461[Define if your assembler supports the --gstabs option.])])
5f1f2de5 3462
3463 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
3464 gcc_cv_as_debug_prefix_map_flag,
22ff3bfb 3465 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
5f1f2de5 3466 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
3467[Define if your assembler supports the --debug-prefix-map option.])])
142cf471 3468fi
1a6f9700 3469
a65d7dd0 3470gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
3471 ,,
3472[.lcomm bar,4,16],,
3473[AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
3474 [Define if your assembler supports .lcomm with an alignment field.])])
3475
924907a3 3476AC_ARG_ENABLE(gnu-unique-object,
3477 [ --enable-gnu-unique-object enable the use of the @gnu_unique_object ELF extension on
3478 glibc systems],
3479 [case $enable_gnu_unique_object in
3480 yes | no) ;;
3481 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
3482Valid choices are 'yes' and 'no'.]) ;;
3483 esac],
3484 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
3485 [elf,2,19,52],,
5219ed35 3486 [.type foo, @gnu_unique_object],,
924907a3 3487# Also check for ld.so support, i.e. glibc 2.11 or higher.
3488 [if test x$host = x$build -a x$host = x$target &&
3489 glibcver=`ldd --version 2>/dev/null`; then
3490 glibcmajor=`expr "$glibcver" : "ldd (GNU libc) \([[0-9]]*\)"`
3491 glibcminor=`expr "$glibcver" : "ldd (GNU libc) [[0-9]]*\.\([[0-9]]*\)"`
3492 glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
3493 if test "$glibcnum" -ge 2011 ; then
5219ed35 3494 enable_gnu_unique_object=yes
924907a3 3495 fi
5219ed35 3496 fi])])
924907a3 3497if test x$enable_gnu_unique_object = xyes; then
3498 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
3499 [Define if your assembler supports @gnu_unique_object.])
3500fi
3501
a8971681 3502AC_CACHE_CHECK([assembler for tolerance to line number 0],
3503 [gcc_cv_as_line_zero],
3504 [gcc_cv_as_line_zero=no
3505 if test $in_tree_gas = yes; then
95cd4953 3506 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
a8971681 3507 elif test "x$gcc_cv_as" != x; then
3508 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3509 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3510 test "x`cat conftest.out`" = x
3511 then
3512 gcc_cv_as_line_zero=yes
3513 else
3514 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3515 cat conftest.s >&AS_MESSAGE_LOG_FD
3516 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3517 cat conftest.out >&AS_MESSAGE_LOG_FD
3518 fi
3519 rm -f conftest.o conftest.s conftest.out
3520 fi])
3521if test "x$gcc_cv_as_line_zero" = xyes; then
3522 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3523[Define if the assembler won't complain about a line such as # 0 "" 2.])
3524fi
3525
0d6378a9 3526AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3527gcc_cv_ld_eh_frame_hdr=no
7349ace9 3528if test $in_tree_ld = yes ; then
0dac358a 3529 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 \
3530 && test $in_tree_ld_is_elf = yes; then
0d6378a9 3531 gcc_cv_ld_eh_frame_hdr=yes
3532 fi
3533elif test x$gcc_cv_ld != x; then
3534 # Check if linker supports --eh-frame-hdr option
3535 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3536 gcc_cv_ld_eh_frame_hdr=yes
3537 fi
3538fi
fcd42b1e 3539GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
0d6378a9 3540if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3541 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3542[Define if your linker supports --eh-frame-hdr option.])
3543fi
3544AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3545
c3ce66b0 3546AC_MSG_CHECKING(linker position independent executable support)
3547gcc_cv_ld_pie=no
3548if test $in_tree_ld = yes ; then
0dac358a 3549 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 \
3550 && test $in_tree_ld_is_elf = yes; then
c3ce66b0 3551 gcc_cv_ld_pie=yes
3552 fi
3553elif test x$gcc_cv_ld != x; then
3554 # Check if linker supports -pie option
3555 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3556 gcc_cv_ld_pie=yes
3557 fi
3558fi
3559if test x"$gcc_cv_ld_pie" = xyes; then
3560 AC_DEFINE(HAVE_LD_PIE, 1,
3561[Define if your linker supports -pie option.])
3562fi
3563AC_MSG_RESULT($gcc_cv_ld_pie)
3564
0a011112 3565AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3566gcc_cv_ld_eh_gc_sections=no
3567if test $in_tree_ld = yes ; then
3568 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 \
3569 && test $in_tree_ld_is_elf = yes; then
3570 gcc_cv_ld_eh_gc_sections=yes
3571 fi
3572elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3573 cat > conftest.s <<EOF
3574 .section .text
3575.globl _start
3576 .type _start, @function
3577_start:
3578 .long foo
3579 .size _start, .-_start
3580 .section .text.foo,"ax",@progbits
3581 .type foo, @function
3582foo:
3583 .long 0
3584 .size foo, .-foo
3585 .section .gcc_except_table.foo,"a",@progbits
3586.L0:
3587 .long 0
3588 .section .eh_frame,"a",@progbits
3589 .long .L0
3590EOF
3591 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3592 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3593 | grep "gc-sections option ignored" > /dev/null; then
3594 gcc_cv_ld_eh_gc_sections=no
3595 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3596 gcc_cv_ld_eh_gc_sections=yes
c8aaf000 3597 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3598 if test x$gcc_cv_as_comdat_group != xyes; then
3599 gcc_cv_ld_eh_gc_sections=no
3600 cat > conftest.s <<EOF
3601 .section .text
3602.globl _start
3603 .type _start, @function
3604_start:
3605 .long foo
3606 .size _start, .-_start
3607 .section .gnu.linkonce.t.foo,"ax",@progbits
3608 .type foo, @function
3609foo:
3610 .long 0
3611 .size foo, .-foo
3612 .section .gcc_except_table.foo,"a",@progbits
3613.L0:
3614 .long 0
3615 .section .eh_frame,"a",@progbits
3616 .long .L0
3617EOF
3618 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3619 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3620 | grep "gc-sections option ignored" > /dev/null; then
3621 gcc_cv_ld_eh_gc_sections=no
3622 elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3623 gcc_cv_ld_eh_gc_sections=yes
3624 fi
3625 fi
3626 fi
0a011112 3627 fi
3628 fi
3629 rm -f conftest.s conftest.o conftest
3630fi
c8aaf000 3631case "$target" in
3632 hppa*-*-linux*)
3633 # ??? This apparently exposes a binutils bug with PC-relative relocations.
3634 gcc_cv_ld_eh_gc_sections=no
3635 ;;
3636esac
0a011112 3637if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3638 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3639 [Define if your linker supports garbage collection of
3640 sections in presence of EH frames.])
3641fi
3642AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3643
d8a2ca58 3644# --------
3645# UNSORTED
3646# --------
3647
11a4b5d2 3648AC_CACHE_CHECK(linker --as-needed support,
3649gcc_cv_ld_as_needed,
3650[gcc_cv_ld_as_needed=no
6a40149e 3651if test $in_tree_ld = yes ; then
3652 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 \
3653 && test $in_tree_ld_is_elf = yes; then
3654 gcc_cv_ld_as_needed=yes
3655 fi
3656elif test x$gcc_cv_ld != x; then
3657 # Check if linker supports --as-needed and --no-as-needed options
3658 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3659 gcc_cv_ld_as_needed=yes
3660 fi
3661fi
11a4b5d2 3662])
6a40149e 3663if test x"$gcc_cv_ld_as_needed" = xyes; then
3664 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3665[Define if your linker supports --as-needed and --no-as-needed options.])
3666fi
6a40149e 3667
4de3052c 3668case "$target:$tm_file" in
3669 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
66ebfa67 3670 AC_CACHE_CHECK(linker support for omitting dot symbols,
3671 gcc_cv_ld_no_dot_syms,
3672 [gcc_cv_ld_no_dot_syms=no
3673 if test $in_tree_ld = yes ; then
3674 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
3675 gcc_cv_ld_no_dot_syms=yes
3676 fi
3677 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3678 cat > conftest1.s <<EOF
3679 .text
3680 bl .foo
3681EOF
3682 cat > conftest2.s <<EOF
3683 .section ".opd","aw"
3684 .align 3
3685 .globl foo
3686 .type foo,@function
3687foo:
3688 .quad .LEfoo,.TOC.@tocbase,0
3689 .text
3690.LEfoo:
3691 blr
3692 .size foo,.-.LEfoo
3693EOF
3694 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3695 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3696 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3697 gcc_cv_ld_no_dot_syms=yes
3698 fi
3699 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3700 fi
3701 ])
3702 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3703 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3704 [Define if your PowerPC64 linker only needs function descriptor syms.])
3705 fi
3706 ;;
3707esac
3708
8271b966 3709AC_CACHE_CHECK(linker --build-id support,
3710 gcc_cv_ld_buildid,
3711 [gcc_cv_ld_buildid=no
3712 if test $in_tree_ld = yes ; then
3713 if test "$gcc_cv_gld_major_version" -eq 2 -a \
3714 "$gcc_cv_gld_minor_version" -ge 18 -o \
3715 "$gcc_cv_gld_major_version" -gt 2 \
3716 && test $in_tree_ld_is_elf = yes; then
3717 gcc_cv_ld_buildid=yes
3718 fi
3719 elif test x$gcc_cv_ld != x; then
3720 if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
3721 gcc_cv_ld_buildid=yes
3722 fi
3723 fi])
3724if test x"$gcc_cv_ld_buildid" = xyes; then
3725 AC_DEFINE(HAVE_LD_BUILDID, 1,
3726 [Define if your linker supports --build-id.])
3727fi
3728
3729AC_ARG_ENABLE(linker-build-id,
3730[ --enable-linker-build-id
3731 compiler will always pass --build-id to linker],
3732[],
3733enable_linker_build_id=no)
3734
3735if test x"$enable_linker_build_id" = xyes; then
3736 if test x"$gcc_cv_ld_buildid" = xyes; then
3737 AC_DEFINE(ENABLE_LD_BUILDID, 1,
3738 [Define if gcc should always pass --build-id to linker.])
3739 else
3740 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
3741 fi
3742fi
3743
b6bcc48f 3744AC_CACHE_CHECK(linker --sysroot support,
3745 gcc_cv_ld_sysroot,
3746 [gcc_cv_ld_sysroot=no
3747 if test $in_tree_ld = yes ; then
3748 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
93b26f8a 3749 gcc_cv_ld_sysroot=yes
b6bcc48f 3750 fi
3751 elif test x$gcc_cv_ld != x; then
3752 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3753 gcc_cv_ld_sysroot=yes
3754 fi
3755 fi])
3756if test x"$gcc_cv_ld_sysroot" = xyes; then
3757 AC_DEFINE(HAVE_LD_SYSROOT, 1,
3758 [Define if your linker supports --sysroot.])
3759fi
3760
7b6408ee 3761if test x$with_sysroot = x && test x$host = x$target \
41c555b5 3762 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3763 && test "$prefix" != "NONE"; then
6d6c1801 3764 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3765[Define to PREFIX/include if cpp should also search that directory.])
759d75c3 3766fi
3767
0d55f4d0 3768# Test for stack protector support in target C library.
66740228 3769AC_CACHE_CHECK(__stack_chk_fail in target C library,
0d55f4d0 3770 gcc_cv_libc_provides_ssp,
3771 [gcc_cv_libc_provides_ssp=no
66740228 3772 case "$target" in
03c8b9d4 3773 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
0d55f4d0 3774 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3775 if test "x$with_sysroot" = x; then
3776 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
e9cef88c 3777 elif test "x$with_build_sysroot" != "x"; then
3778 glibc_header_dir="${with_build_sysroot}/usr/include"
0d55f4d0 3779 elif test "x$with_sysroot" = xyes; then
3780 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3781 else
3782 glibc_header_dir="${with_sysroot}/usr/include"
3783 fi
3784 else
3785 glibc_header_dir=/usr/include
3786 fi
3787 # glibc 2.4 and later provides __stack_chk_fail and
3788 # either __stack_chk_guard, or TLS access to stack guard canary.
3789 if test -f $glibc_header_dir/features.h \
3790 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
3791 $glibc_header_dir/features.h > /dev/null; then
3792 if $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
3793 $glibc_header_dir/features.h > /dev/null; then
3794 gcc_cv_libc_provides_ssp=yes
3795 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+2' \
3796 $glibc_header_dir/features.h > /dev/null \
3797 && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
3798 $glibc_header_dir/features.h > /dev/null; then
3799 gcc_cv_libc_provides_ssp=yes
e214b635 3800 elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
3801 $glibc_header_dir/features.h > /dev/null && \
3802 test -f $glibc_header_dir/bits/uClibc_config.h && \
3803 $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
3804 $glibc_header_dir/bits/uClibc_config.h > /dev/null; then
3805 gcc_cv_libc_provides_ssp=yes
0d55f4d0 3806 fi
e214b635 3807 fi
66740228 3808 ;;
75bfea25 3809 *-*-gnu*)
3810 # Avoid complicated tests (see
3811 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
3812 # simply assert that glibc does provide this, which is true for all
3813 # realistically usable GNU/Hurd configurations.
3814 gcc_cv_libc_provides_ssp=yes;;
a85687e8 3815 *-*-darwin* | *-*-freebsd*)
66740228 3816 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3817 [echo "no __stack_chk_fail on this target"])
3818 ;;
0d55f4d0 3819 *) gcc_cv_libc_provides_ssp=no ;;
66740228 3820 esac])
3821
0d55f4d0 3822if test x$gcc_cv_libc_provides_ssp = xyes; then
3823 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3824 [Define if your target C library provides stack protector support])
3825fi
3826
2dde0cc6 3827# Check if TFmode long double should be used by default or not.
3828# Some glibc targets used DFmode long double, but with glibc 2.4
3829# and later they can use TFmode.
3830case "$target" in
8c3bf67d 3831 powerpc*-*-linux* | \
3832 powerpc*-*-gnu* | \
2dde0cc6 3833 sparc*-*-linux* | \
3834 s390*-*-linux* | \
3835 alpha*-*-linux*)
3836 AC_ARG_WITH(long-double-128,
3837[ --with-long-double-128 Use 128-bit long double by default.],
3838 gcc_cv_target_ldbl128="$with_long_double_128",
3839 [gcc_cv_target_ldbl128=no
3840 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3841 if test "x$with_sysroot" = x; then
3842 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
e9cef88c 3843 elif test "x$with_build_sysroot" != "x"; then
3844 glibc_header_dir="${with_build_sysroot}/usr/include"
2dde0cc6 3845 elif test "x$with_sysroot" = xyes; then
3846 glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3847 else
3848 glibc_header_dir="${with_sysroot}/usr/include"
3849 fi
3850 else
3851 glibc_header_dir=/usr/include
3852 fi
dfce740a 3853changequote(,)dnl
2dde0cc6 3854 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3855 $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
dfce740a 3856 && gcc_cv_target_ldbl128=yes
3857changequote([,])dnl
3858 ])
2dde0cc6 3859 ;;
3860esac
3861if test x$gcc_cv_target_ldbl128 = xyes; then
3862 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3863 [Define if TFmode long double should be the default])
3864fi
3865
772580ce 3866# Find out what GC implementation we want, or may, use.
3867AC_ARG_WITH(gc,
180e93cf 3868[ --with-gc={page,zone} choose the garbage collection mechanism to use
77eb56d4 3869 with the compiler],
772580ce 3870[case "$withval" in
1bb42c87 3871 page)
772580ce 3872 GGC=ggc-$withval
3873 ;;
1bb42c87 3874 zone)
3875 GGC=ggc-$withval
3876 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3877 ;;
772580ce 3878 *)
3879 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3880 ;;
3881esac],
80eb2355 3882[GGC=ggc-page])
772580ce 3883AC_SUBST(GGC)
3884echo "Using $GGC for garbage collection."
3885
7ab76cec 3886# Libraries to use on the host. This will normally be set by the top
3887# level Makefile. Here we simply capture the value for our Makefile.
3888if test -z "${HOST_LIBS+set}"; then
3889 HOST_LIBS=
3890fi
3891AC_SUBST(HOST_LIBS)
3892
add841d2 3893# Use the system's zlib library.
f357ac87 3894zlibdir=-L../zlib
3895zlibinc="-I\$(srcdir)/../zlib"
add841d2 3896AC_ARG_WITH(system-zlib,
3897[ --with-system-zlib use installed libz],
3898zlibdir=
3899zlibinc=
3900)
3901AC_SUBST(zlibdir)
3902AC_SUBST(zlibinc)
3903
c5ab9ed2 3904dnl Very limited version of automake's enable-maintainer-mode
3905
3906AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3907 dnl maintainer-mode is disabled by default
3908 AC_ARG_ENABLE(maintainer-mode,
77eb56d4 3909[ --enable-maintainer-mode
3910 enable make rules and dependencies not useful
c5ab9ed2 3911 (and sometimes confusing) to the casual installer],
3912 maintainer_mode=$enableval,
3913 maintainer_mode=no)
3914
3915AC_MSG_RESULT($maintainer_mode)
3916
3917if test "$maintainer_mode" = "yes"; then
3918 MAINT=''
3919else
3920 MAINT='#'
3921fi
3922AC_SUBST(MAINT)dnl
3923
d8a2ca58 3924# --------------
3925# Language hooks
3926# --------------
3927
a4ac0141 3928# Make empty files to contain the specs and options for each language.
3929# Then add #include lines to for a compiler that has specs and/or options.
3930
26526d23 3931subdirs=
3272db82 3932lang_opt_files=
a4ac0141 3933lang_specs_files=
c3cc26e1 3934lang_tree_files=
a4ac0141 3935# These (without "all_") are set in each config-lang.in.
3936# `language' must be a single word so is spelled singularly.
3937all_languages=
a4ac0141 3938all_compilers=
9a8d280d 3939all_outputs='Makefile gccbug'
a4ac0141 3940# List of language makefile fragments.
a455468e 3941all_lang_makefrags=
3942# List of language subdirectory makefiles. Deprecated.
a4ac0141 3943all_lang_makefiles=
570af75a 3944# Additional files for gengtype
eb1bd38b 3945all_gtfiles="$target_gtfiles"
a4ac0141 3946
26526d23 3947# These are the languages that are set in --enable-languages,
3948# and are available in the GCC tree.
3949all_selected_languages=
3950
a4ac0141 3951# Add the language fragments.
3952# Languages are added via two mechanisms. Some information must be
3953# recorded in makefile variables, these are defined in config-lang.in.
3954# We accumulate them and plug them into the main Makefile.
3955# The other mechanism is a set of hooks for each of the main targets
3956# like `clean', `install', etc.
3957
a4ac0141 3958language_hooks="Make-hooks"
3959
26526d23 3960for lang in ${srcdir}/*/config-lang.in
a4ac0141 3961do
26526d23 3962changequote(,)dnl
5dee13c2 3963 test "$lang" = "${srcdir}/*/config-lang.in" && continue
3964
26526d23 3965 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
3966 if test "x$lang_alias" = x
3967 then
3968 echo "$lang doesn't set \$language." 1>&2
3969 exit 1
3970 fi
3971 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3972 subdirs="$subdirs $subdir"
de4e1ab6 3973
3974 # $gcc_subdir is where the gcc integration files are to be found
3975 # for a language, both for internal compiler purposes (compiler
3976 # sources implementing front-end to GCC tree converters), and for
3977 # build infrastructure purposes (Make-lang.in, etc.)
3978 #
3979 # This will be <subdir> (relative to $srcdir) if a line like
3980 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
3981 # is found in <langdir>/config-lang.in, and will remain <langdir>
3982 # otherwise.
3983 #
3984 # Except for the language alias (fetched above), the regular
3985 # "config-lang.in" contents are always retrieved from $gcc_subdir,
3986 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
3987 # only this and the language alias.
3988
3989 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
3990 if [ "$gcc_subdir" = "" ]; then
3991 gcc_subdir="$subdir"
3992 fi
3993
26526d23 3994 case ",$enable_languages," in
3995 *,$lang_alias,*)
3996 all_selected_languages="$all_selected_languages $lang_alias"
de4e1ab6 3997 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
3998 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
26526d23 3999 fi
4000 ;;
4001 esac
4002changequote([,])dnl
4003
26526d23 4004 language=
4005 boot_language=
4006 compilers=
26526d23 4007 outputs=
4008 gtfiles=
5dee13c2 4009 subdir_requires=
de4e1ab6 4010 . ${srcdir}/$gcc_subdir/config-lang.in
26526d23 4011 if test "x$language" = x
4012 then
de4e1ab6 4013 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
26526d23 4014 exit 1
4015 fi
5dee13c2 4016
4017 ok=:
4018 case ",$enable_languages," in
4019 *,$lang_alias,*) ;;
4020 *)
4021 for i in $subdir_requires; do
3891e7d9 4022 test -f "${srcdir}/$i/config-lang.in" && continue
5dee13c2 4023 ok=false
4024 break
4025 done
4026 ;;
4027 esac
4028 $ok || continue
4029
de4e1ab6 4030 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4031 if test -f $srcdir/$gcc_subdir/lang.opt; then
4032 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5dee13c2 4033 fi
de4e1ab6 4034 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4035 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5dee13c2 4036 fi
de4e1ab6 4037 if test -f ${srcdir}/$gcc_subdir/Makefile.in
4038 then all_lang_makefiles="$gcc_subdir/Makefile"
26526d23 4039 fi
4040 all_languages="$all_languages $language"
26526d23 4041 all_compilers="$all_compilers $compilers"
26526d23 4042 all_outputs="$all_outputs $outputs"
570af75a 4043 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
7bfefa9d 4044 case ",$enable_languages," in
4045 *,lto,*)
4046 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4047 enable_lto=yes
4048 AC_SUBST(enable_lto)
4049 ;;
4050 *) ;;
4051 esac
a4ac0141 4052done
4053
776c30b8 4054# Pick up gtfiles for c
4055gtfiles=
776c30b8 4056. ${srcdir}/c-config-lang.in
570af75a 4057all_gtfiles="$all_gtfiles [[c]] $gtfiles"
776c30b8 4058
21fa82cb 4059check_languages=
26526d23 4060for language in $all_selected_languages
21fa82cb 4061do
26526d23 4062 check_languages="$check_languages check-$language"
21fa82cb 4063done
4064
d5cd09c5 4065# We link each language in with a set of hooks, reached indirectly via
26526d23 4066# lang.${target}. Only do so for selected languages.
a4ac0141 4067
4068rm -f Make-hooks
4069touch Make-hooks
ae6555f9 4070target_list="all.cross start.encap rest.encap tags \
ba5147c6 4071 install-common install-man install-info install-pdf dvi pdf \
4072 html uninstall info man srcextra srcman srcinfo \
c02b6f4e 4073 mostlyclean clean distclean maintainer-clean install-plugin"
26526d23 4074
a4ac0141 4075for t in $target_list
4076do
4077 x=
26526d23 4078 for lang in $all_selected_languages
a4ac0141 4079 do
26526d23 4080 x="$x $lang.$t"
a4ac0141 4081 done
4082 echo "lang.$t: $x" >> Make-hooks
4083done
4084
d8a2ca58 4085# --------
4086# UNSORTED
4087# --------
4088
49d87238 4089# Create .gdbinit.
80a1cc00 4090
49d87238 4091echo "dir ." > .gdbinit
4092echo "dir ${srcdir}" >> .gdbinit
4093if test x$gdb_needs_out_file_path = xyes
4094then
4095 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4096fi
4097if test "x$subdirs" != x; then
4098 for s in $subdirs
4099 do
4100 echo "dir ${srcdir}/$s" >> .gdbinit
4101 done
80a1cc00 4102fi
49d87238 4103echo "source ${srcdir}/gdbinit.in" >> .gdbinit
80a1cc00 4104
fc5f9e0c 4105gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
f22b529a 4106AC_SUBST(gcc_tooldir)
066520ea 4107AC_SUBST(dollar)
f22b529a 4108
074386b8 4109# Find a directory in which to install a shared libgcc.
4110
4111AC_ARG_ENABLE(version-specific-runtime-libs,
77eb56d4 4112[ --enable-version-specific-runtime-libs
4113 specify that runtime libraries should be
4114 installed in a compiler-specific directory])
074386b8 4115
4724fbab 4116AC_ARG_WITH(slibdir,
85690e4d 4117[ --with-slibdir=DIR shared libraries in DIR [[LIBDIR]]],
4724fbab 4118slibdir="$with_slibdir",
4119if test "${enable_version_specific_runtime_libs+set}" = set; then
074386b8 4120 slibdir='$(libsubdir)'
4724fbab 4121elif test "$host" != "$target"; then
074386b8 4122 slibdir='$(build_tooldir)/lib'
4123else
4724fbab 4124 slibdir='$(libdir)'
4125fi)
074386b8 4126AC_SUBST(slibdir)
4127
01dc27ef 4128# Substitute configuration variables
4129AC_SUBST(subdirs)
776c30b8 4130AC_SUBST(srcdir)
01dc27ef 4131AC_SUBST(all_compilers)
1f3233d1 4132AC_SUBST(all_gtfiles)
a455468e 4133AC_SUBST(all_lang_makefrags)
434bb88d 4134AC_SUBST(all_lang_makefiles)
4135AC_SUBST(all_languages)
26526d23 4136AC_SUBST(all_selected_languages)
434bb88d 4137AC_SUBST(build_exeext)
4138AC_SUBST(build_install_headers_dir)
4139AC_SUBST(build_xm_file_list)
4dcab8b7 4140AC_SUBST(build_xm_include_list)
83b8e55b 4141AC_SUBST(build_xm_defines)
fbf9447e 4142AC_SUBST(build_file_translate)
21fa82cb 4143AC_SUBST(check_languages)
434bb88d 4144AC_SUBST(cpp_install_dir)
a455468e 4145AC_SUBST(xmake_file)
4146AC_SUBST(tmake_file)
f555bf81 4147AC_SUBST(TM_ENDIAN_CONFIG)
4148AC_SUBST(TM_MULTILIB_CONFIG)
4149AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
69eb04f7 4150AC_SUBST(extra_gcc_objs)
434bb88d 4151AC_SUBST(extra_headers_list)
01dc27ef 4152AC_SUBST(extra_objs)
434bb88d 4153AC_SUBST(extra_parts)
4154AC_SUBST(extra_passes)
4155AC_SUBST(extra_programs)
434bb88d 4156AC_SUBST(float_h_file)
9371935c 4157AC_SUBST(gcc_config_arguments)
434bb88d 4158AC_SUBST(gcc_gxx_include_dir)
434bb88d 4159AC_SUBST(host_exeext)
01dc27ef 4160AC_SUBST(host_xm_file_list)
4dcab8b7 4161AC_SUBST(host_xm_include_list)
83b8e55b 4162AC_SUBST(host_xm_defines)
b197fbcf 4163AC_SUBST(out_host_hook_obj)
434bb88d 4164AC_SUBST(install)
3272db82 4165AC_SUBST(lang_opt_files)
434bb88d 4166AC_SUBST(lang_specs_files)
c3cc26e1 4167AC_SUBST(lang_tree_files)
01dc27ef 4168AC_SUBST(local_prefix)
434bb88d 4169AC_SUBST(md_file)
4170AC_SUBST(objc_boehm_gc)
4171AC_SUBST(out_file)
4172AC_SUBST(out_object_file)
434bb88d 4173AC_SUBST(thread_file)
4174AC_SUBST(tm_file_list)
4dcab8b7 4175AC_SUBST(tm_include_list)
8d4f8d46 4176AC_SUBST(tm_defines)
83b8e55b 4177AC_SUBST(tm_p_file_list)
4dcab8b7 4178AC_SUBST(tm_p_include_list)
4179AC_SUBST(xm_file_list)
4180AC_SUBST(xm_include_list)
8b24e546 4181AC_SUBST(xm_defines)
f3449a3c 4182AC_SUBST(use_gcc_stdint)
8daa9e98 4183AC_SUBST(c_target_objs)
4184AC_SUBST(cxx_target_objs)
32006f36 4185AC_SUBST(fortran_target_objs)
83b8e55b 4186AC_SUBST(target_cpu_default)
01dc27ef 4187
01dc27ef 4188AC_SUBST_FILE(language_hooks)
4189
ba4dfdb7 4190# Echo link setup.
4191if test x${build} = x${host} ; then
4192 if test x${host} = x${target} ; then
4193 echo "Links are now set up to build a native compiler for ${target}." 1>&2
4194 else
4195 echo "Links are now set up to build a cross-compiler" 1>&2
4196 echo " from ${host} to ${target}." 1>&2
4197 fi
01dc27ef 4198else
ba4dfdb7 4199 if test x${host} = x${target} ; then
4200 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
4201 echo " for ${target}." 1>&2
4202 else
4203 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
4204 echo " from ${host} to ${target}." 1>&2
4205 fi
01dc27ef 4206fi
4207
4ee9c684 4208AC_ARG_VAR(GMPLIBS,[How to link GMP])
4209AC_ARG_VAR(GMPINC,[How to find GMP include files])
4210
7601a55c 4211case "${GMPLIBS}" in
4212 *-lmpc*) AC_DEFINE(HAVE_mpc, 1, [Define if mpc is in use.]) ;;
4213esac
4214
255b6be7 4215AC_ARG_VAR(PPLLIBS,[How to link PPL])
4216AC_ARG_VAR(PPLINC,[How to find PPL include files])
4217
4218AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
4219AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
4220if test "x${CLOOGLIBS}" != "x" ; then
4221 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
4222fi
4223
7bfefa9d 4224AC_ARG_VAR(LIBELFLIBS,[How to link libelf])
4225AC_ARG_VAR(LIBELFINC,[How to find libelf include files])
4226if test "x${LIBELFLIBS}" != "x" ; then
4227 AC_DEFINE(HAVE_libelf, 1, [Define if libelf is in use.])
4228fi
4229
9227b6fc 4230# Check for plugin support
4231AC_ARG_ENABLE(plugin,
4232[ --enable-plugin enable plugin support],
4233enable_plugin=$enableval,
4234enable_plugin=yes; default_plugin=yes)
4235
4236pluginlibs=
4237if test x"$enable_plugin" = x"yes"; then
4238 # Check that the host supports -rdynamic and -ldl
4239 have_rdynamic=no
4240 have_dl=no
4241 saved_LDFLAGS="$LDFLAGS"
4242 saved_LIBS="$LIBS"
4243 LIBS=
4244
4245 # Check -rdynamic
4246 LDFLAGS="$LDFLAGS -rdynamic"
4247 AC_MSG_CHECKING([for -rdynamic])
4248 AC_TRY_LINK([],[return 0;],
4249 [AC_MSG_RESULT([yes]); have_rdynamic=yes],
4250 [AC_MSG_RESULT([no])])
4251 if test x"$have_rdynamic" = x"yes" ; then
4252 pluginlibs="-rdynamic"
4253 fi
4254
4255 # Check -ldl
295fba81 4256 LIBS="$LIBS -ldl"
9227b6fc 4257 AC_MSG_CHECKING([for -ldl])
4258 AC_TRY_LINK(
4259 [#include <dlfcn.h>],
4260 [volatile int f = 0; if (f) dlopen ("dummy", 0);],
4261 [AC_MSG_RESULT([yes]); have_dl=yes],
4262 [AC_MSG_RESULT([no])])
4263 if test x"$have_dl" = x"yes"; then
4264 pluginlibs="$pluginlibs -ldl"
4265 fi
4266
4267 # Check that we can build shared objects with -fPIC -shared
4268 LDFLAGS="$LDFLAGS -fPIC -shared"
4269 AC_MSG_CHECKING([for -fPIC -shared])
4270 AC_TRY_LINK(
4271 [extern int X;],[return X == 0;],
4272 [AC_MSG_RESULT([yes]); have_pic_shared=yes],
4273 [AC_MSG_RESULT([no]); have_pic_shared=no])
4274 if test x"$have_pic_shared" != x"yes"; then
4275 pluginlibs=
4276 enable_plugin=no
4277 fi
4278
4279 # If plugin support had been requested but not available, fail.
4280 if test x"$enable_plugin" = x"no" ; then
4281 if test x"$default_plugin" != x"yes"; then
4282 AC_MSG_ERROR([
4283Building GCC with plugin support requires a host that supports
4284-fPIC, -shared, -ldl and -rdynamic.])
4285 fi
4286 fi
4287
4288 LDFLAGS="$saved_LDFLAGS"
4289 LIBS="$saved_LIBS"
4290fi
4291
4292AC_SUBST(pluginlibs)
4293AC_SUBST(enable_plugin)
4294if test x"$enable_plugin" = x"yes"; then
4295 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
4296fi
4297
01dc27ef 4298# Configure the subdirectories
4299# AC_CONFIG_SUBDIRS($subdirs)
4300
4301# Create the Makefile
4fc83d8e 4302# and configure language subdirectories
1211e6bc 4303AC_CONFIG_FILES($all_outputs)
4304
4305AC_CONFIG_COMMANDS([default],
805483cf 4306[
00ba4d3e 4307case ${CONFIG_HEADERS} in
4308 *auto-host.h:config.in*)
4309 echo > cstamp-h ;;
805483cf 4310esac
a455468e 4311# Make sure all the subdirs exist.
524a54cf 4312for d in $subdirs doc build
a455468e 4313do
a455468e 4314 test -d $d || mkdir $d
a455468e 4315done
a1a7e9d5 4316],
26be379c 4317[subdirs='$subdirs'])
1211e6bc 4318AC_OUTPUT