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