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