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