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