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