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