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