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