]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/configure.in
2003-06-14 Michael Koch <konqueror@gmx.de>
[thirdparty/gcc.git] / gcc / configure.in
CommitLineData
1322177d 1# configure.in for GCC
46f18e7b
RK
2# Process this file with autoconf to generate a configuration script.
3
027faee7 4# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
eb70d86d 5# Free Software Foundation, Inc.
46f18e7b 6
1322177d 7#This file is part of GCC.
46f18e7b 8
1322177d
LB
9#GCC is free software; you can redistribute it and/or modify it under
10#the terms of the GNU General Public License as published by the Free
11#Software Foundation; either version 2, or (at your option) any later
12#version.
46f18e7b 13
1322177d
LB
14#GCC is distributed in the hope that it will be useful, but WITHOUT
15#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17#for more details.
46f18e7b
RK
18
19#You should have received a copy of the GNU General Public License
1322177d
LB
20#along with GCC; see the file COPYING. If not, write to the Free
21#Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22#02111-1307, USA.
46f18e7b 23
34a86c2b
NN
24# --------------------------------
25# Initialization and sanity checks
26# --------------------------------
27
890ad3ea 28AC_PREREQ(2.13)
46f18e7b 29AC_INIT(tree.c)
b7cb92ad 30AC_CONFIG_HEADER(auto-host.h:config.in)
cdcc6a01 31
34a86c2b
NN
32# Determine the host, build, and target systems
33AC_CANONICAL_SYSTEM
34
4665e56c
NN
35# Determine the target- and build-specific subdirectories
36GCC_TOPLEV_SUBDIRS
37
34a86c2b
NN
38# Set program_transform_name
39AC_ARG_PROGRAM
46f18e7b 40
75a39864
JL
41# Check for bogus environment variables.
42# Test if LIBRARY_PATH contains the notation for the current directory
43# since this would lead to problems installing/building glibc.
44# LIBRARY_PATH contains the current directory if one of the following
45# is true:
46# - one of the terminals (":" and ";") is the first or last sign
47# - two terminals occur directly after each other
48# - the path contains an element with a dot in it
49AC_MSG_CHECKING(LIBRARY_PATH variable)
50changequote(,)dnl
51case ${LIBRARY_PATH} in
52 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
53 library_path_setting="contains current directory"
54 ;;
55 *)
56 library_path_setting="ok"
57 ;;
58esac
59changequote([,])dnl
60AC_MSG_RESULT($library_path_setting)
61if test "$library_path_setting" != "ok"; then
62AC_MSG_ERROR([
63*** LIBRARY_PATH shouldn't contain the current directory when
079bd08e 64*** building gcc. Please change the environment variable
75a39864
JL
65*** and run configure again.])
66fi
67
68# Test if GCC_EXEC_PREFIX contains the notation for the current directory
69# since this would lead to problems installing/building glibc.
70# GCC_EXEC_PREFIX contains the current directory if one of the following
71# is true:
72# - one of the terminals (":" and ";") is the first or last sign
73# - two terminals occur directly after each other
74# - the path contains an element with a dot in it
75AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
76changequote(,)dnl
77case ${GCC_EXEC_PREFIX} in
78 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
79 gcc_exec_prefix_setting="contains current directory"
80 ;;
81 *)
82 gcc_exec_prefix_setting="ok"
83 ;;
84esac
85changequote([,])dnl
86AC_MSG_RESULT($gcc_exec_prefix_setting)
87if test "$gcc_exec_prefix_setting" != "ok"; then
88AC_MSG_ERROR([
89*** GCC_EXEC_PREFIX shouldn't contain the current directory when
079bd08e 90*** building gcc. Please change the environment variable
75a39864
JL
91*** and run configure again.])
92fi
93
34a86c2b
NN
94# -----------
95# Directories
96# -----------
97
98# Specify the local prefix
99local_prefix=
100AC_ARG_WITH(local-prefix,
101[ --with-local-prefix=DIR specifies directory to put local include],
102[case "${withval}" in
103yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
104no) ;;
105*) local_prefix=$with_local_prefix ;;
106esac])
107
108# Default local prefix if it is empty
109if test x$local_prefix = x; then
110 local_prefix=/usr/local
111fi
112
113# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
114# passed in by the toplevel make and thus we'd get different behavior
115# depending on where we built the sources.
116gcc_gxx_include_dir=
117# Specify the g++ header file directory
118AC_ARG_WITH(gxx-include-dir,
119[ --with-gxx-include-dir=DIR
120 specifies directory to put g++ header files],
121[case "${withval}" in
122yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
123no) ;;
124*) gcc_gxx_include_dir=$with_gxx_include_dir ;;
125esac])
126
127if test x${gcc_gxx_include_dir} = x; then
128 if test x${enable_version_specific_runtime_libs} = xyes; then
129 gcc_gxx_include_dir='${libsubdir}/include/c++'
130 else
131 topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
132changequote(<<, >>)dnl
133 gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
134changequote([, ])dnl
135 fi
136fi
137
138AC_ARG_WITH(cpp_install_dir,
139[ --with-cpp-install-dir=DIR
140 install the user visible C preprocessor in DIR
141 (relative to PREFIX) as well as PREFIX/bin],
142[if test x$withval = xyes; then
143 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
144elif test x$withval != xno; then
145 cpp_install_dir=$withval
146fi])
147
148# -------------------
149# Find default linker
150# -------------------
46f18e7b
RK
151
152# With GNU ld
153AC_ARG_WITH(gnu-ld,
154[ --with-gnu-ld arrange to work with GNU ld.],
df6faf79
JW
155gnu_ld_flag="$with_gnu_ld",
156gnu_ld_flag=no)
46f18e7b 157
ab339d62
AO
158# With pre-defined ld
159AC_ARG_WITH(ld,
e8bec136 160[ --with-ld arrange to use the specified ld (full pathname)],
3ccc3a56
AO
161DEFAULT_LINKER="$with_ld")
162if test x"${DEFAULT_LINKER+set}" = x"set"; then
163 if test ! -x "$DEFAULT_LINKER"; then
164 AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
e154a394 165 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
166 gnu_ld_flag=yes
167 fi
119d24d1
KG
168 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
169 [Define to enable the use of a default linker.])
ab339d62
AO
170fi
171
34a86c2b
NN
172AC_MSG_CHECKING([whether a default linker was specified])
173if test x"${DEFAULT_LINKER+set}" = x"set"; then
174 if test x"$gnu_ld_flag" = x"no"; then
175 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
176 else
177 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
178 fi
179else
180 AC_MSG_RESULT(no)
181fi
182
183# ----------------------
184# Find default assembler
185# ----------------------
186
46f18e7b
RK
187# With GNU as
188AC_ARG_WITH(gnu-as,
e8bec136 189[ --with-gnu-as arrange to work with GNU as],
df6faf79
JW
190gas_flag="$with_gnu_as",
191gas_flag=no)
46f18e7b 192
ab339d62 193AC_ARG_WITH(as,
e8bec136 194[ --with-as arrange to use the specified as (full pathname)],
3ccc3a56
AO
195DEFAULT_ASSEMBLER="$with_as")
196if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
197 if test ! -x "$DEFAULT_ASSEMBLER"; then
198 AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
e154a394 199 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
200 gas_flag=yes
201 fi
119d24d1
KG
202 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
203 [Define to enable the use of a default assembler.])
3ccc3a56 204fi
ab339d62 205
34a86c2b
NN
206AC_MSG_CHECKING([whether a default assembler was specified])
207if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
208 if test x"$gas_flag" = x"no"; then
209 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
4e88d51b 210 else
34a86c2b 211 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
4e88d51b 212 fi
34a86c2b
NN
213else
214 AC_MSG_RESULT(no)
4e88d51b 215fi
46f18e7b 216
34a86c2b
NN
217# ---------------
218# Find C compiler
219# ---------------
13c22933 220
414d23ae
HPN
221# Find the native compiler
222AC_PROG_CC
223AC_PROG_CC_C_O
224# autoconf is lame and doesn't give us any substitution variable for this.
225if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
226 NO_MINUS_C_MINUS_O=yes
227else
228 OUTPUT_OPTION='-o $@'
229fi
230AC_SUBST(NO_MINUS_C_MINUS_O)
231AC_SUBST(OUTPUT_OPTION)
232
73458fb7
NN
233# -------------------------
234# Check C compiler features
235# -------------------------
236
414d23ae
HPN
237AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
238ac_cv_prog_cc_no_long_long,
239[save_CFLAGS="$CFLAGS"
240CFLAGS="-Wno-long-long"
241AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
242 ac_cv_prog_cc_no_long_long=no)
243CFLAGS="$save_CFLAGS"])
244
34a86c2b
NN
245AC_PROG_CPP
246AC_C_INLINE
247gcc_AC_C_VOLATILE
248
249gcc_AC_C_LONG_DOUBLE
250gcc_AC_C_LONG_LONG
251gcc_AC_C__BOOL
252
253# sizeof(char) is 1 by definition.
254AC_COMPILE_CHECK_SIZEOF(short)
255AC_COMPILE_CHECK_SIZEOF(int)
256AC_COMPILE_CHECK_SIZEOF(long)
257if test $ac_cv_c_long_long = yes; then
258 AC_COMPILE_CHECK_SIZEOF(long long)
259fi
260if test $ac_cv_c___int64 = yes; then
261 AC_COMPILE_CHECK_SIZEOF(__int64)
262fi
263
264gcc_AC_C_CHARSET
265
266# -----------------
267# Find Ada compiler
268# -----------------
269
270# See if GNAT has been installed
271gcc_AC_PROG_GNAT
272
414d23ae
HPN
273if test x$have_gnat != xno ; then
274AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
275ac_cv_prog_adac_no_long_long,
276[cat >conftest.adb <<EOF
277procedure conftest is begin null; end conftest;
278EOF
279if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
280 ac_cv_prog_adac_no_long_long=yes
281else
282 ac_cv_prog_adac_no_long_long=no
283fi
284rm -f conftest*])
285else
286 ac_cv_prog_adac_no_long_long=yes
287fi
288
34a86c2b
NN
289# ---------------------
290# Warnings and checking
291# ---------------------
292
414d23ae
HPN
293strict1_warn=
294if test $ac_cv_prog_cc_no_long_long = yes && \
295 test $ac_cv_prog_adac_no_long_long = yes ; then
296 strict1_warn="-pedantic -Wno-long-long"
297fi
298AC_SUBST(strict1_warn)
299
414d23ae
HPN
300# If the native compiler is GCC, we can enable warnings even in stage1.
301# That's useful for people building cross-compilers, or just running a
302# quick `make'.
303warn_cflags=
304if test "x$GCC" = "xyes"; then
305 warn_cflags='$(GCC_WARN_CFLAGS)'
306fi
307AC_SUBST(warn_cflags)
308
dd859b8a
KG
309# Enable -Werror in bootstrap stage2 and later.
310# Change the default to "no" on release branches.
311AC_ARG_ENABLE(werror,
312[ --enable-werror enable -Werror in bootstrap stage2 and later], [],
313[enable_werror=yes])
314if test x$enable_werror = xyes ; then
315 WERROR=-Werror
316fi
317AC_SUBST(WERROR)
318
a494747c
MM
319# Enable expensive internal checks
320AC_ARG_ENABLE(checking,
f4524c9e
ZW
321[ --enable-checking[=LIST]
322 enable expensive run-time checks. With LIST,
323 enable only specific categories of checks.
4c76f856
JJ
324 Categories are: misc,tree,rtl,rtlflag,gc,gcac;
325 default is misc,tree,gc,rtlflag],
119d24d1
KG
326[ac_checking=
327ac_tree_checking=
328ac_rtl_checking=
4c76f856 329ac_rtlflag_checking=
119d24d1
KG
330ac_gc_checking=
331ac_gc_always_collect=
332case "${enableval}" in
4c76f856
JJ
333yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
334 ac_rtlflag_checking=1 ;;
4e88d51b 335no) ;;
59f406b7 336*) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
f4524c9e
ZW
337 set fnord $enableval; shift
338 IFS="$ac_save_IFS"
c62e45ad
KG
339 for check
340 do
f4524c9e 341 case $check in
119d24d1
KG
342 misc) ac_checking=1 ;;
343 tree) ac_tree_checking=1 ;;
4c76f856 344 rtlflag) ac_rtlflag_checking=1 ;;
119d24d1
KG
345 rtl) ac_rtl_checking=1 ;;
346 gc) ac_gc_checking=1 ;;
347 gcac) ac_gc_always_collect=1 ;;
414d23ae 348 valgrind) ac_checking_valgrind=1 ;;
f4524c9e
ZW
349 *) AC_MSG_ERROR(unknown check category $check) ;;
350 esac
351 done
352 ;;
119d24d1 353esac
51d0e20c
AJ
354],
355# Enable some checks by default for development versions of GCC
4c76f856 356[ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
204250d2 357nocommon_flag=""
119d24d1
KG
358if test x$ac_checking != x ; then
359 AC_DEFINE(ENABLE_CHECKING, 1,
360[Define if you want more run-time sanity checks. This one gets a grab
361 bag of miscellaneous but relatively cheap checks.])
204250d2 362 nocommon_flag=-fno-common
119d24d1 363fi
204250d2 364AC_SUBST(nocommon_flag)
119d24d1
KG
365if test x$ac_tree_checking != x ; then
366 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
367[Define if you want all operations on trees (the basic data
368 structure of the front ends) to be checked for dynamic type safety
369 at runtime. This is moderately expensive.])
370fi
371if test x$ac_rtl_checking != x ; then
372 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
373[Define if you want all operations on RTL (the basic data structure
374 of the optimizer and back end) to be checked for dynamic type safety
375 at runtime. This is quite expensive.])
376fi
4c76f856
JJ
377if test x$ac_rtlflag_checking != x ; then
378 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
379[Define if you want RTL flag accesses to be checked against the RTL
380 codes that are supported for each access macro. This is relatively
381 cheap.])
382fi
119d24d1
KG
383if test x$ac_gc_checking != x ; then
384 AC_DEFINE(ENABLE_GC_CHECKING, 1,
385[Define if you want the garbage collector to do object poisoning and
386 other memory allocation checks. This is quite expensive.])
387fi
388if test x$ac_gc_always_collect != x ; then
389 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
390[Define if you want the garbage collector to operate in maximally
391 paranoid mode, validating the entire heap and collecting garbage at
392 every opportunity. This is extremely expensive.])
393fi
414d23ae
HPN
394valgrind_path_defines=
395valgrind_command=
396if test x$ac_checking_valgrind != x ; then
397 # It is certainly possible that there's valgrind but no valgrind.h.
398 # GCC relies on making annotations so we must have both.
14011ca4
AJ
399 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
400 AC_TRY_CPP(
401 [#include <memcheck.h>
402#ifndef VALGRIND_DISCARD
403#error VALGRIND_DISCARD not defined
404#endif],
405 [gcc_cv_header_memcheck_h=yes],
406 gcc_cv_header_memcheck_h=no)
407 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
414d23ae
HPN
408 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
409 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
410 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
72bd67f9
AJ
411 if test "x$valgrind_path" = "x" || (test $have_valgrind_h = no && test $gcc_cv_header_memcheck_h = no); then
412 AC_MSG_ERROR([*** Can't find both valgrind and valgrind.h/memcheck.h])
414d23ae
HPN
413 fi
414 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
415 valgrind_command="$valgrind_path -q"
416 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
417[Define if you want to run subprograms and generated programs
418 through valgrind (a memory checker). This is extremely expensive.])
14011ca4
AJ
419 if test $gcc_cv_header_memcheck_h = yes; then
420 AC_DEFINE(HAVE_MEMCHECK_H, 1,
421 [Define if valgrind's memcheck.h header is installed.])
422 fi
414d23ae
HPN
423fi
424AC_SUBST(valgrind_path_defines)
425AC_SUBST(valgrind_command)
51d0e20c 426
22aa533e
NS
427# Enable code coverage collection
428AC_ARG_ENABLE(coverage,
429[ --enable-coverage[=LEVEL]
430 enable compiler\'s code coverage collection.
431 Use to measure compiler performance and locate
8601608f 432 unused parts of the compiler. With LEVEL, specify
22aa533e
NS
433 optimization. Values are opt, noopt,
434 default is noopt],
435[case "${enableval}" in
436yes|noopt)
8601608f 437 coverage_flags="-fprofile-arcs -ftest-coverage -O0 -DSELF_COVERAGE=1"
22aa533e
NS
438 ;;
439opt)
8601608f 440 coverage_flags="-fprofile-arcs -ftest-coverage -O2 -DSELF_COVERAGE=2"
22aa533e
NS
441 ;;
442*)
443 AC_MSG_ERROR(unknown coverage setting $enableval)
444 ;;
445esac],
2043c38e 446[coverage_flags=""])
22aa533e
NS
447AC_SUBST(coverage_flags)
448
73458fb7
NN
449# -------------------------------
450# Miscenalleous configure options
451# -------------------------------
34a86c2b
NN
452
453# With stabs
454AC_ARG_WITH(stabs,
455[ --with-stabs arrange to use stabs instead of host debug format],
456stabs="$with_stabs",
457stabs=no)
458
459# With ELF
460AC_ARG_WITH(elf,
461[ --with-elf arrange to use ELF instead of host debug format],
462elf="$with_elf",
463elf=no)
464
465# Determine whether or not multilibs are enabled.
466AC_ARG_ENABLE(multilib,
467[ --enable-multilib enable library support for multiple ABIs],
468[], [enable_multilib=yes])
469AC_SUBST(enable_multilib)
3ecc3258 470
4bafaa6f
L
471# Enable __cxa_atexit for C++.
472AC_ARG_ENABLE(__cxa_atexit,
473[ --enable-__cxa_atexit enable __cxa_atexit for C++],
474[], [])
2121a768 475
c5c76735
JL
476# Enable Multibyte Characters for C/C++
477AC_ARG_ENABLE(c-mbchar,
e8bec136 478[ --enable-c-mbchar enable multibyte characters for C and C++],
2618c083 479if test x$enable_c_mbchar != xno; then
9ec7291f
ZW
480 AC_DEFINE(MULTIBYTE_CHARS, 1,
481 [Define if you want the C and C++ compilers to support multibyte
482 character sets for source code.])
c5c76735
JL
483fi)
484
0bbb1697
RK
485# Enable threads
486# Pass with no value to take the default
487# Pass with a value to specify a thread package
488AC_ARG_ENABLE(threads,
e8bec136
RO
489[ --enable-threads enable thread usage for target GCC
490 --enable-threads=LIB use LIB thread package for target GCC],,
0bbb1697
RK
491enable_threads='')
492
e445171e 493enable_threads_flag=$enable_threads
0bbb1697 494# Check if a valid thread package
e445171e 495case x${enable_threads_flag} in
0bbb1697
RK
496 x | xno)
497 # No threads
a851212a 498 target_thread_file='single'
0bbb1697
RK
499 ;;
500 xyes)
501 # default
a851212a 502 target_thread_file=''
0bbb1697
RK
503 ;;
504 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
6d412a7b 505 xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix | xgnat)
e445171e 506 target_thread_file=$enable_threads_flag
0bbb1697
RK
507 ;;
508 *)
509 echo "$enable_threads is an unknown thread package" 1>&2
510 exit 1
511 ;;
512esac
513
d8bb17c8
OP
514AC_ARG_ENABLE(objc-gc,
515[ --enable-objc-gc enable the use of Boehm's garbage collector with
e8bec136 516 the GNU Objective-C runtime],
2618c083 517if test x$enable_objc_gc = xno; then
d8bb17c8
OP
518 objc_boehm_gc=''
519else
520 objc_boehm_gc=1
521fi,
522objc_boehm_gc='')
523
90e6a802 524AC_ARG_WITH(dwarf2,
e8bec136 525[ --with-dwarf2 force the default debug format to be DWARF 2],
90e6a802
RL
526dwarf2="$with_dwarf2",
527dwarf2=no)
528
50503ac8 529AC_ARG_ENABLE(shared,
e8bec136 530[ --disable-shared don't provide a shared libgcc],
c785e0fa
AO
531[
532 case $enable_shared in
533 yes | no) ;;
534 *)
535 enable_shared=no
536 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
537 for pkg in $enableval; do
538 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
539 enable_shared=yes
540 fi
541 done
542 IFS="$ac_save_ifs"
543 ;;
544 esac
545], [enable_shared=yes])
50503ac8
RH
546AC_SUBST(enable_shared)
547
4977bab6
ZW
548AC_ARG_WITH(sysroot,
549[ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
550[
551 case ${with_sysroot} in
91710e62 552 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
4977bab6
ZW
553 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
554 esac
555
556 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
557 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)'
047d636f
DJ
558
559 if test "x$exec_prefix" = xNONE; then
560 if test "x$prefix" = xNONE; then
561 test_prefix=/usr/local
562 else
563 test_prefix=$prefix
564 fi
565 else
566 test_prefix=$exec_prefix
567 fi
568 case ${TARGET_SYSTEM_ROOT} in
91710e62
AO
569 "${test_prefix}"|"${test_prefix}/"*|\
570 '${exec_prefix}'|'${exec_prefix}/'*)
047d636f
DJ
571 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
572 TARGET_SYSTEM_ROOT_DEFINE="$t"
573 ;;
574 esac
4977bab6
ZW
575], [
576 TARGET_SYSTEM_ROOT=
db720d9a 577 TARGET_SYSTEM_ROOT_DEFINE=
4977bab6
ZW
578 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
579])
580AC_SUBST(TARGET_SYSTEM_ROOT)
581AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
582AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
583
73458fb7
NN
584# -------------------------
585# Checks for other programs
586# -------------------------
61842080 587
e9a25f70
JL
588AC_PROG_MAKE_SET
589
46f18e7b
RK
590# Find some useful tools
591AC_PROG_AWK
99e757d5
KG
592gcc_AC_PROG_LN
593gcc_AC_PROG_LN_S
46f18e7b 594AC_PROG_RANLIB
99e757d5 595gcc_AC_PROG_INSTALL
46f18e7b 596
955be633
JM
597# See if we have the mktemp command.
598AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
599
09fa0705
ZW
600# Do we have a single-tree copy of texinfo?
601if test -f $srcdir/../texinfo/Makefile.in; then
602 MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
603 gcc_cv_prog_makeinfo_modern=yes
604 AC_MSG_RESULT([Using makeinfo from the unified source tree.])
605else
606 # See if makeinfo has been installed and is modern enough
607 # that we can use it.
608 gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
609 [GNU texinfo.* \([0-9][0-9.]*\)],
a38f87a9 610 [4.[2-9]*])
09fa0705
ZW
611fi
612
613if test $gcc_cv_prog_makeinfo_modern = no; then
614 AC_MSG_WARN([
615*** Makeinfo is missing or too old.
17db6582 616*** Info documentation will not be built.])
09fa0705 617 BUILD_INFO=
09fa0705
ZW
618else
619 BUILD_INFO=info AC_SUBST(BUILD_INFO)
09fa0705
ZW
620fi
621
3f896fc2
JM
622# Is pod2man recent enough to regenerate manpages?
623AC_MSG_CHECKING([for recent Pod::Man])
7be33370 624if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
fd939e46
JM
625 AC_MSG_RESULT(yes)
626 GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES)
627else
628 AC_MSG_RESULT(no)
629 GENERATED_MANPAGES=
630fi
631
baade80b
PE
632# 'make compare' can be significantly faster, if cmp itself can
633# skip bytes instead of using tail. The test being performed is
634# "if cmp --ignore-initial=2 t1 t2 && ! cmp --ignore-initial=1 t1 t2"
635# but we need to sink errors and handle broken shells.
636AC_MSG_CHECKING([for cmp's capabilities])
637echo abfoo >t1
638echo cdfoo >t2
639if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
640 if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
641 make_compare_target=slowcompare
642 else
643 make_compare_target=gnucompare
644 fi
c7a5cf61
PE
645else
646 make_compare_target=slowcompare
647fi
baade80b 648rm t1 t2
c7a5cf61 649AC_SUBST(make_compare_target)
baade80b 650AC_MSG_RESULT($make_compare_target)
c7a5cf61 651
1e608388
ZW
652# How about lex?
653dnl Don't use AC_PROG_LEX; we insist on flex.
654dnl LEXLIB is not useful in gcc.
655if test -f $srcdir/../flex/skel.c; then
656 FLEX='$(objdir)/../flex/flex'
657else
9118405f 658 AC_CHECK_PROG(FLEX, flex, flex, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex)
1e608388
ZW
659fi
660
661# Bison?
662# The -L switch is so bison can find its skeleton file.
663if test -f $srcdir/../bison/bison.simple; then
664 BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
665else
9118405f 666 AC_CHECK_PROG(BISON, bison, bison, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison)
1e608388
ZW
667fi
668
73458fb7
NN
669# --------------------
670# Checks for C headers
671# --------------------
672
673AC_MSG_CHECKING(for GNU C library)
674AC_CACHE_VAL(gcc_cv_glibc,
675[AC_TRY_COMPILE(
676 [#include <features.h>],[
677#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
678#error Not a GNU C library system
679#endif],
680 [gcc_cv_glibc=yes],
681 gcc_cv_glibc=no)])
682AC_MSG_RESULT($gcc_cv_glibc)
683if test $gcc_cv_glibc = yes; then
684 AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
685fi
686
687AC_HEADER_STDC
688AC_HEADER_TIME
689gcc_AC_HEADER_STDBOOL
690gcc_AC_HEADER_STRING
691AC_HEADER_SYS_WAIT
692AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
1072ec3f 693 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
73458fb7 694 sys/resource.h sys/param.h sys/times.h sys/stat.h \
2bd02043 695 direct.h malloc.h langinfo.h ldfcn.h wchar.h)
73458fb7
NN
696
697# Check for thread headers.
698AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
699AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
700
701# These tests can't be done till we know if we have limits.h.
702gcc_AC_C_CHAR_BIT
703AC_C_BIGENDIAN_CROSS
73458fb7
NN
704
705# --------
706# UNSORTED
707# --------
708
709# Stage specific cflags for build.
710stage1_cflags=
711case $build in
712vax-*-*)
713 if test x$GCC = xyes
714 then
715 stage1_cflags="-Wa,-J"
716 else
717 stage1_cflags="-J"
718 fi
719 ;;
720powerpc-*-darwin*)
721 # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
722 # sources; use -no-cpp-precomp to get to GNU cpp.
723 # Apple's GCC has bugs in designated initializer handling, so disable
724 # that too.
725 stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
726 ;;
727esac
728AC_SUBST(stage1_cflags)
729
4e70264f
ZW
730# These libraries may be used by collect2.
731# We may need a special search path to get them linked.
732AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
733[save_LIBS="$LIBS"
7f2749d4 734for libs in '' -lld -lmld \
4e70264f
ZW
735 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
736 '-L/usr/lib/cmplrs/cc3.11 -lmld'
737do
738 LIBS="$libs"
739 AC_TRY_LINK_FUNC(ldopen,
740 [gcc_cv_collect2_libs="$libs"; break])
741done
742LIBS="$save_LIBS"
743test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
744case $gcc_cv_collect2_libs in
745 "none required") ;;
746 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
747esac
748AC_SUBST(COLLECT2_LIBS)
749
7f2749d4
RK
750# When building Ada code on Alpha, we need exc_resume which is usually in
751# -lexc. So test for it.
752save_LIBS="$LIBS"
753LIBS=
754AC_SEARCH_LIBS(exc_resume, exc)
755GNAT_LIBEXC="$LIBS"
756LIBS="$save_LIBS"
757AC_SUBST(GNAT_LIBEXC)
758
62c9aa5f
ZW
759# Some systems put ldexp and frexp in libm instead of libc; assume
760# they're both in the same place. jcf-dump needs them.
761save_LIBS="$LIBS"
762LIBS=
763AC_SEARCH_LIBS(ldexp, m)
764LDEXP_LIB="$LIBS"
765LIBS="$save_LIBS"
766AC_SUBST(LDEXP_LIB)
767
890ad3ea 768# See if the stage1 system preprocessor understands the ANSI C
4bc5fbd4 769# preprocessor stringification operator. (Used by symcat.h.)
890ad3ea 770AC_C_STRINGIZE
76844337 771
7636d567
JW
772# Use <inttypes.h> only if it exists,
773# doesn't clash with <sys/types.h>, and declares intmax_t.
774AC_MSG_CHECKING(for inttypes.h)
775AC_CACHE_VAL(gcc_cv_header_inttypes_h,
776[AC_TRY_COMPILE(
777 [#include <sys/types.h>
778#include <inttypes.h>],
779 [intmax_t i = -1;],
9da0e39b 780 [gcc_cv_header_inttypes_h=yes],
7636d567
JW
781 gcc_cv_header_inttypes_h=no)])
782AC_MSG_RESULT($gcc_cv_header_inttypes_h)
9da0e39b 783if test $gcc_cv_header_inttypes_h = yes; then
119d24d1
KG
784 AC_DEFINE(HAVE_INTTYPES_H, 1,
785 [Define if you have a working <inttypes.h> header file.])
9da0e39b 786fi
cdcc6a01 787
9612ab65
ZW
788dnl Disabled until we have a complete test for buggy enum bitfields.
789dnl gcc_AC_C_ENUM_BF_UNSIGNED
c149cc37 790
6af8c740
KG
791AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
792 sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
a15135c9 793 fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat \
8eb6a092 794 scandir alphasort gettimeofday mbstowcs wcswidth mmap mincore)
a81fb89e 795
39f6c4c8
KW
796if test x$ac_cv_func_mbstowcs = xyes; then
797 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
798[ AC_TRY_RUN([#include <stdlib.h>
799int main()
800{
801 mbstowcs(0, "", 0);
802 return 0;
803}],
804 gcc_cv_func_mbstowcs_works=yes,
805 gcc_cv_func_mbstowcs_works=no,
806 gcc_cv_func_mbstowcs_works=yes)])
807 if test x$gcc_cv_func_mbstowcs_works = xyes; then
808 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
809 [Define this macro if mbstowcs does not crash when its
810 first argument is NULL.])
811 fi
812fi
813
f12bc141 814AC_CHECK_TYPE(ssize_t, int)
56f48ce9 815
e256b8b6
DA
816# Try to determine the array type of the second argument of getgroups
817# for the target system (int or gid_t).
818AC_TYPE_GETGROUPS
819if test "${target}" = "${build}"; then
820 TARGET_GETGROUPS_T=$ac_cv_type_getgroups
821else
822 case "${target}" in
823 # This condition may need some tweaking. It should include all
824 # targets where the array type of the second argument of getgroups
825 # is int and the type of gid_t is not equivalent to int.
826 *-*-sunos* | *-*-ultrix*)
827 TARGET_GETGROUPS_T=int
828 ;;
829 *)
830 TARGET_GETGROUPS_T=gid_t
831 ;;
832 esac
833fi
834AC_SUBST(TARGET_GETGROUPS_T)
835
99e757d5 836gcc_AC_FUNC_PRINTF_PTR
1072ec3f 837gcc_AC_FUNC_MMAP_BLACKLIST
b27d2bd5
MK
838
839case "${host}" in
840*-*-uwin*)
34fa3e7d
MM
841 AC_MSG_ERROR([
842*** UWIN may not be used as a host platform because
843*** linking with posix.dll is not allowed by the GNU GPL])
b27d2bd5 844 ;;
ee262b6f
DR
845*-*-*vms*)
846 # Under VMS, vfork works very different than on Unix. The standard test
847 # won't work, and it isn't easily adaptable. It makes more sense to
848 # just force it.
849 ac_cv_func_vfork_works=yes
850 ;;
b27d2bd5 851esac
c375c43b 852AC_FUNC_VFORK
f1b54f9b 853
f91abfce
TT
854AM_ICONV
855
86cf1cbd
KG
856# We will need to find libiberty.h and ansidecl.h
857saved_CFLAGS="$CFLAGS"
858CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
8e944909 859gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
3b681e9d 860 strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
a7475ab1 861 fprintf_unlocked strstr errno vasprintf \
c1800ec8 862 malloc realloc calloc free basename getopt clock, , ,[
d02af173 863#include "ansidecl.h"
86cf1cbd 864#include "system.h"])
c5c76735 865
f31e826b 866gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
d02af173 867#include "ansidecl.h"
86cf1cbd 868#include "system.h"
d2cabf16
KG
869#ifdef HAVE_SYS_RESOURCE_H
870#include <sys/resource.h>
871#endif
872])
873
b2522d2b
HPN
874AC_TRY_COMPILE([
875#include "ansidecl.h"
876#include "system.h"
877#ifdef HAVE_SYS_RESOURCE_H
878#include <sys/resource.h>
879#endif
880],[rlim_t l = 0;],,[AC_DEFINE([rlim_t],[long],
881[Define to \`long' if <sys/resource.h> doesn't define.])])
882
351df804
KG
883gcc_AC_CHECK_DECLS(ldgetname, , ,[
884#include "ansidecl.h"
885#include "system.h"
886#ifdef HAVE_LDFCN_H
887#include <ldfcn.h>
888#endif
889])
890
c1800ec8
ZW
891gcc_AC_CHECK_DECLS(times, , ,[
892#include "ansidecl.h"
893#include "system.h"
894#ifdef HAVE_SYS_TIMES_H
895#include <sys/times.h>
896#endif
897])
898
899# More time-related stuff.
900AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
901AC_TRY_COMPILE([
902#include "ansidecl.h"
903#include "system.h"
904#ifdef HAVE_SYS_TIMES_H
905#include <sys/times.h>
906#endif
907], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
908if test $ac_cv_struct_tms = yes; then
909 AC_DEFINE(HAVE_STRUCT_TMS, 1,
910 [Define if <sys/times.h> defines struct tms.])
911fi
912
913# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
914# revisit after autoconf 2.50.
915AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
916AC_TRY_COMPILE([
917#include "ansidecl.h"
918#include "system.h"
919], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
920if test $gcc_cv_type_clock_t = yes; then
921 AC_DEFINE(HAVE_CLOCK_T, 1,
922 [Define if <time.h> defines clock_t.])
923fi
924
a12b5bd9
ZW
925AC_CACHE_CHECK(for uchar, gcc_cv_type_uchar,
926[AC_TRY_COMPILE([
927#include "ansidecl.h"
928#include "system.h"
929],
930[if ((uchar *)0) return 0;
931 if (sizeof(uchar)) return 0;],
932ac_cv_type_uchar=yes, ac_cv_type_uchar=no)])
933if test $ac_cv_type_uchar = yes; then
934 AC_DEFINE(HAVE_UCHAR, 1,
935 [Define if <sys/types.h> defines \`uchar'.])
936fi
937
86cf1cbd
KG
938# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
939CFLAGS="$saved_CFLAGS"
940
eb70d86d
AS
941gcc_AC_INITFINI_ARRAY
942
75923b2f 943# mkdir takes a single argument on some systems.
99e757d5 944gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
75923b2f 945
46f18e7b
RK
946# File extensions
947manext='.1'
948objext='.o'
46f18e7b
RK
949AC_SUBST(manext)
950AC_SUBST(objext)
46f18e7b 951
4977bab6
ZW
952# With Setjmp/Longjmp based exception handling.
953AC_ARG_ENABLE(sjlj-exceptions,
954[ --enable-sjlj-exceptions
955 arrange to use setjmp/longjmp exception handling],
956[sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
957AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
958 [Define 0/1 to force the choice for exception handling model.])])
959
960AC_CHECK_LIB(unwind, main, use_libunwind_default=yes, use_libunwind_default=no)
961# Use libunwind based exception handling.
962AC_ARG_ENABLE(libunwind-exceptions,
963[ --enable-libunwind-exceptions force use libunwind for exceptions],
964use_libunwind_exceptions=$enableval,
965use_libunwind_exceptions=$use_libunwind_default)
966if test x"$use_libunwind_exceptions" = xyes; then
967 AC_DEFINE(USE_LIBUNWIND_EXCEPTIONS, 1,
968 [Define if gcc should use -lunwind.])
969fi
970
34a86c2b
NN
971# --------------------------------------------------------
972# Build, host, and target specific configuration fragments
973# --------------------------------------------------------
974
ef69da62 975target_gtfiles=
46f18e7b 976build_xm_file=
61536478 977build_xm_defines=
46f18e7b
RK
978build_install_headers_dir=install-headers-tar
979build_exeext=
980host_xm_file=
61536478 981host_xm_defines=
46f18e7b 982host_xmake_file=
6e26218f 983host_exeext=
46f18e7b
RK
984
985# Decode the host machine, then the target machine.
986# For the host machine, we save the xm_file variable as host_xm_file;
987# then we decode the target machine and forget everything else
988# that came from the host machine.
989for machine in $build $host $target; do
61ed06c3 990 . ${srcdir}/config.gcc
46f18e7b
RK
991done
992
993extra_objs="${host_extra_objs} ${extra_objs}"
994
995# Default the target-machine variables that were not explicitly set.
75bffa71 996if test x"$tm_file" = x
46f18e7b
RK
997then tm_file=$cpu_type/$cpu_type.h; fi
998
6b2adea9 999if test x"$extra_headers" = x
46f18e7b
RK
1000then extra_headers=; fi
1001
75bffa71 1002if test x$md_file = x
e98e406f 1003then md_file=$cpu_type/$cpu_type.md; fi
46f18e7b 1004
75bffa71 1005if test x$out_file = x
46f18e7b
RK
1006then out_file=$cpu_type/$cpu_type.c; fi
1007
75bffa71 1008if test x"$tmake_file" = x
46f18e7b
RK
1009then tmake_file=$cpu_type/t-$cpu_type
1010fi
1011
90e6a802 1012if test x"$dwarf2" = xyes
756ee602 1013then tm_file="$tm_file tm-dwarf2.h"
90e6a802
RL
1014fi
1015
46f18e7b 1016# Say what files are being used for the output code and MD file.
11642c3a 1017echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
46f18e7b
RK
1018echo "Using \`$srcdir/config/$md_file' as machine description file."
1019
11642c3a 1020# If any of the xm_file variables contain nonexistent files, warn
4dc0535b
ZW
1021# about them and drop them.
1022
11642c3a
ZW
1023bx=
1024for x in $build_xm_file; do
1025 if test -f $srcdir/config/$x
1026 then bx="$bx $x"
11642c3a
ZW
1027 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1028 fi
1029done
1030build_xm_file="$bx"
1031
1032hx=
1033for x in $host_xm_file; do
1034 if test -f $srcdir/config/$x
1035 then hx="$hx $x"
11642c3a
ZW
1036 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1037 fi
1038done
1039host_xm_file="$hx"
1040
1041tx=
1042for x in $xm_file; do
1043 if test -f $srcdir/config/$x
1044 then tx="$tx $x"
11642c3a
ZW
1045 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1046 fi
1047done
1048xm_file="$tx"
1049
46f18e7b
RK
1050count=a
1051for f in $tm_file; do
1052 count=${count}x
1053done
75bffa71 1054if test $count = ax; then
46f18e7b
RK
1055 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1056else
1057 echo "Using the following target machine macro files:"
1058 for f in $tm_file; do
1059 echo " $srcdir/config/$f"
1060 done
1061fi
1062
4977bab6
ZW
1063if test x$need_64bit_hwint = xyes; then
1064 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1065[Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1066fi
1067
46f18e7b
RK
1068count=a
1069for f in $host_xm_file; do
1070 count=${count}x
1071done
11642c3a
ZW
1072if test $count = a; then
1073 :
1074elif test $count = ax; then
46f18e7b
RK
1075 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1076else
1077 echo "Using the following host machine macro files:"
1078 for f in $host_xm_file; do
1079 echo " $srcdir/config/$f"
1080 done
1081fi
476d9098 1082echo "Using ${out_host_hook_obj} for host machine hooks."
46f18e7b 1083
75bffa71 1084if test "$host_xm_file" != "$build_xm_file"; then
46f18e7b
RK
1085 count=a
1086 for f in $build_xm_file; do
1087 count=${count}x
1088 done
11642c3a
ZW
1089 if test $count = a; then
1090 :
1091 elif test $count = ax; then
46f18e7b
RK
1092 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1093 else
1094 echo "Using the following build machine macro files:"
1095 for f in $build_xm_file; do
1096 echo " $srcdir/config/$f"
1097 done
1098 fi
1099fi
1100
75bffa71
ILT
1101if test x$thread_file = x; then
1102 if test x$target_thread_file != x; then
a851212a
JW
1103 thread_file=$target_thread_file
1104 else
1105 thread_file='single'
1106 fi
46f18e7b 1107fi
46f18e7b 1108
2121a768
JT
1109if test x$enable___cxa_atexit = xyes || \
1110 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1111 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
1112 [Define if you want to use __cxa_atexit, rather than atexit, to
1113 register C++ destructors for local statics and global objects.
1114 This is essential for fully standards-compliant handling of
1115 destructors, but requires __cxa_atexit in libc.])
1116fi
1117
a5381466 1118# Look for a file containing extra machine modes.
1c0ca89d
ZW
1119if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1120 extra_modes_file='$(srcdir)'/config/${extra_modes}
a5381466 1121 AC_SUBST(extra_modes_file)
1c0ca89d 1122 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "$extra_modes",
a5381466
ZW
1123 [Define to the name of a file containing a list of extra machine modes
1124 for this architecture.])
1125 AC_DEFINE(EXTRA_CC_MODES, 1,
1126 [Define if the target architecture needs extra machine modes to represent
1127 the results of comparisons.])
1128fi
1129
b7cb92ad 1130# auto-host.h is the file containing items generated by autoconf and is
e9a25f70 1131# the first file included by config.h.
4977bab6 1132# If host=build, it is correct to have bconfig include auto-host.h
db81d74a
RH
1133# as well. If host!=build, we are in error and need to do more
1134# work to find out the build config parameters.
75bffa71 1135if test x$host = x$build
db81d74a 1136then
eaf4e618 1137 build_auto=auto-host.h
06f0b04c 1138 FORBUILD=..
b7cb92ad
JL
1139else
1140 # We create a subdir, then run autoconf in the subdir.
1141 # To prevent recursion we set host and build for the new
1142 # invocation of configure to the build for this invocation
1143 # of configure.
1144 tempdir=build.$$
1145 rm -rf $tempdir
1146 mkdir $tempdir
1147 cd $tempdir
1148 case ${srcdir} in
b86ecfa9 1149 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
b7cb92ad
JL
1150 *) realsrcdir=../${srcdir};;
1151 esac
d920e825
L
1152 saved_CFLAGS="${CFLAGS}"
1153 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1154 ${realsrcdir}/configure \
534d0cc0 1155 --target=$target_alias --host=$build_alias --build=$build_alias
d920e825 1156 CFLAGS="${saved_CFLAGS}"
b7cb92ad
JL
1157
1158 # We just finished tests for the build machine, so rename
1159 # the file auto-build.h in the gcc directory.
1160 mv auto-host.h ../auto-build.h
1161 cd ..
1162 rm -rf $tempdir
eaf4e618 1163 build_auto=auto-build.h
3b1b059c 1164 FORBUILD=../${build_subdir}
db81d74a 1165fi
06f0b04c 1166AC_SUBST(FORBUILD)
db81d74a 1167
eaf4e618 1168tm_file="${tm_file} defaults.h"
4977bab6
ZW
1169tm_p_file="${tm_p_file} tm-preds.h"
1170host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1171build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
49691411 1172# We don't want ansidecl.h in target files, write code there in ISO/GNU C.
b4862477
KG
1173# put this back in temporarily.
1174xm_file="ansidecl.h ${xm_file}"
0056a9b5 1175
34a86c2b
NN
1176# --------
1177# UNSORTED
1178# --------
1179
f1943b77 1180# Get the version trigger filename from the toplevel
75bffa71 1181if test "${with_gcc_version_trigger+set}" = set; then
f1943b77
MH
1182 gcc_version_trigger=$with_gcc_version_trigger
1183else
1184 gcc_version_trigger=${srcdir}/version.c
1185fi
75bffa71 1186changequote(,)dnl
022dae81 1187gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
8763704d 1188gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
cc1e60ea
JM
1189
1190# Compile in configure arguments.
8105825d 1191if test -f configargs.h ; then
cc1e60ea 1192 # Being re-configured.
022dae81 1193 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
cc1e60ea
JM
1194 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1195else
1196 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1197fi
1198cat > configargs.h <<EOF
1199/* Generated automatically. */
1200static const char configuration_arguments[] = "$gcc_config_arguments";
a6687d2b 1201static const char thread_model[] = "$thread_file";
7816bea0
DJ
1202
1203static const struct {
1204 const char *name, *value;
1205} configure_default_options[] = $configure_default_options;
cc1e60ea 1206EOF
75bffa71 1207changequote([,])dnl
46f18e7b 1208
ab87f8c8
JL
1209# Internationalization
1210PACKAGE=gcc
1211VERSION="$gcc_version"
ab87f8c8
JL
1212AC_SUBST(PACKAGE)
1213AC_SUBST(VERSION)
1214
dc6746e7 1215# Enable NLS support by default
ab87f8c8 1216AC_ARG_ENABLE(nls,
dc6746e7
PT
1217 [ --enable-nls use Native Language Support (default)],
1218 , enable_nls=yes)
1219
1220# if cross compiling, disable NLS support.
1221# It's not worth the trouble, at least for now.
1222
063a4b85 1223if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
dc6746e7
PT
1224 AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
1225 enable_nls=no
1226fi
ab87f8c8
JL
1227
1228AM_GNU_GETTEXT
ab87f8c8 1229
f4ab28e3
MK
1230# Windows32 Registry support for specifying GCC installation paths.
1231AC_ARG_ENABLE(win32-registry,
1232[ --disable-win32-registry
e8bec136
RO
1233 disable lookup of installation paths in the
1234 Registry on Windows hosts
1235 --enable-win32-registry enable registry lookup (default)
f4ab28e3 1236 --enable-win32-registry=KEY
e8bec136
RO
1237 use KEY instead of GCC version as the last portion
1238 of the registry key],,)
4e70264f
ZW
1239case $host_os in
1240 win32 | pe | cygwin* | mingw32* | uwin*)
f4ab28e3 1241AC_MSG_CHECKING(whether windows registry support is requested)
9dd53f2c 1242if test "x$enable_win32_registry" != xno; then
119d24d1
KG
1243 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1244[Define to 1 if installation paths should be looked up in Windows32
91029a29 1245 Registry. Ignored on non windows32 hosts.])
f4ab28e3 1246 AC_MSG_RESULT(yes)
4e70264f 1247 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
f4ab28e3
MK
1248else
1249 AC_MSG_RESULT(no)
1250fi
1251
1252# Check if user specified a different registry key.
9dd53f2c 1253case "x${enable_win32_registry}" in
f4ab28e3
MK
1254x | xyes)
1255 # default.
1256 gcc_cv_win32_registry_key="$VERSION"
1257 ;;
1258xno)
1259 # no registry lookup.
1260 gcc_cv_win32_registry_key=''
1261 ;;
1262*)
1263 # user-specified key.
1264 gcc_cv_win32_registry_key="$enable_win32_registry"
1265 ;;
1266esac
1267
9dd53f2c 1268if test "x$enable_win32_registry" != xno; then
f4ab28e3 1269 AC_MSG_CHECKING(registry key on windows hosts)
119d24d1
KG
1270 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1271 [Define to be the last portion of registry key on windows hosts.])
f4ab28e3
MK
1272 AC_MSG_RESULT($gcc_cv_win32_registry_key)
1273fi
4e70264f
ZW
1274;;
1275esac
f4ab28e3 1276
7fa10b25 1277# Get an absolute path to the GCC top-level source directory
1e6347d8 1278holddir=`${PWDCMD-pwd}`
7fa10b25 1279cd $srcdir
1e6347d8 1280topdir=`${PWDCMD-pwd}`
7fa10b25
RK
1281cd $holddir
1282
af5e4ada 1283# Conditionalize the makefile for this host machine.
94f42018
DE
1284# Make-host contains the concatenation of all host makefile fragments
1285# [there can be more than one]. This file is built by configure.frag.
1286host_overrides=Make-host
af5e4ada 1287dep_host_xmake_file=
94f42018
DE
1288for f in .. ${host_xmake_file}
1289do
75bffa71 1290 if test -f ${srcdir}/config/$f
94f42018
DE
1291 then
1292 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1293 fi
1294done
46f18e7b 1295
af5e4ada 1296# Conditionalize the makefile for this target machine.
94f42018
DE
1297# Make-target contains the concatenation of all host makefile fragments
1298# [there can be more than one]. This file is built by configure.frag.
1299target_overrides=Make-target
af5e4ada 1300dep_tmake_file=
94f42018
DE
1301for f in .. ${tmake_file}
1302do
75bffa71 1303 if test -f ${srcdir}/config/$f
94f42018
DE
1304 then
1305 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1306 fi
1307done
5891b37d 1308
34a86c2b
NN
1309symbolic_link='ln -s'
1310
af5e4ada
DE
1311# If the host doesn't support symlinks, modify CC in
1312# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1313# Otherwise, we can use "CC=$(CC)".
1314rm -f symtest.tem
61536478 1315if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
af5e4ada
DE
1316then
1317 cc_set_by_configure="\$(CC)"
5aa82ace 1318 quoted_cc_set_by_configure="\$(CC)"
af5e4ada 1319 stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
596151e1 1320 quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
af5e4ada 1321else
61536478
JL
1322 rm -f symtest.tem
1323 if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1324 then
1325 symbolic_link="cp -p"
1326 else
1327 symbolic_link="cp"
1328 fi
af5e4ada 1329 cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
5aa82ace 1330 quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
af5e4ada 1331 stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
596151e1 1332 quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
af5e4ada
DE
1333fi
1334rm -f symtest.tem
5891b37d 1335
af5e4ada 1336out_object_file=`basename $out_file .c`.o
5891b37d 1337
af5e4ada
DE
1338tm_file_list=
1339for f in $tm_file; do
64ccbc99 1340 case $f in
d02af173
ZW
1341 ansidecl.h )
1342 tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1343 defaults.h )
e2500fed 1344 tm_file_list="${tm_file_list} \$(srcdir)/$f" ;;
64ccbc99
KG
1345 *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1346 esac
af5e4ada 1347done
46f18e7b 1348
11642c3a
ZW
1349tm_p_file_list=
1350for f in $tm_p_file; do
4977bab6
ZW
1351 case $f in
1352 tm-preds.h )
1353 tm_p_file_list="${tm_p_file_list} $f" ;;
1354 *) tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f" ;;
1355 esac
11642c3a
ZW
1356done
1357
af5e4ada
DE
1358host_xm_file_list=
1359for f in $host_xm_file; do
64ccbc99 1360 case $f in
d02af173
ZW
1361 ansidecl.h )
1362 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
e2500fed 1363 auto-host.h )
64ccbc99 1364 host_xm_file_list="${host_xm_file_list} $f" ;;
e2500fed
GK
1365 defaults.h )
1366 host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
64ccbc99
KG
1367 *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1368 esac
af5e4ada
DE
1369done
1370
1371build_xm_file_list=
1372for f in $build_xm_file; do
64ccbc99 1373 case $f in
d02af173
ZW
1374 ansidecl.h )
1375 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
e2500fed 1376 auto-build.h | auto-host.h )
64ccbc99 1377 build_xm_file_list="${build_xm_file_list} $f" ;;
e2500fed
GK
1378 defaults.h )
1379 host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
64ccbc99
KG
1380 *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1381 esac
af5e4ada 1382done
46f18e7b 1383
a078a589
ZW
1384# Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1385# Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1386CROSS= AC_SUBST(CROSS)
1387ALL=all.internal AC_SUBST(ALL)
1388SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
75bffa71 1389if test x$host != x$target
af5e4ada 1390then
a078a589
ZW
1391 CROSS="-DCROSS_COMPILE"
1392 ALL=all.cross
1393 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
343f59d9
AM
1394 case "$host","$target" in
1395 i?86-*-*,x86_64-*-* \
1396 | powerpc*-*-*,powerpc64*-*-*)
1397 CROSS="$CROSS -DNATIVE_CROSS" ;;
1398 esac
7a615b25
AO
1399elif test "x$TARGET_SYSTEM_ROOT" != x; then
1400 # This is just $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)
1401 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
af5e4ada 1402fi
46f18e7b 1403
b39d221a
EC
1404# If this is a cross-compiler that does not
1405# have its own set of headers then define
1406# inhibit_libc
1407
dc06db20
R
1408# If this is using newlib, without having the headers available now,
1409# then define inhibit_libc in LIBGCC2_CFLAGS.
fecd6201
ZW
1410# This prevents libgcc2 from containing any code which requires libc
1411# support.
b39d221a 1412inhibit_libc=
dc06db20
R
1413if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1414 test x$with_newlib = xyes ; } &&
1415 test "x$with_headers" = x ; then
b39d221a 1416 inhibit_libc=-Dinhibit_libc
b39d221a
EC
1417fi
1418AC_SUBST(inhibit_libc)
1419
a078a589
ZW
1420# When building gcc with a cross-compiler, we need to adjust things so
1421# that the generator programs are still built with the native compiler.
1422# Also, we cannot run fixincludes or fix-header.
a078a589
ZW
1423
1424# These are the normal (build=host) settings:
5c35940c
NN
1425BUILD_PREFIX= AC_SUBST(BUILD_PREFIX)
1426BUILD_PREFIX_1=ignore- AC_SUBST(BUILD_PREFIX_1)
4977bab6
ZW
1427BUILD_CC='$(CC)' AC_SUBST(BUILD_CC)
1428BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
a078a589
ZW
1429
1430STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
1431STMP_FIXPROTO=stmp-fixproto AC_SUBST(STMP_FIXPROTO)
1432
1433# And these apply if build != host.
75bffa71 1434if test x$build != x$host
af5e4ada 1435then
5c35940c
NN
1436 BUILD_PREFIX=build-
1437 BUILD_PREFIX_1=build-
4977bab6
ZW
1438 BUILD_CC='$(CC_FOR_BUILD)'
1439 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
a078a589 1440
7a615b25
AO
1441 if test "x$TARGET_SYSTEM_ROOT" = x; then
1442 STMP_FIXINC=
1443 STMP_FIXPROTO=
1444 fi
af5e4ada 1445fi
46f18e7b 1446
ae3a15bb
DE
1447# Expand extra_headers to include complete path.
1448# This substitutes for lots of t-* files.
1449extra_headers_list=
75bffa71 1450if test "x$extra_headers" = x
ae3a15bb
DE
1451then true
1452else
29f7a208 1453 # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
ae3a15bb
DE
1454 for file in $extra_headers;
1455 do
29f7a208 1456 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
ae3a15bb
DE
1457 done
1458fi
1459
af5e4ada 1460# Add a definition of USE_COLLECT2 if system wants one.
34a86c2b
NN
1461case $use_collect2 in
1462 no) use_collect2= ;;
1463 "") ;;
1464 *)
1465 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1466 xm_defines="${xm_defines} USE_COLLECT2"
1467 ;;
1468esac
af5e4ada 1469
d869a8c4
NN
1470# Identify the assembler which will work hand-in-glove with the newly
1471# built GCC, so that we can examine its features. This is the assembler
1472# which will be driven by the driver program.
1473#
1474# If build != host, and we aren't building gas in-tree, we identify a
1475# build->target assembler and hope that it will have the same features
1476# as the host->target assembler we'll be using.
981d4858 1477AC_MSG_CHECKING(what assembler to use)
34a86c2b 1478in_tree_gas=no
9e423e6d 1479gcc_cv_as=
981d4858
JM
1480gcc_cv_gas_major_version=
1481gcc_cv_gas_minor_version=
a2f319ea 1482gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
3ccc3a56
AO
1483if test -x "$DEFAULT_ASSEMBLER"; then
1484 gcc_cv_as="$DEFAULT_ASSEMBLER"
1485elif test -x "$AS"; then
1486 gcc_cv_as="$AS"
ab339d62 1487elif test -x as$host_exeext; then
9e423e6d
JW
1488 # Build using assembler in the current directory.
1489 gcc_cv_as=./as$host_exeext
34a86c2b
NN
1490elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1491 && test -f ../gas/Makefile; then
ad9c4d9f
NN
1492 # Single tree build which includes gas.
1493 in_tree_gas=yes
1494 _gcc_COMPUTE_GAS_VERSION
f9c1196a
ZW
1495 rm -f as$host_exeext
1496 $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
981d4858
JM
1497fi
1498
534d0cc0 1499if test "x$gcc_cv_as" = x; then
779243f7
JL
1500 # Search the same directories that the installed compiler will
1501 # search. Else we may find the wrong assembler and lose. If we
1502 # do not find a suitable assembler binary, then try the user's
1503 # path.
1504 #
1505 # Also note we have to check MD_EXEC_PREFIX before checking the
1506 # user's path. Unfortunately, there is no good way to get at the
1507 # value of MD_EXEC_PREFIX here. So we do a brute force search
1508 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
1509 # to be fixed as part of the make/configure rewrite too.
1510
1511 if test "x$exec_prefix" = xNONE; then
1512 if test "x$prefix" = xNONE; then
1513 test_prefix=/usr/local
1514 else
1515 test_prefix=$prefix
1516 fi
1517 else
1518 test_prefix=$exec_prefix
1519 fi
1520
1521 # If the loop below does not find an assembler, then use whatever
1522 # one we can find in the users's path.
1523 # user's path.
55a2ea2a
AM
1524 if test "x$program_prefix" != xNONE; then
1525 gcc_cv_as=${program_prefix}as$host_exeext
1526 else
1527 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1528 fi
1529
1530 test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1531 $test_prefix/lib/gcc-lib/$target_alias \
1532 /usr/lib/gcc/$target_alias/$gcc_version \
1533 /usr/lib/gcc/$target_alias \
1534 $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1535 $test_prefix/$target_alias/bin"
1536
1537 if test x$host = x$target; then
1538 test_dirs="$test_dirs \
779243f7
JL
1539 /usr/libexec \
1540 /usr/ccs/gcc \
1541 /usr/ccs/bin \
1542 /udk/usr/ccs/bin \
1543 /bsd43/usr/lib/cmplrs/cc \
1544 /usr/cross64/usr/bin \
1545 /usr/lib/cmplrs/cc \
1546 /sysv/usr/lib/cmplrs/cc \
1547 /svr4/usr/lib/cmplrs/cc \
1548 /usr/bin"
55a2ea2a 1549 fi
779243f7
JL
1550
1551 for dir in $test_dirs; do
55a2ea2a 1552 if test -x $dir/as$host_exeext; then
779243f7
JL
1553 gcc_cv_as=$dir/as$host_exeext
1554 break;
1555 fi
1556 done
9e423e6d 1557fi
34a86c2b
NN
1558case $in_tree_gas in
1559 yes)
1560 AC_MSG_RESULT("newly built gas")
1561 ;;
1562 no)
1563 AC_MSG_RESULT($gcc_cv_as)
1564 ;;
1565esac
981d4858 1566
d869a8c4
NN
1567# Identify the linker which will work hand-in-glove with the newly
1568# built GCC, so that we can examine its features. This is the linker
1569# which will be driven by the driver program.
1570#
1571# If build != host, and we aren't building gas in-tree, we identify a
1572# build->target linker and hope that it will have the same features
1573# as the host->target linker we'll be using.
275b60d6 1574AC_MSG_CHECKING(what linker to use)
34a86c2b 1575in_tree_ld=no
275b60d6
JJ
1576gcc_cv_ld=
1577gcc_cv_gld_major_version=
1578gcc_cv_gld_minor_version=
1579gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1580gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1581if test -x "$DEFAULT_LINKER"; then
1582 gcc_cv_ld="$DEFAULT_LINKER"
1583elif test -x "$LD"; then
1584 gcc_cv_ld="$LD"
f9c1196a 1585elif test -x collect-ld$host_exeext; then
275b60d6 1586 # Build using linker in the current directory.
f9c1196a 1587 gcc_cv_ld=./collect-ld$host_exeext
34a86c2b
NN
1588elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1589 && test -f ../ld/Makefile; then
275b60d6 1590 # Single tree build which includes ld.
34a86c2b 1591 in_tree_ld=yes
275b60d6
JJ
1592 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
1593 do
1594changequote(,)dnl
1595 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1596changequote([,])dnl
1597 if test x$gcc_cv_gld_version != x; then
1598 break
1599 fi
1600 done
1601changequote(,)dnl
1602 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1603 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1604changequote([,])dnl
f9c1196a
ZW
1605 rm -f collect-ld$host_exeext
1606 $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext \
1607 2>/dev/null
275b60d6
JJ
1608fi
1609
534d0cc0 1610if test "x$gcc_cv_ld" = x; then
275b60d6
JJ
1611 # Search the same directories that the installed compiler will
1612 # search. Else we may find the wrong linker and lose. If we
1613 # do not find a suitable linker binary, then try the user's
1614 # path.
1615 #
1616 # Also note we have to check MD_EXEC_PREFIX before checking the
1617 # user's path. Unfortunately, there is no good way to get at the
1618 # value of MD_EXEC_PREFIX here. So we do a brute force search
1619 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
1620 # to be fixed as part of the make/configure rewrite too.
1621
1622 if test "x$exec_prefix" = xNONE; then
1623 if test "x$prefix" = xNONE; then
1624 test_prefix=/usr/local
1625 else
1626 test_prefix=$prefix
1627 fi
1628 else
1629 test_prefix=$exec_prefix
1630 fi
1631
1632 # If the loop below does not find an linker, then use whatever
1633 # one we can find in the users's path.
1634 # user's path.
55a2ea2a
AM
1635 if test "x$program_prefix" != xNONE; then
1636 gcc_cv_ld=${program_prefix}ld$host_exeext
1637 else
1638 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1639 fi
1640
1641 test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1642 $test_prefix/lib/gcc-lib/$target_alias \
1643 /usr/lib/gcc/$target_alias/$gcc_version \
1644 /usr/lib/gcc/$target_alias \
1645 $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1646 $test_prefix/$target_alias/bin"
1647
1648 if test x$host = x$target; then
1649 test_dirs="$test_dirs \
275b60d6
JJ
1650 /usr/libexec \
1651 /usr/ccs/gcc \
1652 /usr/ccs/bin \
1653 /udk/usr/ccs/bin \
1654 /bsd43/usr/lib/cmplrs/cc \
1655 /usr/cross64/usr/bin \
1656 /usr/lib/cmplrs/cc \
1657 /sysv/usr/lib/cmplrs/cc \
1658 /svr4/usr/lib/cmplrs/cc \
1659 /usr/bin"
55a2ea2a 1660 fi
275b60d6
JJ
1661
1662 for dir in $test_dirs; do
55a2ea2a 1663 if test -x $dir/ld$host_exeext; then
275b60d6
JJ
1664 gcc_cv_ld=$dir/ld$host_exeext
1665 break;
1666 fi
1667 done
1668fi
34a86c2b
NN
1669case $in_tree_ld in
1670 yes)
1671 AC_MSG_RESULT("newly built ld")
1672 ;;
1673 no)
1674 AC_MSG_RESULT($gcc_cv_ld)
1675 ;;
1676esac
275b60d6 1677
981d4858 1678# Figure out what nm we will be using.
f9c1196a 1679gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
981d4858 1680AC_MSG_CHECKING(what nm to use)
f9c1196a 1681in_tree_nm=no
981d4858
JM
1682if test -x nm$host_exeext; then
1683 gcc_cv_nm=./nm$host_exeext
f9c1196a
ZW
1684elif test -f $gcc_cv_binutils_srcdir/configure.in \
1685 && test -f ../binutils/Makefile; then
1686 # Single tree build which includes binutils.
1687 in_tree_nm=yes
1688 gcc_cv_nm=./nm$host_exeext
1689 rm -f nm$host_exeext
1690 $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
534d0cc0
AM
1691elif test "x$program_prefix" != xNONE; then
1692 gcc_cv_nm=${program_prefix}nm$host_exeext
1693else
1694 gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
981d4858 1695fi
f9c1196a
ZW
1696case $in_tree_nm in
1697 yes) AC_MSG_RESULT("newly built nm") ;;
1698 no) AC_MSG_RESULT($gcc_cv_nm) ;;
1699esac
981d4858 1700
3cae5780
AS
1701# Figure out what objdump we will be using.
1702AC_MSG_CHECKING(what objdump to use)
f9c1196a 1703in_tree_objdump=no
3cae5780
AS
1704if test -x objdump$host_exeext; then
1705 gcc_cv_objdump=./objdump$host_exeext
f9c1196a
ZW
1706elif test -f $gcc_cv_binutils_srcdir/configure.in \
1707 && test -f ../binutils/Makefile; then
1708 # Single tree build which includes binutils.
1709 in_tree_objdump=yes
1710 gcc_cv_objdump=./objdump$host_exeext
1711 rm -f objdump$host_exeext
1712 $symbolic_link ../binutils/objdump$host_exeext \
1713 objdump$host_exeext 2>/dev/null
534d0cc0
AM
1714elif test "x$program_prefix" != xNONE; then
1715 gcc_cv_objdump=${program_prefix}objdump$host_exeext
1716else
f9c1196a
ZW
1717 gcc_cv_objdump=`echo objdump | \
1718 sed ${program_transform_name}`$host_exeext
3cae5780 1719fi
f9c1196a
ZW
1720case $in_tree_objdump in
1721 yes) AC_MSG_RESULT("newly built objdump") ;;
1722 no) AC_MSG_RESULT($gcc_cv_objdump) ;;
1723esac
3cae5780 1724
981d4858
JM
1725# Figure out what assembler alignment features are present.
1726AC_MSG_CHECKING(assembler alignment features)
9d147085 1727gcc_cv_as_alignment_features=none
34a86c2b 1728if test $in_tree_gas = yes; then
ad9c4d9f
NN
1729 # Gas version 2.6 and later support for .balign and .p2align.
1730 gcc_GAS_VERSION_GTE_IFELSE(2,6,0,[
1731 gcc_cv_as_alignment_features=".balign and .p2align"
1732 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1733 ])
1734 # Gas version 2.8 and later support specifying the maximum
1735 # bytes to skip when using .p2align.
1736 gcc_GAS_VERSION_GTE_IFELSE(2,8,0,[
1737 gcc_cv_as_alignment_features=".p2align including maximum skip"
1738 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1739 ])
981d4858 1740elif test x$gcc_cv_as != x; then
00ccc16d
JL
1741 # Check if we have .balign and .p2align
1742 echo ".balign 4" > conftest.s
1743 echo ".p2align 2" >> conftest.s
1744 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1745 gcc_cv_as_alignment_features=".balign and .p2align"
1746 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1747 fi
1748 rm -f conftest.s conftest.o
9e423e6d
JW
1749 # Check if specifying the maximum bytes to skip when
1750 # using .p2align is supported.
1751 echo ".p2align 4,,7" > conftest.s
1752 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1753 gcc_cv_as_alignment_features=".p2align including maximum skip"
1754 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1755 fi
1756 rm -f conftest.s conftest.o
1757fi
1758AC_MSG_RESULT($gcc_cv_as_alignment_features)
1759
d1accaa3 1760AC_MSG_CHECKING(assembler subsection support)
9d147085 1761gcc_cv_as_subsections=no
34a86c2b 1762if test $in_tree_gas = yes ; then
ad9c4d9f
NN
1763 gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[
1764 if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1765 gcc_cv_as_subsections="working .subsection -1"
1766 fi
1767 ])
981d4858 1768elif test x$gcc_cv_as != x; then
d1accaa3
JJ
1769 # Check if we have .subsection
1770 echo ".subsection 1" > conftest.s
1771 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1772 gcc_cv_as_subsections=".subsection"
d1accaa3
JJ
1773 if test x$gcc_cv_nm != x; then
1774 cat > conftest.s <<EOF
1775conftest_label1: .word 0
1776.subsection -1
1777conftest_label2: .word 0
1778.previous
1779EOF
1780 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1781 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1782 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1b015bec
AO
1783 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1784 :
1785 else
d1accaa3 1786 gcc_cv_as_subsections="working .subsection -1"
d1accaa3
JJ
1787 fi
1788 fi
1789 fi
1790 fi
1791 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1792fi
981d4858
JM
1793if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1794 AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1795[Define if your assembler supports .subsection and .subsection -1 starts
1796 emitting at the beginning of your section.])
1797fi
d1accaa3
JJ
1798AC_MSG_RESULT($gcc_cv_as_subsections)
1799
12822146 1800AC_MSG_CHECKING(assembler weak support)
9d147085 1801gcc_cv_as_weak=no
34a86c2b 1802if test $in_tree_gas = yes ; then
ad9c4d9f 1803 gcc_GAS_VERSION_GTE_IFELSE(2,2,0,[
981d4858 1804 gcc_cv_as_weak="yes"
ad9c4d9f 1805 ])
981d4858 1806elif test x$gcc_cv_as != x; then
12822146
JL
1807 # Check if we have .weak
1808 echo " .weak foobar" > conftest.s
1809 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
12822146
JL
1810 gcc_cv_as_weak="yes"
1811 fi
1812 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1813fi
981d4858
JM
1814if test x"$gcc_cv_as_weak" = xyes; then
1815 AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1816fi
12822146
JL
1817AC_MSG_RESULT($gcc_cv_as_weak)
1818
6a9c5260 1819AC_MSG_CHECKING(assembler hidden support)
9d147085 1820gcc_cv_as_hidden=no
34a86c2b 1821if test $in_tree_gas = yes ; then
ad9c4d9f
NN
1822 gcc_GAS_VERSION_GTE_IFELSE(2,12,1,[
1823 if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1824 gcc_cv_as_hidden="yes"
1825 fi
1826 ])
981d4858 1827elif test x$gcc_cv_as != x; then
6a9c5260
UD
1828 # Check if we have .hidden
1829 echo " .hidden foobar" > conftest.s
1830 echo "foobar:" >> conftest.s
1831 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6a9c5260
UD
1832 gcc_cv_as_hidden="yes"
1833 fi
1834 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
c72931a6
RH
1835
1836 # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1837 # This is irritatingly difficult to feature test for. Look for
1838 # the date string after the version number.
1839 ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1840 if echo "$ld_ver" | grep GNU > /dev/null; then
1841changequote(,)dnl
96ef4bdc
MM
1842 ld_vers=`echo $ld_ver | sed -n 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\)\([ ].*\|\)$,\1,p'`
1843 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'`
c72931a6 1844 if test 0"$ld_date" -lt 20020404; then
4832c9e1
JJ
1845 if test -n "$ld_date"; then
1846 # If there was date string, but was earlier than 2002-04-04, fail
1847 gcc_cv_as_hidden="no"
1848 elif test -z "$ld_vers"; then
1849 # If there was no date string nor ld version number, something is wrong
1850 gcc_cv_as_hidden="no"
1851 else
1852 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
1853 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
1854 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
1855 test -z "$ld_vers_patch" && ld_vers_patch=0
1856 if test "$ld_vers_major" -lt 2; then
1857 gcc_cv_as_hidden="no"
1858 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
1859 gcc_cv_as_hidden="no"
1860 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \
1861 -a "$ld_vers_patch" -eq 0; then
1862 gcc_cv_as_hidden="no"
1863 fi
1864 fi
c72931a6 1865 fi
4832c9e1 1866changequote([,])dnl
c72931a6 1867 fi
6a9c5260 1868fi
789b7de5 1869case "$target" in
027faee7 1870 mips-sgi-irix6*)
789b7de5
RO
1871 if test x"$gnu_ld_flag" = x"no"; then
1872 # Even if using gas with .hidden support, the resulting object files
027faee7
AO
1873 # cannot be linked with the IRIX 6 O32 linker. With the N32 and
1874 # N64 linkers, the problem is that the linker refuses to accept
1875 # -call_shared (passed by default to the linker) and -r (used to
1876 # link the object file generated without .hidden directives with
1877 # one that hides symbols), so we also lose.
6d07784a 1878 gcc_cv_as_hidden=no
789b7de5
RO
1879 fi
1880 ;;
1881esac
6d07784a
RO
1882if test x"$gcc_cv_as_hidden" = xyes; then
1883 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1884 [Define if your assembler supports .hidden.])
1885fi
1886AC_MSG_RESULT($gcc_cv_as_hidden)
1887libgcc_visibility=$gcc_cv_as_hidden
9e944a16 1888AC_SUBST(libgcc_visibility)
6a9c5260 1889
b7460f24 1890AC_MSG_CHECKING(assembler leb128 support)
fbe42b1b 1891gcc_cv_as_leb128=no
34a86c2b 1892if test $in_tree_gas = yes ; then
ad9c4d9f
NN
1893 gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
1894 if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1895 gcc_cv_as_leb128="yes"
1896 fi
1897 ])
b7460f24
RH
1898elif test x$gcc_cv_as != x; then
1899 # Check if we have .[us]leb128, and support symbol arithmetic with it.
1900 cat > conftest.s <<EOF
1901 .data
1902 .uleb128 L2 - L1
1903L1:
1904 .uleb128 1280
1905 .sleb128 -1010
1906L2:
1907EOF
1908 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
78e766a0
RH
1909 gcc_cv_as_leb128="yes"
1910
1911 # GAS versions before 2.11 do not support uleb128,
1912 # despite appearing to.
1913 # ??? There exists an elf-specific test that will crash
1914 # the assembler. Perhaps it's better to figure out whether
1915 # arbitrary sections are supported and try the test.
1916 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1917 if echo "$as_ver" | grep GNU > /dev/null; then
78e766a0 1918changequote(,)dnl
5fed851d 1919 as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
0461a052 1920 as_major=`echo $as_ver | sed 's/\..*//'`
3d399d67 1921 as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
78e766a0
RH
1922changequote([,])dnl
1923 if test $as_major -eq 2 -a $as_minor -lt 11; then
1924 gcc_cv_as_leb128="no"
1925 fi
fbe42b1b 1926 fi
b7460f24
RH
1927 fi
1928 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1929fi
1930if test x"$gcc_cv_as_leb128" = xyes; then
1931 AC_DEFINE(HAVE_AS_LEB128, 1,
1932 [Define if your assembler supports .uleb128.])
1933fi
1934AC_MSG_RESULT($gcc_cv_as_leb128)
1935
c64688ae
RH
1936AC_MSG_CHECKING(assembler eh_frame optimization)
1937gcc_cv_as_eh_frame=no
34a86c2b 1938if test $in_tree_gas = yes ; then
ad9c4d9f
NN
1939 gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
1940 if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1941 gcc_cv_as_eh_frame="yes"
1942 fi
1943 ])
c64688ae
RH
1944elif test x$gcc_cv_as != x; then
1945 # Check if this is GAS.
41948db5
SS
1946 as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1947 rm -f a.out 2> /dev/null
c64688ae
RH
1948 if echo "$as_ver" | grep GNU > /dev/null; then
1949 # Versions up to and including 2.11.0 may mis-optimize
1950 # .eh_frame data. Try something.
1951 cat > conftest.s <<EOF
1952 .text
1953.LFB1:
1954 .4byte 0
1955.L1:
1956 .4byte 0
1957.LFE1:
1958 .section .eh_frame,"aw",@progbits
1959__FRAME_BEGIN__:
1960 .4byte .LECIE1-.LSCIE1
1961.LSCIE1:
1962 .4byte 0x0
1963 .byte 0x1
1964 .ascii "z\0"
1965 .byte 0x1
1966 .byte 0x78
1967 .byte 0x1a
1968 .byte 0x0
1969 .byte 0x4
1970 .4byte 1
1971 .p2align 1
1972.LECIE1:
1973.LSFDE1:
1974 .4byte .LEFDE1-.LASFDE1
1975.LASFDE1:
1976 .4byte .LASFDE1-__FRAME_BEGIN__
1977 .4byte .LFB1
1978 .4byte .LFE1-.LFB1
1979 .byte 0x4
1980 .4byte .LFE1-.LFB1
1981 .byte 0x4
1982 .4byte .L1-.LFB1
1983.LEFDE1:
1984EOF
01efb963 1985 cat > conftest.lit <<EOF
c64688ae
RH
1986 0000 10000000 00000000 017a0001 781a0004 .........z..x...
1987 0010 01000000 12000000 18000000 00000000 ................
1988 0020 08000000 04080000 0044 .........D
01efb963
AS
1989EOF
1990 cat > conftest.big <<EOF
1991 0000 00000010 00000000 017a0001 781a0004 .........z..x...
1992 0010 00000001 00000012 00000018 00000000 ................
1993 0020 00000008 04000000 0844 .........D
c64688ae
RH
1994EOF
1995 # If the assembler didn't choke, and we can objdump,
1996 # and we got the correct data, then succeed.
1997 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
3cae5780 1998 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
c64688ae 1999 | tail -3 > conftest.got \
01efb963
AS
2000 && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
2001 || cmp conftest.big conftest.got > /dev/null 2>&1; }
c64688ae
RH
2002 then
2003 gcc_cv_as_eh_frame="yes"
2004 else
2005 gcc_cv_as_eh_frame="bad"
2006 if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
2007 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2008 [Define if your assembler mis-optimizes .eh_frame data.])
2009 fi
2010 fi
2011 fi
2012 rm -f conftest.*
2013fi
2014AC_MSG_RESULT($gcc_cv_as_eh_frame)
2015
201556f0
JJ
2016AC_MSG_CHECKING(assembler section merging support)
2017gcc_cv_as_shf_merge=no
34a86c2b 2018if test $in_tree_gas = yes ; then
ad9c4d9f
NN
2019 gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
2020 if grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
2021 gcc_cv_as_shf_merge=yes
2022 fi
2023 ])
201556f0
JJ
2024elif test x$gcc_cv_as != x; then
2025 # Check if we support SHF_MERGE sections
2026 echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
a8b7afb9 2027 if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
201556f0
JJ
2028 gcc_cv_as_shf_merge=yes
2029 fi
2030 rm -f conftest.s conftest.o
2031fi
2032if test x"$gcc_cv_as_shf_merge" = xyes; then
2033 AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
2034[Define if your assembler supports marking sections with SHF_MERGE flag.])
2035fi
2036AC_MSG_RESULT($gcc_cv_as_shf_merge)
2037
f996902d
RH
2038AC_MSG_CHECKING(assembler thread-local storage support)
2039gcc_cv_as_tls=no
2040conftest_s=
2041tls_first_major=
2042tls_first_minor=
9739c90c 2043tls_as_opt=
f996902d
RH
2044case "$target" in
2045changequote(,)dnl
6f9b006d
RH
2046 alpha*-*-*)
2047 conftest_s='
2048 .section ".tdata","awT",@progbits
2049foo: .long 25
2050 .text
2051 ldq $27,__tls_get_addr($29) !literal!1
2052 lda $16,foo($29) !tlsgd!1
2053 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2054 ldq $27,__tls_get_addr($29) !literal!2
2055 lda $16,foo($29) !tlsldm!2
2056 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2057 ldq $1,foo($29) !gotdtprel
2058 ldah $2,foo($29) !dtprelhi
2059 lda $3,foo($2) !dtprello
2060 lda $4,foo($29) !dtprel
2061 ldq $1,foo($29) !gottprel
2062 ldah $2,foo($29) !tprelhi
2063 lda $3,foo($2) !tprello
2064 lda $4,foo($29) !tprel'
2065 tls_first_major=2
2066 tls_first_minor=13
2067 ;;
f996902d
RH
2068 i[34567]86-*-*)
2069changequote([,])dnl
2070 conftest_s='
2071 .section ".tdata","awT",@progbits
2072foo: .long 25
2073 .text
2074 movl %gs:0, %eax
2075 leal foo@TLSGD(,%ebx,1), %eax
2076 leal foo@TLSLDM(%ebx), %eax
2077 leal foo@DTPOFF(%eax), %edx
2078 movl foo@GOTTPOFF(%ebx), %eax
2079 subl foo@GOTTPOFF(%ebx), %eax
75d38379
JJ
2080 addl foo@GOTNTPOFF(%ebx), %eax
2081 movl foo@INDNTPOFF, %eax
f996902d
RH
2082 movl $foo@TPOFF, %eax
2083 subl $foo@TPOFF, %eax
2084 leal foo@NTPOFF(%ecx), %eax'
2085 tls_first_major=2
75d38379
JJ
2086 tls_first_minor=14
2087 ;;
2088 x86_64-*-*)
2089 conftest_s='
2090 .section ".tdata","awT",@progbits
2091foo: .long 25
2092 .text
2093 movq %fs:0, %rax
2094 leaq foo@TLSGD(%rip), %rdi
2095 leaq foo@TLSLD(%rip), %rdi
2096 leaq foo@DTPOFF(%rax), %rdx
2097 movq foo@GOTTPOFF(%rip), %rax
2098 movq $foo@TPOFF, %rax'
2099 tls_first_major=2
2100 tls_first_minor=14
f996902d 2101 ;;
7b6e506e
RH
2102 ia64-*-*)
2103 conftest_s='
2104 .section ".tdata","awT",@progbits
2105foo: data8 25
2106 .text
2107 addl r16 = @ltoff(@dtpmod(foo#)), gp
2108 addl r17 = @ltoff(@dtprel(foo#)), gp
2109 addl r18 = @ltoff(@tprel(foo#)), gp
2110 addl r19 = @dtprel(foo#), gp
2111 adds r21 = @dtprel(foo#), r13
2112 movl r23 = @dtprel(foo#)
2113 addl r20 = @tprel(foo#), gp
2114 adds r22 = @tprel(foo#), r13
2115 movl r24 = @tprel(foo#)'
2116 tls_first_major=2
2117 tls_first_minor=13
2118 ;;
c4501e62
JJ
2119 powerpc-*-*)
2120 conftest_s='
2121 .section ".tdata","awT",@progbits
2122 .align 2
2123ld0: .space 4
2124ld1: .space 4
2125x1: .space 4
2126x2: .space 4
2127x3: .space 4
2128 .text
2129 addi 3,31,ld0@got@tlsgd
2130 bl __tls_get_addr
2131 addi 3,31,x1@got@tlsld
2132 bl __tls_get_addr
2133 addi 9,3,x1@dtprel
2134 addis 9,3,x2@dtprel@ha
2135 addi 9,9,x2@dtprel@l
2136 lwz 9,x3@got@tprel(31)
2137 add 9,9,x@tls
2138 addi 9,2,x1@tprel
2139 addis 9,2,x2@tprel@ha
2140 addi 9,9,x2@tprel@l'
2141 tls_first_major=2
2142 tls_first_minor=14
9739c90c 2143 tls_as_opt=-a32
c4501e62
JJ
2144 ;;
2145 powerpc64-*-*)
2146 conftest_s='
2147 .section ".tdata","awT",@progbits
2148 .align 3
2149ld0: .space 8
2150ld1: .space 8
2151x1: .space 8
2152x2: .space 8
2153x3: .space 8
2154 .text
2155 addi 3,2,ld0@got@tlsgd
2156 bl .__tls_get_addr
2157 nop
2158 addi 3,2,ld1@toc
2159 bl .__tls_get_addr
2160 nop
2161 addi 3,2,x1@got@tlsld
2162 bl .__tls_get_addr
2163 nop
2164 addi 9,3,x1@dtprel
2165 bl .__tls_get_addr
2166 nop
2167 addis 9,3,x2@dtprel@ha
2168 addi 9,9,x2@dtprel@l
2169 bl .__tls_get_addr
2170 nop
2171 ld 9,x3@got@dtprel(2)
2172 add 9,9,3
2173 bl .__tls_get_addr
2174 nop'
2175 tls_first_major=2
2176 tls_first_minor=14
9739c90c 2177 tls_as_opt=-a64
c4501e62 2178 ;;
fd3cd001
UW
2179 s390-*-*)
2180 conftest_s='
2181 .section ".tdata","awT",@progbits
2182foo: .long 25
2183 .text
2184 .long foo@TLSGD
2185 .long foo@TLSLDM
2186 .long foo@DTPOFF
2187 .long foo@NTPOFF
2188 .long foo@GOTNTPOFF
2189 .long foo@INDNTPOFF
2190 l %r1,foo@GOTNTPOFF(%r12)
2191 l %r1,0(%r1):tls_load:foo
2192 bas %r14,0(%r1,%r13):tls_gdcall:foo
2193 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2194 tls_first_major=2
2195 tls_first_minor=14
9739c90c 2196 tls_as_opt=-m31
fd3cd001
UW
2197 ;;
2198 s390x-*-*)
2199 conftest_s='
2200 .section ".tdata","awT",@progbits
2201foo: .long 25
2202 .text
2203 .quad foo@TLSGD
2204 .quad foo@TLSLDM
2205 .quad foo@DTPOFF
2206 .quad foo@NTPOFF
2207 .quad foo@GOTNTPOFF
2208 lg %r1,foo@GOTNTPOFF(%r12)
2209 larl %r1,foo@INDNTPOFF
2210 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2211 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2212 tls_first_major=2
2213 tls_first_minor=14
9739c90c 2214 tls_as_opt="-m64 -Aesame"
fd3cd001 2215 ;;
f996902d
RH
2216esac
2217if test -z "$tls_first_major"; then
2218 :
34a86c2b 2219elif test $in_tree_gas = yes ; then
ad9c4d9f 2220 gcc_GAS_VERSION_GTE_IFELSE($tls_first_major,$tls_first_minor,0,[
f996902d 2221 gcc_cv_as_tls=yes
ad9c4d9f 2222 ])
f996902d
RH
2223elif test x$gcc_cv_as != x; then
2224 echo "$conftest_s" > conftest.s
9739c90c 2225 if $gcc_cv_as $tls_as_opt --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
f996902d
RH
2226 then
2227 gcc_cv_as_tls=yes
2228 fi
2229 rm -f conftest.s conftest.o
2230fi
2231if test "$gcc_cv_as_tls" = yes; then
2232 AC_DEFINE(HAVE_AS_TLS, 1,
2233 [Define if your assembler supports thread-local storage.])
2234fi
2235AC_MSG_RESULT($gcc_cv_as_tls)
2236
275b60d6 2237case "$target" in
3a37b08e
RH
2238 # All TARGET_ABI_OSF targets.
2239 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2240 AC_CACHE_CHECK([assembler supports explicit relocations],
2241 gcc_cv_as_explicit_relocs, [
2242 gcc_cv_as_explicit_relocs=unknown
34a86c2b 2243 if test $in_tree_gas = yes ; then
ad9c4d9f 2244 gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[
3a37b08e 2245 gcc_cv_as_explicit_relocs=yes
ad9c4d9f 2246 ])
3a37b08e
RH
2247 elif test x$gcc_cv_as != x; then
2248 cat > conftest.s << 'EOF'
2249 .set nomacro
2250 .text
2251 extbl $3, $2, $3 !lituse_bytoff!1
2252 ldq $2, a($29) !literal!1
2253 ldq $4, b($29) !literal!2
2254 ldq_u $3, 0($2) !lituse_base!1
2255 ldq $27, f($29) !literal!5
2256 jsr $26, ($27), f !lituse_jsr!5
2257 ldah $29, 0($26) !gpdisp!3
2258 lda $0, c($29) !gprel
2259 ldah $1, d($29) !gprelhigh
2260 lda $1, d($1) !gprellow
2261 lda $29, 0($29) !gpdisp!3
2262EOF
2263 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2264 gcc_cv_as_explicit_relocs=yes
2265 else
2266 gcc_cv_as_explicit_relocs=no
2267 fi
2268 rm -f conftest.s conftest.o
2269 fi
2270 ])
2271 if test "x$gcc_cv_as_explicit_relocs" = xyes; then
2272 AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2273 [Define if your assembler supports explicit relocations.])
2274 fi
2275 ;;
1cb36a98 2276 sparc*-*-*)
5b68c389
AO
2277 AC_CACHE_CHECK([assembler .register pseudo-op support],
2278 gcc_cv_as_register_pseudo_op, [
2279 gcc_cv_as_register_pseudo_op=unknown
2280 if test x$gcc_cv_as != x; then
2281 # Check if we have .register
2282 echo ".register %g2, #scratch" > conftest.s
2283 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1cb36a98 2284 gcc_cv_as_register_pseudo_op=yes
5b68c389
AO
2285 else
2286 gcc_cv_as_register_pseudo_op=no
2287 fi
2288 rm -f conftest.s conftest.o
1cb36a98 2289 fi
5b68c389
AO
2290 ])
2291 if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
119d24d1
KG
2292 AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2293 [Define if your assembler supports .register.])
1cb36a98 2294 fi
1cb36a98 2295
e95b1e6a
JJ
2296 AC_CACHE_CHECK([assembler supports -relax],
2297 gcc_cv_as_relax_opt, [
2298 gcc_cv_as_relax_opt=unknown
2299 if test x$gcc_cv_as != x; then
2300 # Check if gas supports -relax
2301 echo ".text" > conftest.s
2302 if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
2303 gcc_cv_as_relax_opt=yes
2304 else
2305 gcc_cv_as_relax_opt=no
2306 fi
2307 rm -f conftest.s conftest.o
2308 fi
2309 ])
2310 if test "x$gcc_cv_as_relax_opt" = xyes; then
2311 AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2312 [Define if your assembler supports -relax option.])
2313 fi
2314
17e9e88c
JJ
2315 AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
2316 gcc_cv_as_sparc_ua_pcrel, [
2317 gcc_cv_as_sparc_ua_pcrel=unknown
2318 if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
2319 gcc_cv_as_sparc_ua_pcrel=no
2320 echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
cf7b8b0d
JJ
2321 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2322 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2323 gcc_cv_as_sparc_ua_pcrel=yes
17e9e88c
JJ
2324 fi
2325 rm -f conftest.s conftest.o conftest
2326 fi
2327 ])
2328 if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2329 AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2330 [Define if your assembler and linker support unaligned PC relative relocs.])
2331 fi
2332
cf7b8b0d
JJ
2333 AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
2334 gcc_cv_as_sparc_ua_pcrel_hidden, [
2335 if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2336 gcc_cv_as_sparc_ua_pcrel_hidden=unknown
2337 if test x$gcc_cv_objdump != x; then
2338 gcc_cv_as_sparc_ua_pcrel_hidden=no
2339 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
2340 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
2341 echo "foo: .skip 4" >> conftest.s
2342 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2343 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2344 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2345 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2346 if $gcc_cv_objdump -R conftest 2> /dev/null \
2347 | grep 'DISP32' > /dev/null 2>&1; then
2348 :
2349 else
2350 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2351 fi
2352 fi
2353 fi
2354 rm -f conftest.s conftest.o conftest
2355 else
2356 gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
2357 fi
2358 ])
2359 if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
2360 AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2361 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
2362 fi
2363
22252625
JJ
2364 AC_CACHE_CHECK([for assembler offsetable %lo() support],
2365 gcc_cv_as_offsetable_lo10, [
2366 gcc_cv_as_offsetable_lo10=unknown
2367 if test "x$gcc_cv_as" != x; then
2368 # Check if assembler has offsetable %lo()
2369 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
2370 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
2371 if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
2372 > /dev/null 2>&1 &&
2373 $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
2374 > /dev/null 2>&1; then
2375 if cmp conftest.o conftest1.o > /dev/null 2>&1; then
5b68c389 2376 gcc_cv_as_offsetable_lo10=no
22252625
JJ
2377 else
2378 gcc_cv_as_offsetable_lo10=yes
1cb36a98 2379 fi
22252625
JJ
2380 else
2381 gcc_cv_as_offsetable_lo10=no
5b68c389 2382 fi
22252625 2383 rm -f conftest.s conftest.o conftest1.s conftest1.o
1cb36a98 2384 fi
22252625
JJ
2385 ])
2386 if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
2387 AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2388 [Define if your assembler supports offsetable %lo().])
1cb36a98 2389 fi
cb65112a 2390
1cb36a98
RH
2391 ;;
2392
2393changequote(,)dnl
c307e6dd 2394 i[34567]86-*-* | x86_64-*-*)
1cb36a98
RH
2395changequote([,])dnl
2396 AC_MSG_CHECKING(assembler instructions)
2397 gcc_cv_as_instructions=
34a86c2b 2398 if test $in_tree_gas = yes ; then
ad9c4d9f 2399 gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[
981d4858 2400 gcc_cv_as_instructions="filds fists"
ad9c4d9f 2401 ])
981d4858 2402 elif test x$gcc_cv_as != x; then
53b5ce19
JW
2403 set "filds fists" "filds mem; fists mem"
2404 while test $# -gt 0
2405 do
2406 echo "$2" > conftest.s
2407 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2408 gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
53b5ce19
JW
2409 fi
2410 shift 2
2411 done
2412 rm -f conftest.s conftest.o
1cb36a98 2413 fi
981d4858 2414 if test x"$gcc_cv_as_instructions" != x; then
ee7692d2 2415 AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
981d4858 2416 fi
1cb36a98 2417 AC_MSG_RESULT($gcc_cv_as_instructions)
f88c65f7
RH
2418
2419 AC_MSG_CHECKING(assembler GOTOFF in data directives)
2420 gcc_cv_as_gotoff_in_data=no
34a86c2b 2421 if test $in_tree_gas = yes ; then
ad9c4d9f 2422 gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
f88c65f7 2423 gcc_cv_as_gotoff_in_data=yes
ad9c4d9f 2424 ])
f88c65f7
RH
2425 elif test x$gcc_cv_as != x; then
2426 cat > conftest.s <<EOF
2427 .text
2428.L0:
2429 nop
2430 .data
2431 .long .L0@GOTOFF
2432EOF
2433 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2434 gcc_cv_as_gotoff_in_data=yes
2435 fi
2436 fi
2437 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2438 [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2439 [Define true if the assembler supports '.long foo@GOTOFF'.])
2440 AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
1cb36a98 2441 ;;
ef1ecf87
RH
2442
2443 ia64*-*-*)
2444 AC_CACHE_CHECK([assembler supports ltoffx and ldxmov],
2445 gcc_cv_as_ltoffx_ldxmov_relocs, [
2446 gcc_cv_as_ltoffx_ldxmov_relocs=unknown
ad9c4d9f
NN
2447 if test $in_tree_gas = yes ; then
2448 gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[
2449 gcc_cv_as_ltoffx_ldxmov_relocs=yes
2450 ])
ef1ecf87
RH
2451 elif test x$gcc_cv_as != x; then
2452 cat > conftest.s << 'EOF'
2453changequote(,)dnl
2454 .text
2455 addl r15 = @ltoffx(x#), gp
2456 ;;
2457 ld8.mov r16 = [r15], x#
2458EOF
2459changequote([,])dnl
2460 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2461 gcc_cv_as_ltoffx_ldxmov_relocs=yes
2462 else
2463 gcc_cv_as_ltoffx_ldxmov_relocs=no
2464 fi
2465 rm -f conftest.s conftest.o
2466 fi
2467 ])
2468 if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then
2469 AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2470 [Define if your assembler supports ltoffx and ldxmov relocations.])
2471 fi
2472 ;;
1cb36a98 2473esac
53b5ce19 2474
9d147085
RH
2475AC_MSG_CHECKING(assembler dwarf2 debug_line support)
2476gcc_cv_as_dwarf2_debug_line=no
2477# ??? Not all targets support dwarf2 debug_line, even within a version
2478# of gas. Moreover, we need to emit a valid instruction to trigger any
2479# info to the output file. So, as supported targets are added to gas 2.11,
2480# add some instruction here to (also) show we expect this might work.
2481# ??? Once 2.11 is released, probably need to add first known working
2482# version to the per-target configury.
2483case "$target" in
80486e06 2484 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2853bc5a
HPN
2485 | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
2486 | xstormy16*-*-* | cris-*-*)
9d147085
RH
2487 insn="nop"
2488 ;;
2489 ia64*-*-*)
2490 insn="nop 0"
2491 ;;
2853bc5a
HPN
2492 mmix-*-*)
2493 insn="swym 0"
2494 ;;
9d147085 2495 esac
34a86c2b 2496if test $in_tree_gas = yes ; then
ad9c4d9f
NN
2497 gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2498 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2499 && test x"$insn" != x ; then
2500 gcc_cv_as_dwarf2_debug_line="yes"
2501 fi
2502 ])
9d147085 2503elif test x$gcc_cv_as != x -a x"$insn" != x ; then
acc187f5
RH
2504 echo ' .file 1 "conftest.s"' > conftest.s
2505 echo ' .loc 1 3 0' >> conftest.s
9d147085 2506 echo " $insn" >> conftest.s
981975b6 2507 # ??? This fails with non-gnu grep.
9d147085
RH
2508 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2509 && grep debug_line conftest.o > /dev/null 2>&1 ; then
981975b6 2510 # The .debug_line file table must be in the exact order that
eaec9b3d 2511 # we specified the files, since these indices are also used
981975b6
RH
2512 # by DW_AT_decl_file. Approximate this test by testing if
2513 # the assembler bitches if the same index is assigned twice.
2514 echo ' .file 1 "foo.s"' > conftest.s
2515 echo ' .file 1 "bar.s"' >> conftest.s
2516 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
2517 then
2518 gcc_cv_as_dwarf2_debug_line="no"
2519 else
2520 gcc_cv_as_dwarf2_debug_line="yes"
2521 fi
9d147085
RH
2522 fi
2523 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
2524fi
2525if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
2526 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
981975b6 2527[Define if your assembler supports dwarf2 .file/.loc directives,
eaec9b3d 2528 and preserves file table indices exactly as given.])
9d147085
RH
2529fi
2530AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
2531
5f0e9ea2
GK
2532AC_MSG_CHECKING(assembler --gdwarf2 support)
2533gcc_cv_as_gdwarf2_flag=no
34a86c2b 2534if test $in_tree_gas = yes ; then
ad9c4d9f
NN
2535 gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2536 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2537 && test x"$insn" != x ; then
2538 gcc_cv_as_gdwarf2_flag="yes"
2539 fi
2540 ])
5f0e9ea2
GK
2541elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2542 echo '' > conftest.s
2543 # ??? This fails with non-gnu grep.
2544 if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
2545 then
2546 gcc_cv_as_gdwarf2_flag="yes"
2547 fi
2548 rm -f conftest.s conftest.o
2549fi
2550if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
2551 AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2552[Define if your assembler supports the --gdwarf2 option.])
2553fi
2554AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
2555
2556AC_MSG_CHECKING(assembler --gstabs support)
2557gcc_cv_as_gstabs_flag=no
34a86c2b 2558if test $in_tree_gas = yes ; then
ad9c4d9f
NN
2559 gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[
2560 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2561 && test x"$insn" != x ; then
2562 gcc_cv_as_gstabs_flag="yes"
2563 fi
2564 ])
5f0e9ea2
GK
2565elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2566 echo '' > conftest.s
2567 # ??? This fails with non-gnu grep.
2568 if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2569 gcc_cv_as_gstabs_flag="yes"
2570 fi
2571 rm -f conftest.s conftest.o
2572fi
2573if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2574 AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2575[Define if your assembler supports the --gstabs option.])
2576fi
2577AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2578
96d0f4dc
JJ
2579AC_MSG_CHECKING(linker read-only and read-write section mixing)
2580gcc_cv_ld_ro_rw_mix=unknown
34a86c2b 2581if test $in_tree_ld = yes ; then
96d0f4dc
JJ
2582 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 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2583 gcc_cv_ld_ro_rw_mix=read-write
2584 fi
2585elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
90e145da
KC
2586 echo '.section myfoosect, "a"' > conftest1.s
2587 echo '.section myfoosect, "aw"' > conftest2.s
96d0f4dc 2588 echo '.byte 1' >> conftest2.s
90e145da 2589 echo '.section myfoosect, "a"' > conftest3.s
96d0f4dc 2590 echo '.byte 0' >> conftest3.s
6cd656d0
KC
2591 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2592 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2593 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
96d0f4dc 2594 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
c6cc7e13 2595 conftest2.o conftest3.o > /dev/null 2>&1; then
96d0f4dc 2596 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
c6cc7e13 2597 | sed -e '/myfoosect/!d' -e N`
96d0f4dc
JJ
2598 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2599 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2600 gcc_cv_ld_ro_rw_mix=read-only
2601 else
2602 gcc_cv_ld_ro_rw_mix=read-write
2603 fi
2604 fi
2605 fi
2606changequote(,)dnl
2607 rm -f conftest.* conftest[123].*
2608changequote([,])dnl
2609fi
2610if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2611 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2612 [Define if your linker links a mix of read-only
2613 and read-write sections into a read-write section.])
2614fi
2615AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2616
275b60d6
JJ
2617AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2618gcc_cv_ld_eh_frame_hdr=no
34a86c2b 2619if test $in_tree_ld = yes ; then
275b60d6
JJ
2620 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 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2621 gcc_cv_ld_eh_frame_hdr=yes
2622 fi
2623elif test x$gcc_cv_ld != x; then
2624 # Check if linker supports --eh-frame-hdr option
2625 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
2626 gcc_cv_ld_eh_frame_hdr=yes
2627 fi
2628fi
2629if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
2630 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
2631[Define if your linker supports --eh-frame-hdr option.])
2632fi
2633AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2634
24a4dd31
JJ
2635AC_MSG_CHECKING(linker position independent executable support)
2636gcc_cv_ld_pie=no
2637if test $in_tree_ld = yes ; then
2638 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 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2639 gcc_cv_ld_pie=yes
2640 fi
2641elif test x$gcc_cv_ld != x; then
2642 # Check if linker supports -pie option
2643 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
2644 gcc_cv_ld_pie=yes
2645 fi
2646fi
2647if test x"$gcc_cv_ld_pie" = xyes; then
2648 AC_DEFINE(HAVE_LD_PIE, 1,
2649[Define if your linker supports -pie option.])
2650fi
2651AC_MSG_RESULT($gcc_cv_ld_pie)
2652
4357a6c3
CD
2653# Miscellaneous target-specific checks.
2654case "$target" in
2655 mips*-*-*)
2656 AC_MSG_CHECKING(whether libgloss uses STARTUP directives consistently)
2657 gcc_cv_mips_libgloss_startup=no
2658 gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
2659 if test "x$exec_prefix" = xNONE; then
2660 if test "x$prefix" = xNONE; then
2661 test_prefix=/usr/local
2662 else
2663 test_prefix=$prefix
2664 fi
2665 else
2666 test_prefix=$exec_prefix
2667 fi
2668 for f in $gcc_cv_libgloss_srcdir/mips/idt.ld $test_prefix/$target_alias/lib/idt.ld
2669 do
2670 if grep '^STARTUP' $f > /dev/null 2>&1; then
2671 gcc_cv_mips_libgloss_startup=yes
2672 break
2673 fi
2674 done
2675 if test x"$gcc_cv_mips_libgloss_startup" = xyes; then
2676 AC_DEFINE(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES, 1,
2677 [Define if your MIPS libgloss linker scripts consistently include STARTUP directives.])
2678 fi
2679 AC_MSG_RESULT($gcc_cv_mips_libgloss_startup)
cafe096b
EC
2680
2681 AC_MSG_CHECKING(whether the assembler has explicit relocation support)
2682 if test x$gcc_cv_mips_explicit_relocs = x; then
2683 gcc_cv_mips_explicit_relocs=no
4dd03b27
RS
2684 if test $in_tree_gas = yes; then
2685 gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[
2686 gcc_cv_mips_explicit_relocs=yes
2687 ])
2688 elif test x$gcc_cv_as != x; then
cafe096b
EC
2689 echo ' lw $4,%gp_rel(foo)($4)' > conftest.s
2690 if $gcc_cv_as conftest.s -o conftest.o > /dev/null 2>&1; then
2691 gcc_cv_mips_explicit_relocs=yes
2692 fi
2693 rm -f conftest.s conftest.o
2694 fi
2695 fi
2696 if test $gcc_cv_mips_explicit_relocs = yes; then
2697 test x$target_cpu_default != x || target_cpu_default=0
2698 target_cpu_default="(${target_cpu_default}|MASK_EXPLICIT_RELOCS)"
2699 fi
2700 AC_MSG_RESULT($gcc_cv_mips_explicit_relocs)
4357a6c3
CD
2701 ;;
2702esac
2703
9fb28a67 2704if test x$with_sysroot = x && test x$host = x$target \
047d636f 2705 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
793e9558
PB
2706 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2707fi
2708
571a8de5 2709# Figure out what language subdirectories are present.
71205e0b
MH
2710# Look if the user specified --enable-languages="..."; if not, use
2711# the environment variable $LANGUAGES if defined. $LANGUAGES might
2712# go away some day.
cc9a08e0 2713# NB: embedded tabs in this IF block -- do not untabify
71205e0b
MH
2714if test x"${enable_languages+set}" != xset; then
2715 if test x"${LANGUAGES+set}" = xset; then
cc9a08e0
PE
2716 enable_languages="${LANGUAGES}"
2717 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2718
71205e0b
MH
2719 else
2720 enable_languages=all
2721 fi
d6c6b553 2722else
015089dd
TJ
2723 if test x"${enable_languages}" = x \
2724 || test x"${enable_languages}" = xyes;
cc9a08e0
PE
2725 then
2726 AC_MSG_ERROR([--enable-languages needs at least one language argument])
d6c6b553 2727 fi
71205e0b 2728fi
cc9a08e0 2729enable_languages=`echo "${enable_languages}" | sed -e 's/[[ ,]][[ ,]]*/,/g' -e 's/,$//'`
75382c6d
TT
2730
2731# First scan to see if an enabled language requires some other language.
2732# We assume that a given config-lang.in will list all the language
2733# front ends it requires, even if some are required indirectly.
2734for lang in ${srcdir}/*/config-lang.in ..
2735do
2736 case $lang in
2737 ..)
2738 ;;
2739 # The odd quoting in the next line works around
2740 # an apparent bug in bash 1.12 on linux.
2741changequote(,)dnl
2742 ${srcdir}/[*]/config-lang.in)
2743 ;;
2744 *)
2745 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
2746 this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^ ]*\).*$,\1,p' $lang`
2747 for other in $this_lang_requires
2748 do
2749 case ,${enable_languages}, in
2750 *,$other,*)
2751 ;;
2752 *,all,*)
2753 ;;
1bf17cc4 2754 *,$lang_alias,*)
75382c6d
TT
2755 enable_languages="$enable_languages,$other"
2756 ;;
2757 esac
2758 done
2759 ;;
2760changequote([,])dnl
2761 esac
2762done
2763
015089dd
TJ
2764expected_languages=`echo ,${enable_languages}, | sed -e 's:,: :g' -e 's: *: :g' -e 's: *: :g' -e 's:^ ::' -e 's: $::'`
2765found_languages=
571a8de5
DE
2766subdirs=
2767for lang in ${srcdir}/*/config-lang.in ..
2768do
2769 case $lang in
2770 ..) ;;
2771 # The odd quoting in the next line works around
2772 # an apparent bug in bash 1.12 on linux.
75bffa71
ILT
2773changequote(,)dnl
2774 ${srcdir}/[*]/config-lang.in) ;;
71205e0b
MH
2775 *)
2776 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
2b60b2cb
AO
2777 this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^ ]*\).*$,\1,p' $lang`
2778 build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^ ]*\).*$,\1,p' $lang`
71205e0b
MH
2779 if test "x$lang_alias" = x
2780 then
2781 echo "$lang doesn't set \$language." 1>&2
2782 exit 1
2783 fi
2b60b2cb
AO
2784 case ${build_by_default},${enable_languages}, in
2785 *,$lang_alias,*) add_this_lang=yes ;;
2786 no,*) add_this_lang=no ;;
2787 *,all,*) add_this_lang=yes ;;
2788 *) add_this_lang=no ;;
2789 esac
015089dd 2790 found_languages="${found_languages} ${lang_alias}"
71205e0b
MH
2791 if test x"${add_this_lang}" = xyes; then
2792 case $lang in
2793 ${srcdir}/ada/config-lang.in)
1ffc5c6e 2794 if test x$have_gnat = xyes ; then
71205e0b
MH
2795 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2796 fi
2797 ;;
2798 *)
2799 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2800 ;;
2801 esac
2802 fi
2803 ;;
75bffa71 2804changequote([,])dnl
571a8de5
DE
2805 esac
2806done
2807
015089dd
TJ
2808missing_languages=
2809for expected_language in ${expected_languages} ..
2810do
2811 if test "${expected_language}" != ..; then
2812 missing_language="${expected_language}"
2813 if test "${expected_language}" = "c" \
2814 || test "${expected_language}" = "all"; then
2815 missing_language=
2816 fi
2817 for found_language in ${found_languages} ..
2818 do
2819 if test "${found_language}" != ..; then
2820 if test "${expected_language}" = "${found_language}"; then
2821 missing_language=
2822 fi
2823 fi
2824 done
2825 if test "x${missing_language}" != x; then
2826 missing_languages="${missing_languages} ${missing_language}"
2827 fi
2828 fi
2829done
2830
2831if test "x$missing_languages" != x; then
2832 AC_MSG_ERROR([
2833The following requested languages were not found:${missing_languages}
2834The following languages were available: c${found_languages}])
02ef40d9
TJ
2835fi
2836
f24af81b
TT
2837# Make gthr-default.h if we have a thread file.
2838gthread_flags=
75bffa71 2839if test $thread_file != single; then
f24af81b 2840 rm -f gthr-default.h
db0d1ed9 2841 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
f24af81b
TT
2842 gthread_flags=-DHAVE_GTHR_DEFAULT
2843fi
2844AC_SUBST(gthread_flags)
2845
81bf3d9e
RH
2846# Find out what GC implementation we want, or may, use.
2847AC_ARG_WITH(gc,
e8bec136
RO
2848[ --with-gc={simple,page} choose the garbage collection mechanism to use
2849 with the compiler],
81bf3d9e
RH
2850[case "$withval" in
2851 simple | page)
2852 GGC=ggc-$withval
2853 ;;
2854 *)
2855 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2856 ;;
2857esac],
130fadbb 2858[GGC=ggc-page])
81bf3d9e
RH
2859AC_SUBST(GGC)
2860echo "Using $GGC for garbage collection."
2861
3c809ba4 2862# Use the system's zlib library.
b8dad04b
ZW
2863zlibdir=-L../zlib
2864zlibinc="-I\$(srcdir)/../zlib"
3c809ba4
AG
2865AC_ARG_WITH(system-zlib,
2866[ --with-system-zlib use installed libz],
2867zlibdir=
2868zlibinc=
2869)
2870AC_SUBST(zlibdir)
2871AC_SUBST(zlibinc)
2872
dc6746e7
PT
2873dnl Very limited version of automake's enable-maintainer-mode
2874
2875AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2876 dnl maintainer-mode is disabled by default
2877 AC_ARG_ENABLE(maintainer-mode,
e8bec136
RO
2878[ --enable-maintainer-mode
2879 enable make rules and dependencies not useful
dc6746e7
PT
2880 (and sometimes confusing) to the casual installer],
2881 maintainer_mode=$enableval,
2882 maintainer_mode=no)
2883
2884AC_MSG_RESULT($maintainer_mode)
2885
2886if test "$maintainer_mode" = "yes"; then
2887 MAINT=''
2888else
2889 MAINT='#'
2890fi
2891AC_SUBST(MAINT)dnl
2892
571a8de5
DE
2893# Make empty files to contain the specs and options for each language.
2894# Then add #include lines to for a compiler that has specs and/or options.
2895
2896lang_specs_files=
2897lang_options_files=
3103b7db 2898lang_tree_files=
571a8de5
DE
2899for subdir in . $subdirs
2900do
75bffa71 2901 if test -f $srcdir/$subdir/lang-specs.h; then
0d24f4d1 2902 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
571a8de5 2903 fi
75bffa71 2904 if test -f $srcdir/$subdir/lang-options.h; then
0d24f4d1 2905 lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
571a8de5 2906 fi
3103b7db 2907 if test -f $srcdir/$subdir/$subdir-tree.def; then
0d24f4d1 2908 lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3103b7db 2909 fi
571a8de5
DE
2910done
2911
2912# These (without "all_") are set in each config-lang.in.
2913# `language' must be a single word so is spelled singularly.
2914all_languages=
2915all_boot_languages=
2916all_compilers=
2917all_stagestuff=
e34a3d31 2918all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
571a8de5
DE
2919# List of language makefile fragments.
2920all_lang_makefiles=
e2500fed 2921# Files for gengtype
ef69da62 2922all_gtfiles="$target_gtfiles"
8ac9d31f
TJ
2923# Files for gengtype with language
2924all_gtfiles_files_langs=
2925all_gtfiles_files_files=
571a8de5
DE
2926
2927# Add the language fragments.
2928# Languages are added via two mechanisms. Some information must be
2929# recorded in makefile variables, these are defined in config-lang.in.
2930# We accumulate them and plug them into the main Makefile.
2931# The other mechanism is a set of hooks for each of the main targets
2932# like `clean', `install', etc.
2933
2934language_fragments="Make-lang"
2935language_hooks="Make-hooks"
2936
2937for s in .. $subdirs
2938do
75bffa71 2939 if test $s != ".."
571a8de5
DE
2940 then
2941 language=
2942 boot_language=
2943 compilers=
2944 stagestuff=
0280cf84 2945 outputs=
e2500fed 2946 gtfiles=
571a8de5 2947 . ${srcdir}/$s/config-lang.in
75bffa71 2948 if test "x$language" = x
571a8de5
DE
2949 then
2950 echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2951 exit 1
2952 fi
72aaffbd
ZW
2953 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2954 if test -f ${srcdir}/$s/Makefile.in
2955 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2956 fi
571a8de5 2957 all_languages="$all_languages $language"
75bffa71 2958 if test "x$boot_language" = xyes
571a8de5
DE
2959 then
2960 all_boot_languages="$all_boot_languages $language"
2961 fi
2962 all_compilers="$all_compilers $compilers"
2963 all_stagestuff="$all_stagestuff $stagestuff"
0280cf84 2964 all_outputs="$all_outputs $outputs"
e2500fed 2965 all_gtfiles="$all_gtfiles $gtfiles"
8ac9d31f
TJ
2966 for f in .. $gtfiles
2967 do
2968 if test $f != ".."
2969 then
2970 all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2971 all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2972 fi
2973 done
571a8de5
DE
2974 fi
2975done
2976
8ac9d31f
TJ
2977# Pick up gtfiles for c
2978gtfiles=
2979s="c"
2980. ${srcdir}/c-config-lang.in
2981all_gtfiles="$all_gtfiles $gtfiles"
2982for f in .. $gtfiles
2983do
2984 if test $f != ".."
2985 then
2986 all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2987 all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2988 fi
2989done
2990
cbc59f01
DD
2991check_languages=
2992for language in .. $all_languages
2993do
2994 if test $language != ".."
2995 then
2996 check_languages="$check_languages check-$language"
2997 fi
2998done
2999
571a8de5
DE
3000# Since we can't use `::' targets, we link each language in
3001# with a set of hooks, reached indirectly via lang.${target}.
3002
3003rm -f Make-hooks
3004touch Make-hooks
65ebbf81 3005target_list="all.build all.cross start.encap rest.encap tags \
d3945f0a 3006 info dvi generated-manpages \
571a8de5 3007 install-normal install-common install-info install-man \
436a88a6 3008 uninstall \
571a8de5 3009 mostlyclean clean distclean extraclean maintainer-clean \
8f231b5d 3010 stage1 stage2 stage3 stage4 stageprofile stagefeedback"
571a8de5
DE
3011for t in $target_list
3012do
3013 x=
ab87f8c8 3014 for lang in .. $all_languages
571a8de5 3015 do
ab87f8c8
JL
3016 if test $lang != ".."; then
3017 x="$x $lang.$t"
571a8de5
DE
3018 fi
3019 done
3020 echo "lang.$t: $x" >> Make-hooks
3021done
3022
cc06d68c 3023# Create .gdbinit.
296e46bd 3024
cc06d68c
GP
3025echo "dir ." > .gdbinit
3026echo "dir ${srcdir}" >> .gdbinit
3027if test x$gdb_needs_out_file_path = xyes
3028then
3029 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3030fi
3031if test "x$subdirs" != x; then
3032 for s in $subdirs
3033 do
3034 echo "dir ${srcdir}/$s" >> .gdbinit
3035 done
296e46bd 3036fi
cc06d68c 3037echo "source ${srcdir}/gdbinit.in" >> .gdbinit
296e46bd 3038
8f8d3278
NC
3039# If $(exec_prefix) exists and is not the same as $(prefix), then compute an
3040# absolute path for gcc_tooldir based on inserting the number of up-directory
3041# movements required to get from $(exec_prefix) to $(prefix) into the basic
3042# $(libsubdir)/@(unlibsubdir) based path.
82cbf8f7
JL
3043# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
3044# make and thus we'd get different behavior depending on where we built the
3045# sources.
5949a9fc 3046if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
d062c304
JL
3047 gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
3048else
8f8d3278
NC
3049changequote(<<, >>)dnl
3050# An explanation of the sed strings:
3051# -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix'
3052# -e 's|/$||' match a trailing forward slash and eliminates it
3053# -e 's|^[^/]|/|' forces the string to start with a forward slash (*)
ff7cc307 3054# -e 's|/[^/]*|../|g' replaces each occurrence of /<directory> with ../
8f8d3278
NC
3055#
3056# (*) Note this pattern overwrites the first character of the string
3057# with a forward slash if one is not already present. This is not a
3058# problem because the exact names of the sub-directories concerned is
3059# unimportant, just the number of them matters.
3060#
3061# The practical upshot of these patterns is like this:
3062#
3063# prefix exec_prefix result
3064# ------ ----------- ------
3065# /foo /foo/bar ../
3066# /foo/ /foo/bar ../
3067# /foo /foo/bar/ ../
3068# /foo/ /foo/bar/ ../
3069# /foo /foo/bar/ugg ../../
3070#
4c112cda
NC
3071 dollar='$$'
3072 gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
8f8d3278 3073changequote([, ])dnl
d062c304
JL
3074fi
3075AC_SUBST(gcc_tooldir)
4c112cda 3076AC_SUBST(dollar)
d062c304 3077
2bbea3a6
RH
3078# Find a directory in which to install a shared libgcc.
3079
3080AC_ARG_ENABLE(version-specific-runtime-libs,
e8bec136
RO
3081[ --enable-version-specific-runtime-libs
3082 specify that runtime libraries should be
3083 installed in a compiler-specific directory])
2bbea3a6 3084
5b15f277
RH
3085AC_ARG_WITH(slibdir,
3086[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
3087slibdir="$with_slibdir",
3088if test "${enable_version_specific_runtime_libs+set}" = set; then
2bbea3a6 3089 slibdir='$(libsubdir)'
5b15f277 3090elif test "$host" != "$target"; then
2bbea3a6
RH
3091 slibdir='$(build_tooldir)/lib'
3092else
5b15f277
RH
3093 slibdir='$(libdir)'
3094fi)
2bbea3a6
RH
3095AC_SUBST(slibdir)
3096
1e6347d8 3097objdir=`${PWDCMD-pwd}`
7e717196
JL
3098AC_SUBST(objdir)
3099
94f42018
DE
3100# Process the language and host/target makefile fragments.
3101${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
47866ac0 3102
46f18e7b
RK
3103# Substitute configuration variables
3104AC_SUBST(subdirs)
8ac9d31f 3105AC_SUBST(srcdir)
46f18e7b
RK
3106AC_SUBST(all_boot_languages)
3107AC_SUBST(all_compilers)
e2500fed 3108AC_SUBST(all_gtfiles)
8ac9d31f
TJ
3109AC_SUBST(all_gtfiles_files_langs)
3110AC_SUBST(all_gtfiles_files_files)
9f3d1bc2
BK
3111AC_SUBST(all_lang_makefiles)
3112AC_SUBST(all_languages)
9f3d1bc2
BK
3113AC_SUBST(all_stagestuff)
3114AC_SUBST(build_exeext)
3115AC_SUBST(build_install_headers_dir)
3116AC_SUBST(build_xm_file_list)
11642c3a
ZW
3117AC_SUBST(build_xm_file)
3118AC_SUBST(build_xm_defines)
cbc59f01 3119AC_SUBST(check_languages)
9f3d1bc2 3120AC_SUBST(cc_set_by_configure)
5aa82ace 3121AC_SUBST(quoted_cc_set_by_configure)
9f3d1bc2 3122AC_SUBST(cpp_install_dir)
9f3d1bc2
BK
3123AC_SUBST(dep_host_xmake_file)
3124AC_SUBST(dep_tmake_file)
9f3d1bc2 3125AC_SUBST(extra_headers_list)
46f18e7b 3126AC_SUBST(extra_objs)
9f3d1bc2
BK
3127AC_SUBST(extra_parts)
3128AC_SUBST(extra_passes)
3129AC_SUBST(extra_programs)
9f3d1bc2 3130AC_SUBST(float_h_file)
cc1e60ea 3131AC_SUBST(gcc_config_arguments)
9f3d1bc2 3132AC_SUBST(gcc_gxx_include_dir)
e2187d3b 3133AC_SUBST(libstdcxx_incdir)
9f3d1bc2 3134AC_SUBST(gcc_version)
8763704d 3135AC_SUBST(gcc_version_full)
9f3d1bc2
BK
3136AC_SUBST(gcc_version_trigger)
3137AC_SUBST(host_exeext)
46f18e7b 3138AC_SUBST(host_extra_gcc_objs)
46f18e7b 3139AC_SUBST(host_xm_file_list)
11642c3a
ZW
3140AC_SUBST(host_xm_file)
3141AC_SUBST(host_xm_defines)
476d9098 3142AC_SUBST(out_host_hook_obj)
9f3d1bc2 3143AC_SUBST(install)
46f18e7b 3144AC_SUBST(lang_options_files)
9f3d1bc2 3145AC_SUBST(lang_specs_files)
3103b7db 3146AC_SUBST(lang_tree_files)
46f18e7b 3147AC_SUBST(local_prefix)
9f3d1bc2
BK
3148AC_SUBST(md_file)
3149AC_SUBST(objc_boehm_gc)
3150AC_SUBST(out_file)
3151AC_SUBST(out_object_file)
46f18e7b 3152AC_SUBST(stage_prefix_set_by_configure)
596151e1 3153AC_SUBST(quoted_stage_prefix_set_by_configure)
e9a25f70 3154AC_SUBST(symbolic_link)
9f3d1bc2
BK
3155AC_SUBST(thread_file)
3156AC_SUBST(tm_file_list)
11642c3a 3157AC_SUBST(tm_file)
d5355cb2 3158AC_SUBST(tm_defines)
11642c3a
ZW
3159AC_SUBST(tm_p_file_list)
3160AC_SUBST(tm_p_file)
3161AC_SUBST(xm_file)
3d9d2476 3162AC_SUBST(xm_defines)
66fe41af 3163AC_SUBST(target_alias)
aac69a49
NC
3164AC_SUBST(c_target_objs)
3165AC_SUBST(cxx_target_objs)
11642c3a 3166AC_SUBST(target_cpu_default)
46f18e7b
RK
3167
3168AC_SUBST_FILE(target_overrides)
3169AC_SUBST_FILE(host_overrides)
46f18e7b
RK
3170AC_SUBST_FILE(language_fragments)
3171AC_SUBST_FILE(language_hooks)
3172
3173# Echo that links are built
75bffa71 3174if test x$host = x$target
46f18e7b
RK
3175then
3176 str1="native "
3177else
3178 str1="cross-"
3179 str2=" from $host"
3180fi
3181
75bffa71 3182if test x$host != x$build
46f18e7b
RK
3183then
3184 str3=" on a $build system"
3185fi
3186
75bffa71 3187if test "x$str2" != x || test "x$str3" != x
46f18e7b
RK
3188then
3189 str4=
3190fi
3191
3192echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
3193
75bffa71 3194if test "x$str2" != x || test "x$str3" != x
46f18e7b
RK
3195then
3196 echo " ${str2}${str3}." 1>&2
3197fi
3198
3199# Configure the subdirectories
3200# AC_CONFIG_SUBDIRS($subdirs)
3201
3202# Create the Makefile
5891b37d 3203# and configure language subdirectories
0280cf84 3204AC_OUTPUT($all_outputs,
cdcc6a01 3205[
cdcc6a01 3206case x$CONFIG_HEADERS in
b7cb92ad 3207xauto-host.h:config.in)
818b66cc 3208echo > cstamp-h ;;
cdcc6a01 3209esac
93cf819d
BK
3210# If the host supports symlinks, point stage[1234] at ../stage[1234] so
3211# bootstrapping and the installation procedure can still use
3212# CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks,
3213# FLAGS_TO_PASS has been modified to solve the problem there.
3214# This is virtually a duplicate of what happens in configure.lang; we do
3215# an extra check to make sure this only happens if ln -s can be used.
75bffa71 3216if test "$symbolic_link" = "ln -s"; then
d8140df6 3217 for d in .. ${subdirs} fixinc ; do
75bffa71 3218 if test $d != ..; then
1e6347d8 3219 STARTDIR=`${PWDCMD-pwd}`
4e8a434e 3220 cd $d
8f231b5d 3221 for t in stage1 stage2 stage3 stage4 stageprofile stagefeedback include
4e8a434e
BK
3222 do
3223 rm -f $t
3224 $symbolic_link ../$t $t 2>/dev/null
3225 done
3226 cd $STARTDIR
93cf819d
BK
3227 fi
3228 done
3229else true ; fi
ab87f8c8
JL
3230# Avoid having to add intl to our include paths.
3231if test -f intl/libintl.h; then
3232 echo creating libintl.h
3233 echo '#include "intl/libintl.h"' >libintl.h
3234fi
0d24f4d1
ZW
3235],
3236[subdirs='$subdirs'
3237symbolic_link='$symbolic_link'
cdcc6a01 3238])