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