]> gcc.gnu.org Git - gcc.git/blame - gcc/configure.in
cppfiles.c (INCLUDE_LEN_FUDGE, ENOMEM): Delete.
[gcc.git] / gcc / configure.in
CommitLineData
46f18e7b
RK
1# configure.in for GNU CC
2# Process this file with autoconf to generate a configuration script.
3
fd939e46 4# Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
46f18e7b
RK
5
6#This file is part of GNU CC.
7
8#GNU CC is free software; you can redistribute it and/or modify
9#it under the terms of the GNU General Public License as published by
10#the Free Software Foundation; either version 2, or (at your option)
11#any later version.
12
13#GNU CC is distributed in the hope that it will be useful,
14#but WITHOUT ANY WARRANTY; without even the implied warranty of
15#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16#GNU General Public License for more details.
17
18#You should have received a copy of the GNU General Public License
19#along with GNU CC; see the file COPYING. If not, write to
20#the Free Software Foundation, 59 Temple Place - Suite 330,
21#Boston, MA 02111-1307, USA.
22
23# Initialization and defaults
890ad3ea 24AC_PREREQ(2.13)
46f18e7b 25AC_INIT(tree.c)
b7cb92ad 26AC_CONFIG_HEADER(auto-host.h:config.in)
cdcc6a01 27
46f18e7b
RK
28remove=rm
29hard_link=ln
30symbolic_link='ln -s'
31copy=cp
32
75a39864
JL
33# Check for bogus environment variables.
34# Test if LIBRARY_PATH contains the notation for the current directory
35# since this would lead to problems installing/building glibc.
36# LIBRARY_PATH contains the current directory if one of the following
37# is true:
38# - one of the terminals (":" and ";") is the first or last sign
39# - two terminals occur directly after each other
40# - the path contains an element with a dot in it
41AC_MSG_CHECKING(LIBRARY_PATH variable)
42changequote(,)dnl
43case ${LIBRARY_PATH} in
44 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
45 library_path_setting="contains current directory"
46 ;;
47 *)
48 library_path_setting="ok"
49 ;;
50esac
51changequote([,])dnl
52AC_MSG_RESULT($library_path_setting)
53if test "$library_path_setting" != "ok"; then
54AC_MSG_ERROR([
55*** LIBRARY_PATH shouldn't contain the current directory when
079bd08e 56*** building gcc. Please change the environment variable
75a39864
JL
57*** and run configure again.])
58fi
59
60# Test if GCC_EXEC_PREFIX contains the notation for the current directory
61# since this would lead to problems installing/building glibc.
62# GCC_EXEC_PREFIX contains the current directory if one of the following
63# is true:
64# - one of the terminals (":" and ";") is the first or last sign
65# - two terminals occur directly after each other
66# - the path contains an element with a dot in it
67AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
68changequote(,)dnl
69case ${GCC_EXEC_PREFIX} in
70 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
71 gcc_exec_prefix_setting="contains current directory"
72 ;;
73 *)
74 gcc_exec_prefix_setting="ok"
75 ;;
76esac
77changequote([,])dnl
78AC_MSG_RESULT($gcc_exec_prefix_setting)
79if test "$gcc_exec_prefix_setting" != "ok"; then
80AC_MSG_ERROR([
81*** GCC_EXEC_PREFIX shouldn't contain the current directory when
079bd08e 82*** building gcc. Please change the environment variable
75a39864
JL
83*** and run configure again.])
84fi
85
46f18e7b
RK
86# Check for additional parameters
87
88# With GNU ld
89AC_ARG_WITH(gnu-ld,
90[ --with-gnu-ld arrange to work with GNU ld.],
df6faf79
JW
91gnu_ld_flag="$with_gnu_ld",
92gnu_ld_flag=no)
46f18e7b 93
ab339d62
AO
94# With pre-defined ld
95AC_ARG_WITH(ld,
96[ --with-ld arrange to use the specified ld (full pathname).],
3ccc3a56
AO
97DEFAULT_LINKER="$with_ld")
98if test x"${DEFAULT_LINKER+set}" = x"set"; then
99 if test ! -x "$DEFAULT_LINKER"; then
100 AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
e154a394 101 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
102 gnu_ld_flag=yes
103 fi
119d24d1
KG
104 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
105 [Define to enable the use of a default linker.])
ab339d62
AO
106fi
107
46f18e7b
RK
108# With GNU as
109AC_ARG_WITH(gnu-as,
4d8392b7 110[ --with-gnu-as arrange to work with GNU as.],
df6faf79
JW
111gas_flag="$with_gnu_as",
112gas_flag=no)
46f18e7b 113
ab339d62
AO
114AC_ARG_WITH(as,
115[ --with-as arrange to use the specified as (full pathname).],
3ccc3a56
AO
116DEFAULT_ASSEMBLER="$with_as")
117if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
118 if test ! -x "$DEFAULT_ASSEMBLER"; then
119 AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
e154a394 120 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
ab339d62
AO
121 gas_flag=yes
122 fi
119d24d1
KG
123 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
124 [Define to enable the use of a default assembler.])
3ccc3a56 125fi
ab339d62 126
46f18e7b
RK
127# With stabs
128AC_ARG_WITH(stabs,
129[ --with-stabs arrange to use stabs instead of host debug format.],
535b86ce 130stabs="$with_stabs",
46f18e7b
RK
131stabs=no)
132
133# With ELF
134AC_ARG_WITH(elf,
135[ --with-elf arrange to use ELF instead of host debug format.],
535b86ce 136elf="$with_elf",
46f18e7b
RK
137elf=no)
138
4d8392b7 139# Specify the local prefix
4e88d51b 140local_prefix=
4d8392b7
RK
141AC_ARG_WITH(local-prefix,
142[ --with-local-prefix=DIR specifies directory to put local include.],
4e88d51b
JM
143[case "${withval}" in
144yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
145no) ;;
146*) local_prefix=$with_local_prefix ;;
147esac])
4d8392b7
RK
148
149# Default local prefix if it is empty
75bffa71 150if test x$local_prefix = x; then
4d8392b7
RK
151 local_prefix=/usr/local
152fi
153
8f8d3278
NC
154# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
155# passed in by the toplevel make and thus we'd get different behavior
156# depending on where we built the sources.
157gcc_gxx_include_dir=
9514f0d1
RK
158# Specify the g++ header file directory
159AC_ARG_WITH(gxx-include-dir,
160[ --with-gxx-include-dir=DIR
161 specifies directory to put g++ header files.],
4e88d51b
JM
162[case "${withval}" in
163yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
164no) ;;
8f8d3278 165*) gcc_gxx_include_dir=$with_gxx_include_dir ;;
4e88d51b
JM
166esac])
167
8f8d3278 168if test x${gcc_gxx_include_dir} = x; then
4e88d51b 169 if test x${enable_version_specific_runtime_libs} = xyes; then
8f8d3278 170 gcc_gxx_include_dir='${libsubdir}/include/g++'
4e88d51b 171 else
a270b446 172 topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
de82584d 173changequote(<<, >>)dnl
e2187d3b 174 gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
de82584d 175changequote([, ])dnl
4e88d51b
JM
176 fi
177fi
46f18e7b 178
39d6f2e8
MM
179# Determine whether or not multilibs are enabled.
180AC_ARG_ENABLE(multilib,
181[ --enable-multilib enable library support for multiple ABIs],
182[], [enable_multilib=yes])
183AC_SUBST(enable_multilib)
184
a494747c
MM
185# Enable expensive internal checks
186AC_ARG_ENABLE(checking,
f4524c9e
ZW
187[ --enable-checking[=LIST]
188 enable expensive run-time checks. With LIST,
189 enable only specific categories of checks.
190 Categories are: misc,tree,rtl,gc,gcac; default
59f406b7 191 is misc,tree,gc],
119d24d1
KG
192[ac_checking=
193ac_tree_checking=
194ac_rtl_checking=
195ac_gc_checking=
196ac_gc_always_collect=
197case "${enableval}" in
51d0e20c 198yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;;
4e88d51b 199no) ;;
59f406b7 200*) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
f4524c9e
ZW
201 set fnord $enableval; shift
202 IFS="$ac_save_IFS"
c62e45ad
KG
203 for check
204 do
f4524c9e 205 case $check in
119d24d1
KG
206 misc) ac_checking=1 ;;
207 tree) ac_tree_checking=1 ;;
208 rtl) ac_rtl_checking=1 ;;
209 gc) ac_gc_checking=1 ;;
210 gcac) ac_gc_always_collect=1 ;;
f4524c9e
ZW
211 *) AC_MSG_ERROR(unknown check category $check) ;;
212 esac
213 done
214 ;;
119d24d1 215esac
51d0e20c
AJ
216],
217# Enable some checks by default for development versions of GCC
218[ac_checking=1; ac_tree_checking=1; ac_gc_checking=1;])
119d24d1
KG
219if test x$ac_checking != x ; then
220 AC_DEFINE(ENABLE_CHECKING, 1,
221[Define if you want more run-time sanity checks. This one gets a grab
222 bag of miscellaneous but relatively cheap checks.])
223fi
224if test x$ac_tree_checking != x ; then
225 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
226[Define if you want all operations on trees (the basic data
227 structure of the front ends) to be checked for dynamic type safety
228 at runtime. This is moderately expensive.])
229fi
230if test x$ac_rtl_checking != x ; then
231 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
232[Define if you want all operations on RTL (the basic data structure
233 of the optimizer and back end) to be checked for dynamic type safety
234 at runtime. This is quite expensive.])
235fi
236if test x$ac_gc_checking != x ; then
237 AC_DEFINE(ENABLE_GC_CHECKING, 1,
238[Define if you want the garbage collector to do object poisoning and
239 other memory allocation checks. This is quite expensive.])
240fi
241if test x$ac_gc_always_collect != x ; then
242 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
243[Define if you want the garbage collector to operate in maximally
244 paranoid mode, validating the entire heap and collecting garbage at
245 every opportunity. This is extremely expensive.])
246fi
51d0e20c 247
a494747c 248
3ecc3258
ZW
249AC_ARG_ENABLE(cpp,
250[ --disable-cpp don't provide a user-visible C preprocessor.],
251[], [enable_cpp=yes])
252
253AC_ARG_WITH(cpp_install_dir,
254[ --with-cpp-install-dir=DIR
255 install the user visible C preprocessor in DIR
256 (relative to PREFIX) as well as PREFIX/bin.],
257[if test x$withval = xyes; then
258 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
259elif test x$withval != xno; then
260 cpp_install_dir=$withval
261fi])
262
c5c76735
JL
263# Enable Multibyte Characters for C/C++
264AC_ARG_ENABLE(c-mbchar,
265[ --enable-c-mbchar Enable multibyte characters for C and C++.],
2618c083 266if test x$enable_c_mbchar != xno; then
9ec7291f
ZW
267 AC_DEFINE(MULTIBYTE_CHARS, 1,
268 [Define if you want the C and C++ compilers to support multibyte
269 character sets for source code.])
c5c76735
JL
270fi)
271
0bbb1697
RK
272# Enable threads
273# Pass with no value to take the default
274# Pass with a value to specify a thread package
275AC_ARG_ENABLE(threads,
276[ --enable-threads enable thread usage for target GCC.
981d4858 277 --enable-threads=LIB use LIB thread package for target GCC.],,
0bbb1697
RK
278enable_threads='')
279
e445171e 280enable_threads_flag=$enable_threads
0bbb1697 281# Check if a valid thread package
e445171e 282case x${enable_threads_flag} in
0bbb1697
RK
283 x | xno)
284 # No threads
a851212a 285 target_thread_file='single'
0bbb1697
RK
286 ;;
287 xyes)
288 # default
a851212a 289 target_thread_file=''
0bbb1697
RK
290 ;;
291 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
a473fe45 292 xsolaris | xwin32 | xdce | xvxworks | xaix)
e445171e 293 target_thread_file=$enable_threads_flag
0bbb1697
RK
294 ;;
295 *)
296 echo "$enable_threads is an unknown thread package" 1>&2
297 exit 1
298 ;;
299esac
300
d8bb17c8
OP
301AC_ARG_ENABLE(objc-gc,
302[ --enable-objc-gc enable the use of Boehm's garbage collector with
303 the GNU Objective-C runtime.],
2618c083 304if test x$enable_objc_gc = xno; then
d8bb17c8
OP
305 objc_boehm_gc=''
306else
307 objc_boehm_gc=1
308fi,
309objc_boehm_gc='')
310
90e6a802 311AC_ARG_WITH(dwarf2,
756ee602 312[ --with-dwarf2 force the default debug format to be DWARF2.],
90e6a802
RL
313dwarf2="$with_dwarf2",
314dwarf2=no)
315
50503ac8
RH
316AC_ARG_ENABLE(shared,
317[ --disable-shared don't provide a shared libgcc.],
c785e0fa
AO
318[
319 case $enable_shared in
320 yes | no) ;;
321 *)
322 enable_shared=no
323 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
324 for pkg in $enableval; do
325 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
326 enable_shared=yes
327 fi
328 done
329 IFS="$ac_save_ifs"
330 ;;
331 esac
332], [enable_shared=yes])
50503ac8
RH
333AC_SUBST(enable_shared)
334
46f18e7b
RK
335# Determine the host, build, and target systems
336AC_CANONICAL_SYSTEM
337
e9a25f70
JL
338# Find the native compiler
339AC_PROG_CC
3ec83fc2 340AC_PROG_CC_C_O
b8dad04b 341# autoconf is lame and doesn't give us any substitution variable for this.
e38df833 342if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
b4c7e567 343 NO_MINUS_C_MINUS_O=yes
b8dad04b
ZW
344else
345 OUTPUT_OPTION='-o $@'
b4c7e567 346fi
3ec83fc2 347AC_SUBST(NO_MINUS_C_MINUS_O)
b8dad04b 348AC_SUBST(OUTPUT_OPTION)
3ec83fc2 349
99e757d5 350gcc_AC_C_LONG_DOUBLE
61842080 351
97d81d66
JM
352AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
353ac_cv_prog_cc_no_long_long,
354[save_CFLAGS="$CFLAGS"
355CFLAGS="-Wno-long-long"
356AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
357 ac_cv_prog_cc_no_long_long=no)
358CFLAGS="$save_CFLAGS"])
b8dad04b
ZW
359strict1_warn=
360if test $ac_cv_prog_cc_no_long_long = yes; then
361 strict1_warn="-pedantic -Wno-long-long"
362fi
363AC_SUBST(strict1_warn)
ff5def20 364
61842080
MM
365# If the native compiler is GCC, we can enable warnings even in stage1.
366# That's useful for people building cross-compilers, or just running a
367# quick `make'.
b8dad04b
ZW
368warn_cflags=
369if test "x$GCC" = "xyes"; then
370 warn_cflags='$(GCC_WARN_CFLAGS)'
61842080 371fi
b8dad04b 372AC_SUBST(warn_cflags)
5b67ad6f
DA
373
374# Stage specific cflags for build.
b8dad04b 375stage1_cflags=
5b67ad6f
DA
376case $build in
377vax-*-*)
378 if test x$GCC = xyes
379 then
b8dad04b 380 stage1_cflags="-Wa,-J"
5b67ad6f 381 else
b8dad04b 382 stage1_cflags="-J"
5b67ad6f
DA
383 fi
384 ;;
385esac
b8dad04b 386AC_SUBST(stage1_cflags)
61842080 387
e9a25f70
JL
388AC_PROG_MAKE_SET
389
ab339d62 390AC_MSG_CHECKING([whether a default assembler was specified])
3ccc3a56 391if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
e154a394 392 if test x"$gas_flag" = x"no"; then
3ccc3a56 393 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
ab339d62 394 else
3ccc3a56 395 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
ab339d62
AO
396 fi
397else
398 AC_MSG_RESULT(no)
399fi
400
401AC_MSG_CHECKING([whether a default linker was specified])
3ccc3a56 402if test x"${DEFAULT_LINKER+set}" = x"set"; then
e154a394 403 if test x"$gnu_ld_flag" = x"no"; then
3ccc3a56 404 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
ab339d62 405 else
3ccc3a56 406 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
ab339d62
AO
407 fi
408else
409 AC_MSG_RESULT(no)
410fi
411
4070d885
AJ
412AC_MSG_CHECKING(for GNU C library)
413AC_CACHE_VAL(gcc_cv_glibc,
414[AC_TRY_COMPILE(
415 [#include <features.h>],[
416#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
417#error Not a GNU C library system
418#endif],
419 [gcc_cv_glibc=yes],
420 gcc_cv_glibc=no)])
421AC_MSG_RESULT($gcc_cv_glibc)
c2f7d403 422if test $gcc_cv_glibc = yes; then
4070d885
AJ
423 AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
424fi
4797e955 425
603832a0
PT
426AC_C_INLINE
427
46f18e7b
RK
428# Find some useful tools
429AC_PROG_AWK
99e757d5
KG
430gcc_AC_PROG_LN
431gcc_AC_PROG_LN_S
432gcc_AC_C_VOLATILE
46f18e7b 433AC_PROG_RANLIB
99e757d5 434gcc_AC_PROG_INSTALL
46f18e7b 435
956d6950
JL
436AC_HEADER_STDC
437AC_HEADER_TIME
99e757d5 438gcc_AC_HEADER_STRING
e9831ca0 439AC_HEADER_SYS_WAIT
03c41c05
ZW
440AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
441 fcntl.h unistd.h stab.h sys/file.h sys/time.h \
442 sys/resource.h sys/param.h sys/times.h sys/stat.h \
d6edb99e 443 direct.h malloc.h langinfo.h iconv.h stdbool.h)
7636d567 444
f24af81b
TT
445# Check for thread headers.
446AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
447AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
448
bcf12124 449# See if GNAT has been installed
1ffc5c6e 450AC_CHECK_PROG(have_gnat, gnatbind, yes, no)
bcf12124 451
955be633
JM
452# See if we have the mktemp command.
453AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
454
09fa0705
ZW
455# Do we have a single-tree copy of texinfo?
456if test -f $srcdir/../texinfo/Makefile.in; then
457 MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
458 gcc_cv_prog_makeinfo_modern=yes
459 AC_MSG_RESULT([Using makeinfo from the unified source tree.])
460else
461 # See if makeinfo has been installed and is modern enough
462 # that we can use it.
463 gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
464 [GNU texinfo.* \([0-9][0-9.]*\)],
fd939e46 465 [4.*])
09fa0705
ZW
466fi
467
468if test $gcc_cv_prog_makeinfo_modern = no; then
469 AC_MSG_WARN([
470*** Makeinfo is missing or too old.
17db6582 471*** Info documentation will not be built.])
09fa0705 472 BUILD_INFO=
09fa0705
ZW
473else
474 BUILD_INFO=info AC_SUBST(BUILD_INFO)
09fa0705
ZW
475fi
476
3f896fc2
JM
477# Is pod2man recent enough to regenerate manpages?
478AC_MSG_CHECKING([for recent Pod::Man])
479if perl -e 'use 1.10 Pod::Man' >/dev/null 2>&1; then
fd939e46
JM
480 AC_MSG_RESULT(yes)
481 GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES)
482else
483 AC_MSG_RESULT(no)
484 GENERATED_MANPAGES=
485fi
486
1e608388
ZW
487# How about lex?
488dnl Don't use AC_PROG_LEX; we insist on flex.
489dnl LEXLIB is not useful in gcc.
490if test -f $srcdir/../flex/skel.c; then
491 FLEX='$(objdir)/../flex/flex'
492else
493 AC_CHECK_PROG(FLEX, flex, flex, false)
494fi
495
496# Bison?
497# The -L switch is so bison can find its skeleton file.
498if test -f $srcdir/../bison/bison.simple; then
499 BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
500else
501 AC_CHECK_PROG(BISON, bison, bison, false)
502fi
503
890ad3ea
KG
504# See if the stage1 system preprocessor understands the ANSI C
505# preprocessor stringification operator.
506AC_C_STRINGIZE
76844337 507
7636d567
JW
508# Use <inttypes.h> only if it exists,
509# doesn't clash with <sys/types.h>, and declares intmax_t.
510AC_MSG_CHECKING(for inttypes.h)
511AC_CACHE_VAL(gcc_cv_header_inttypes_h,
512[AC_TRY_COMPILE(
513 [#include <sys/types.h>
514#include <inttypes.h>],
515 [intmax_t i = -1;],
9da0e39b 516 [gcc_cv_header_inttypes_h=yes],
7636d567
JW
517 gcc_cv_header_inttypes_h=no)])
518AC_MSG_RESULT($gcc_cv_header_inttypes_h)
9da0e39b 519if test $gcc_cv_header_inttypes_h = yes; then
119d24d1
KG
520 AC_DEFINE(HAVE_INTTYPES_H, 1,
521 [Define if you have a working <inttypes.h> header file.])
9da0e39b 522fi
cdcc6a01 523
c149cc37
RL
524#
525# Determine if enumerated bitfields are unsigned. ISO C says they can
526# be either signed or unsigned.
527#
528AC_CACHE_CHECK(for unsigned enumerated bitfields, gcc_cv_enum_bf_unsigned,
529[AC_TRY_RUN(#include <stdlib.h>
530enum t { BLAH = 128 } ;
531struct s_t { enum t member : 8; } s ;
532int main(void)
533{
534 s.member = BLAH;
535 if (s.member < 0) exit(1);
536 exit(0);
537
538}, gcc_cv_enum_bf_unsigned=yes, gcc_cv_enum_bf_unsigned=no, gcc_cv_enum_bf_unsigned=yes)])
c149cc37
RL
539if test $gcc_cv_enum_bf_unsigned = yes; then
540 AC_DEFINE(ENUM_BITFIELDS_ARE_UNSIGNED, 1,
541 [Define if enumerated bitfields are treated as unsigned values.])
542fi
543
2e09e75a
JM
544AC_CHECK_FUNCS(strtoul bsearch putenv popen bcopy \
545 strchr strrchr kill getrlimit setrlimit atoll atoq \
54953b66 546 sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \
130fadbb 547 fputs_unlocked getrusage iconv nl_langinfo)
a81fb89e 548
f12bc141 549AC_CHECK_TYPE(ssize_t, int)
56f48ce9 550
e256b8b6
DA
551# Try to determine the array type of the second argument of getgroups
552# for the target system (int or gid_t).
553AC_TYPE_GETGROUPS
554if test "${target}" = "${build}"; then
555 TARGET_GETGROUPS_T=$ac_cv_type_getgroups
556else
557 case "${target}" in
558 # This condition may need some tweaking. It should include all
559 # targets where the array type of the second argument of getgroups
560 # is int and the type of gid_t is not equivalent to int.
561 *-*-sunos* | *-*-ultrix*)
562 TARGET_GETGROUPS_T=int
563 ;;
564 *)
565 TARGET_GETGROUPS_T=gid_t
566 ;;
567 esac
568fi
569AC_SUBST(TARGET_GETGROUPS_T)
570
99e757d5 571gcc_AC_FUNC_VFPRINTF_DOPRNT
b3e1e64f 572gcc_AC_FUNC_STRSTR
99e757d5 573gcc_AC_FUNC_PRINTF_PTR
b27d2bd5
MK
574
575case "${host}" in
576*-*-uwin*)
34fa3e7d
MM
577 AC_MSG_ERROR([
578*** UWIN may not be used as a host platform because
579*** linking with posix.dll is not allowed by the GNU GPL])
b27d2bd5
MK
580 ;;
581esac
c375c43b 582AC_FUNC_VFORK
4acab94b 583AC_FUNC_MMAP_ANYWHERE
56f02b88 584AC_FUNC_MMAP_FILE
f1b54f9b 585
86cf1cbd
KG
586# We will need to find libiberty.h and ansidecl.h
587saved_CFLAGS="$CFLAGS"
588CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
2e09e75a
JM
589gcc_AC_CHECK_DECLS(bcopy \
590 getenv atol sbrk abort atof getcwd getwd \
86cf1cbd 591 strsignal putc_unlocked fputs_unlocked strstr environ \
f31e826b 592 malloc realloc calloc free basename getopt, , ,[
86cf1cbd
KG
593#include "gansidecl.h"
594#include "system.h"])
c5c76735 595
f31e826b 596gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
86cf1cbd
KG
597#include "gansidecl.h"
598#include "system.h"
d2cabf16
KG
599#ifdef HAVE_SYS_RESOURCE_H
600#include <sys/resource.h>
601#endif
602])
603
86cf1cbd
KG
604# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
605CFLAGS="$saved_CFLAGS"
606
75923b2f 607# mkdir takes a single argument on some systems.
99e757d5 608gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
75923b2f 609
46f18e7b
RK
610# File extensions
611manext='.1'
612objext='.o'
46f18e7b
RK
613AC_SUBST(manext)
614AC_SUBST(objext)
46f18e7b
RK
615
616build_xm_file=
61536478 617build_xm_defines=
46f18e7b
RK
618build_install_headers_dir=install-headers-tar
619build_exeext=
620host_xm_file=
61536478 621host_xm_defines=
46f18e7b
RK
622host_xmake_file=
623host_truncate_target=
6e26218f 624host_exeext=
46f18e7b
RK
625
626# Decode the host machine, then the target machine.
627# For the host machine, we save the xm_file variable as host_xm_file;
628# then we decode the target machine and forget everything else
629# that came from the host machine.
630for machine in $build $host $target; do
61ed06c3 631 . ${srcdir}/config.gcc
46f18e7b
RK
632done
633
634extra_objs="${host_extra_objs} ${extra_objs}"
635
636# Default the target-machine variables that were not explicitly set.
75bffa71 637if test x"$tm_file" = x
46f18e7b
RK
638then tm_file=$cpu_type/$cpu_type.h; fi
639
6b2adea9 640if test x"$extra_headers" = x
46f18e7b
RK
641then extra_headers=; fi
642
75bffa71 643if test x"$xm_file" = x
46f18e7b
RK
644then xm_file=$cpu_type/xm-$cpu_type.h; fi
645
75bffa71 646if test x$md_file = x
e98e406f 647then md_file=$cpu_type/$cpu_type.md; fi
46f18e7b 648
75bffa71 649if test x$out_file = x
46f18e7b
RK
650then out_file=$cpu_type/$cpu_type.c; fi
651
75bffa71 652if test x"$tmake_file" = x
46f18e7b
RK
653then tmake_file=$cpu_type/t-$cpu_type
654fi
655
90e6a802 656if test x"$dwarf2" = xyes
756ee602 657then tm_file="$tm_file tm-dwarf2.h"
90e6a802
RL
658fi
659
75bffa71 660if test x$float_format = x
46f18e7b
RK
661then float_format=i64
662fi
663
027ea2a7
JW
664if test $float_format = none
665then float_h_file=Makefile.in
666else float_h_file=float-$float_format.h
667fi
668
9fc9b82a 669# Handle cpp installation.
3ecc3258 670if test x$enable_cpp != xno
9fc9b82a
L
671then
672 tmake_file="$tmake_file t-install-cpp"
673fi
674
46f18e7b 675# Say what files are being used for the output code and MD file.
11642c3a 676echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
46f18e7b
RK
677echo "Using \`$srcdir/config/$md_file' as machine description file."
678
11642c3a
ZW
679# If any of the xm_file variables contain nonexistent files, warn
680# about them and drop them. But $cpu/xm-$cpu.h is allowed not to
681# exist, if we have nothing for it to do.
682
683bx=
684for x in $build_xm_file; do
685 if test -f $srcdir/config/$x
686 then bx="$bx $x"
687 elif echo $x | grep '\([a-z0-9][a-z0-9]*\)/xm-\1\.h' >/dev/null
688 then :
689 else AC_MSG_WARN($srcdir/config/$x does not exist.)
690 fi
691done
692build_xm_file="$bx"
693
694hx=
695for x in $host_xm_file; do
696 if test -f $srcdir/config/$x
697 then hx="$hx $x"
698 elif echo $x | grep '\([a-z0-9][a-z0-9]*\)/xm-\1\.h' >/dev/null
699 then :
700 else AC_MSG_WARN($srcdir/config/$x does not exist.)
701 fi
702done
703host_xm_file="$hx"
704
705tx=
706for x in $xm_file; do
707 if test -f $srcdir/config/$x
708 then tx="$tx $x"
709 elif echo $x | grep '\([a-z0-9][a-z0-9]*\)/xm-\1\.h' >/dev/null
710 then :
711 else AC_MSG_WARN($srcdir/config/$x does not exist.)
712 fi
713done
714xm_file="$tx"
715
46f18e7b
RK
716count=a
717for f in $tm_file; do
718 count=${count}x
719done
75bffa71 720if test $count = ax; then
46f18e7b
RK
721 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
722else
723 echo "Using the following target machine macro files:"
724 for f in $tm_file; do
725 echo " $srcdir/config/$f"
726 done
727fi
728
729count=a
730for f in $host_xm_file; do
731 count=${count}x
732done
11642c3a
ZW
733if test $count = a; then
734 :
735elif test $count = ax; then
46f18e7b
RK
736 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
737else
738 echo "Using the following host machine macro files:"
739 for f in $host_xm_file; do
740 echo " $srcdir/config/$f"
741 done
742fi
743
75bffa71 744if test "$host_xm_file" != "$build_xm_file"; then
46f18e7b
RK
745 count=a
746 for f in $build_xm_file; do
747 count=${count}x
748 done
11642c3a
ZW
749 if test $count = a; then
750 :
751 elif test $count = ax; then
46f18e7b
RK
752 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
753 else
754 echo "Using the following build machine macro files:"
755 for f in $build_xm_file; do
756 echo " $srcdir/config/$f"
757 done
758 fi
759fi
760
75bffa71
ILT
761if test x$thread_file = x; then
762 if test x$target_thread_file != x; then
a851212a
JW
763 thread_file=$target_thread_file
764 else
765 thread_file='single'
766 fi
46f18e7b 767fi
46f18e7b 768
b7cb92ad 769# auto-host.h is the file containing items generated by autoconf and is
e9a25f70 770# the first file included by config.h.
b7cb92ad 771# If host=build, it is correct to have hconfig include auto-host.h
db81d74a
RH
772# as well. If host!=build, we are in error and need to do more
773# work to find out the build config parameters.
75bffa71 774if test x$host = x$build
db81d74a 775then
eaf4e618 776 build_auto=auto-host.h
b7cb92ad
JL
777else
778 # We create a subdir, then run autoconf in the subdir.
779 # To prevent recursion we set host and build for the new
780 # invocation of configure to the build for this invocation
781 # of configure.
782 tempdir=build.$$
783 rm -rf $tempdir
784 mkdir $tempdir
785 cd $tempdir
786 case ${srcdir} in
b86ecfa9 787 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
b7cb92ad
JL
788 *) realsrcdir=../${srcdir};;
789 esac
fe81dd69 790 CC=${CC_FOR_BUILD} ${realsrcdir}/configure \
b7cb92ad
JL
791 --target=$target --host=$build --build=$build
792
793 # We just finished tests for the build machine, so rename
794 # the file auto-build.h in the gcc directory.
795 mv auto-host.h ../auto-build.h
796 cd ..
797 rm -rf $tempdir
eaf4e618 798 build_auto=auto-build.h
db81d74a
RH
799fi
800
eaf4e618
ZW
801tm_file="${tm_file} defaults.h"
802host_xm_file="auto-host.h gansidecl.h ${host_xm_file} ${tm_file} hwint.h"
803build_xm_file="${build_auto} gansidecl.h ${build_xm_file} ${tm_file} hwint.h"
804xm_file="gansidecl.h ${xm_file} ${tm_file}"
0056a9b5 805
46f18e7b 806# Truncate the target if necessary
75bffa71 807if test x$host_truncate_target != x; then
46f18e7b
RK
808 target=`echo $target | sed -e 's/\(..............\).*/\1/'`
809fi
810
f1943b77 811# Get the version trigger filename from the toplevel
75bffa71 812if test "${with_gcc_version_trigger+set}" = set; then
f1943b77
MH
813 gcc_version_trigger=$with_gcc_version_trigger
814else
815 gcc_version_trigger=${srcdir}/version.c
816fi
75bffa71 817changequote(,)dnl
8763704d
JM
818gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
819gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
cc1e60ea
JM
820
821# Compile in configure arguments.
8105825d 822if test -f configargs.h ; then
cc1e60ea
JM
823 # Being re-configured.
824 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
825 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
826else
827 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
828fi
829cat > configargs.h <<EOF
830/* Generated automatically. */
831static const char configuration_arguments[] = "$gcc_config_arguments";
832EOF
75bffa71 833changequote([,])dnl
46f18e7b 834
ab87f8c8
JL
835# Internationalization
836PACKAGE=gcc
837VERSION="$gcc_version"
119d24d1
KG
838AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",
839 [Define to the name of the distribution.])
840AC_DEFINE_UNQUOTED(VERSION, "$VERSION",
841 [Define to the version of the distribution.])
ab87f8c8
JL
842AC_SUBST(PACKAGE)
843AC_SUBST(VERSION)
844
2be36552 845ALL_LINGUAS="sv"
ab87f8c8 846
dc6746e7 847# Enable NLS support by default
ab87f8c8 848AC_ARG_ENABLE(nls,
dc6746e7
PT
849 [ --enable-nls use Native Language Support (default)],
850 , enable_nls=yes)
851
852# if cross compiling, disable NLS support.
853# It's not worth the trouble, at least for now.
854
063a4b85 855if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
dc6746e7
PT
856 AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
857 enable_nls=no
858fi
ab87f8c8 859
4adee315
PT
860# if NLS is enabled, also enable check in po subdir
861if test $enable_nls = yes; then
862 CHECK_PO=check-po
863else
864 CHECK_PO=""
865fi
866
867AC_SUBST(CHECK_PO)
868
ab87f8c8
JL
869AM_GNU_GETTEXT
870XGETTEXT="AWK='$AWK' \$(SHELL) \$(top_srcdir)/exgettext $XGETTEXT"
871
f4ab28e3
MK
872# Windows32 Registry support for specifying GCC installation paths.
873AC_ARG_ENABLE(win32-registry,
874[ --disable-win32-registry
875 Disable lookup of installation paths in the
876 Registry on Windows hosts.
877 --enable-win32-registry Enable registry lookup (default).
878 --enable-win32-registry=KEY
879 Use KEY instead of GCC version as the last portion
880 of the registry key.],,)
881
882AC_MSG_CHECKING(whether windows registry support is requested)
883if test x$enable_win32_registry != xno; then
119d24d1
KG
884 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
885[Define to 1 if installation paths should be looked up in Windows32
91029a29 886 Registry. Ignored on non windows32 hosts.])
f4ab28e3
MK
887 AC_MSG_RESULT(yes)
888else
889 AC_MSG_RESULT(no)
890fi
891
892# Check if user specified a different registry key.
893case x${enable_win32_registry} in
894x | xyes)
895 # default.
896 gcc_cv_win32_registry_key="$VERSION"
897 ;;
898xno)
899 # no registry lookup.
900 gcc_cv_win32_registry_key=''
901 ;;
902*)
903 # user-specified key.
904 gcc_cv_win32_registry_key="$enable_win32_registry"
905 ;;
906esac
907
908if test x$enable_win32_registry != xno; then
909 AC_MSG_CHECKING(registry key on windows hosts)
119d24d1
KG
910 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
911 [Define to be the last portion of registry key on windows hosts.])
f4ab28e3
MK
912 AC_MSG_RESULT($gcc_cv_win32_registry_key)
913fi
914
7fa10b25
RK
915# Get an absolute path to the GCC top-level source directory
916holddir=`pwd`
917cd $srcdir
918topdir=`pwd`
919cd $holddir
920
af5e4ada 921# Conditionalize the makefile for this host machine.
94f42018
DE
922# Make-host contains the concatenation of all host makefile fragments
923# [there can be more than one]. This file is built by configure.frag.
924host_overrides=Make-host
af5e4ada 925dep_host_xmake_file=
94f42018
DE
926for f in .. ${host_xmake_file}
927do
75bffa71 928 if test -f ${srcdir}/config/$f
94f42018
DE
929 then
930 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
931 fi
932done
46f18e7b 933
af5e4ada 934# Conditionalize the makefile for this target machine.
94f42018
DE
935# Make-target contains the concatenation of all host makefile fragments
936# [there can be more than one]. This file is built by configure.frag.
937target_overrides=Make-target
af5e4ada 938dep_tmake_file=
94f42018
DE
939for f in .. ${tmake_file}
940do
75bffa71 941 if test -f ${srcdir}/config/$f
94f42018
DE
942 then
943 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
944 fi
945done
5891b37d 946
af5e4ada
DE
947# If the host doesn't support symlinks, modify CC in
948# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
949# Otherwise, we can use "CC=$(CC)".
950rm -f symtest.tem
61536478 951if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
af5e4ada
DE
952then
953 cc_set_by_configure="\$(CC)"
5aa82ace 954 quoted_cc_set_by_configure="\$(CC)"
af5e4ada
DE
955 stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
956else
61536478
JL
957 rm -f symtest.tem
958 if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
959 then
960 symbolic_link="cp -p"
961 else
962 symbolic_link="cp"
963 fi
af5e4ada 964 cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
5aa82ace 965 quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
af5e4ada
DE
966 stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
967fi
968rm -f symtest.tem
5891b37d 969
af5e4ada 970out_object_file=`basename $out_file .c`.o
5891b37d 971
af5e4ada
DE
972tm_file_list=
973for f in $tm_file; do
64ccbc99 974 case $f in
c913b6f1 975 gansidecl.h | defaults.h )
64ccbc99
KG
976 tm_file_list="${tm_file_list} $f" ;;
977 *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
978 esac
af5e4ada 979done
46f18e7b 980
11642c3a
ZW
981tm_p_file_list=
982for f in $tm_p_file; do
983 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
984done
985
af5e4ada
DE
986host_xm_file_list=
987for f in $host_xm_file; do
64ccbc99 988 case $f in
c913b6f1 989 auto-host.h | gansidecl.h | defaults.h | hwint.h )
64ccbc99
KG
990 host_xm_file_list="${host_xm_file_list} $f" ;;
991 *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
992 esac
af5e4ada
DE
993done
994
995build_xm_file_list=
996for f in $build_xm_file; do
64ccbc99 997 case $f in
c913b6f1 998 auto-build.h | auto-host.h | gansidecl.h | defaults.h | hwint.h )
64ccbc99
KG
999 build_xm_file_list="${build_xm_file_list} $f" ;;
1000 *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1001 esac
af5e4ada 1002done
46f18e7b 1003
af5e4ada
DE
1004# Define macro CROSS_COMPILE in compilation
1005# if this is a cross-compiler.
1006# Also use all.cross instead of all.internal
1007# and add cross-make to Makefile.
571a8de5 1008cross_overrides="/dev/null"
75bffa71 1009if test x$host != x$target
af5e4ada
DE
1010then
1011 cross_defines="CROSS=-DCROSS_COMPILE"
1012 cross_overrides="${topdir}/cross-make"
1013fi
46f18e7b 1014
b39d221a
EC
1015# If this is a cross-compiler that does not
1016# have its own set of headers then define
1017# inhibit_libc
1018
1019# If this is using newlib, then define inhibit_libc in
1020# LIBGCC2_CFLAGS. This will cause __eprintf to be left out of
1021# libgcc.a, but that's OK because newlib should have its own version of
1022# assert.h.
1023inhibit_libc=
1024if [test x$host != x$target] && [test x$with_headers = x]; then
1025 inhibit_libc=-Dinhibit_libc
1026else
1027 if [test x$with_newlib = xyes]; then
1028 inhibit_libc=-Dinhibit_libc
1029 fi
1030fi
1031AC_SUBST(inhibit_libc)
1032
af5e4ada
DE
1033# When building gcc with a cross-compiler, we need to fix a few things.
1034# This must come after cross-make as we want all.build to override
1035# all.cross.
571a8de5 1036build_overrides="/dev/null"
75bffa71 1037if test x$build != x$host
af5e4ada
DE
1038then
1039 build_overrides="${topdir}/build-make"
1040fi
46f18e7b 1041
ae3a15bb
DE
1042# Expand extra_headers to include complete path.
1043# This substitutes for lots of t-* files.
1044extra_headers_list=
75bffa71 1045if test "x$extra_headers" = x
ae3a15bb
DE
1046then true
1047else
1048 # Prepend ${srcdir}/ginclude/ to every entry in extra_headers.
1049 for file in $extra_headers;
1050 do
1051 extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/${file}"
1052 done
1053fi
1054
75bffa71 1055if test x$use_collect2 = xno; then
2ce3c6c6
JM
1056 use_collect2=
1057fi
1058
af5e4ada
DE
1059# Add a definition of USE_COLLECT2 if system wants one.
1060# Also tell toplev.c what to do.
1061# This substitutes for lots of t-* files.
75bffa71 1062if test x$use_collect2 = x
af5e4ada
DE
1063then
1064 will_use_collect2=
1065 maybe_use_collect2=
1066else
10da1131 1067 will_use_collect2="collect2"
af5e4ada
DE
1068 maybe_use_collect2="-DUSE_COLLECT2"
1069fi
1070
af5e4ada 1071# If we have gas in the build tree, make a link to it.
75bffa71 1072if test -f ../gas/Makefile; then
6e26218f 1073 rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
af5e4ada
DE
1074fi
1075
4b95eb49 1076# If we have nm in the build tree, make a link to it.
75bffa71 1077if test -f ../binutils/Makefile; then
4b95eb49
JL
1078 rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1079fi
1080
af5e4ada 1081# If we have ld in the build tree, make a link to it.
75bffa71
ILT
1082if test -f ../ld/Makefile; then
1083# if test x$use_collect2 = x; then
6e26218f 1084# rm -f ld; $symbolic_link ../ld/ld-new$host_exeext ld$host_exeext 2>/dev/null
aa32d841 1085# else
6e26218f 1086 rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
aa32d841 1087# fi
af5e4ada
DE
1088fi
1089
981d4858
JM
1090# Figure out what assembler we will be using.
1091AC_MSG_CHECKING(what assembler to use)
9e423e6d 1092gcc_cv_as=
981d4858
JM
1093gcc_cv_gas_major_version=
1094gcc_cv_gas_minor_version=
a2f319ea 1095gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
3ccc3a56
AO
1096if test -x "$DEFAULT_ASSEMBLER"; then
1097 gcc_cv_as="$DEFAULT_ASSEMBLER"
1098elif test -x "$AS"; then
1099 gcc_cv_as="$AS"
ab339d62 1100elif test -x as$host_exeext; then
9e423e6d
JW
1101 # Build using assembler in the current directory.
1102 gcc_cv_as=./as$host_exeext
5585c1bc 1103elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
9e423e6d 1104 # Single tree build which includes gas.
a2c9d57c 1105 for f in $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
9e423e6d 1106 do
75bffa71
ILT
1107changequote(,)dnl
1108 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1109changequote([,])dnl
1110 if test x$gcc_cv_gas_version != x; then
9e423e6d
JW
1111 break
1112 fi
1113 done
75bffa71
ILT
1114changequote(,)dnl
1115 gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
1116 gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1117changequote([,])dnl
981d4858
JM
1118fi
1119
1120if test "x$gcc_cv_as" = x -a x$host = x$target; then
9e423e6d 1121 # Native build.
779243f7
JL
1122 # Search the same directories that the installed compiler will
1123 # search. Else we may find the wrong assembler and lose. If we
1124 # do not find a suitable assembler binary, then try the user's
1125 # path.
1126 #
1127 # Also note we have to check MD_EXEC_PREFIX before checking the
1128 # user's path. Unfortunately, there is no good way to get at the
1129 # value of MD_EXEC_PREFIX here. So we do a brute force search
1130 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
1131 # to be fixed as part of the make/configure rewrite too.
1132
1133 if test "x$exec_prefix" = xNONE; then
1134 if test "x$prefix" = xNONE; then
1135 test_prefix=/usr/local
1136 else
1137 test_prefix=$prefix
1138 fi
1139 else
1140 test_prefix=$exec_prefix
1141 fi
1142
1143 # If the loop below does not find an assembler, then use whatever
1144 # one we can find in the users's path.
1145 # user's path.
1146 as=as$host_exeext
1147
1148 test_dirs="$test_prefix/lib/gcc-lib/$target/$gcc_version \
1149 $test_prefix/lib/gcc-lib/$target \
1150 /usr/lib/gcc/$target/$gcc_version \
1151 /usr/lib/gcc/$target \
1152 $test_prefix/$target/bin/$target/$gcc_version \
1153 $test_prefix/$target/bin \
1154 /usr/libexec \
1155 /usr/ccs/gcc \
1156 /usr/ccs/bin \
1157 /udk/usr/ccs/bin \
1158 /bsd43/usr/lib/cmplrs/cc \
1159 /usr/cross64/usr/bin \
1160 /usr/lib/cmplrs/cc \
1161 /sysv/usr/lib/cmplrs/cc \
1162 /svr4/usr/lib/cmplrs/cc \
1163 /usr/bin"
1164
1165 for dir in $test_dirs; do
1166 if test -f $dir/as$host_exeext; then
1167 gcc_cv_as=$dir/as$host_exeext
1168 break;
1169 fi
1170 done
9e423e6d 1171fi
981d4858
JM
1172if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1173 AC_MSG_RESULT("newly built gas")
1174else
1175 AC_MSG_RESULT($gcc_cv_as)
1176fi
1177
1178# Figure out what nm we will be using.
1179AC_MSG_CHECKING(what nm to use)
1180if test -x nm$host_exeext; then
1181 gcc_cv_nm=./nm$host_exeext
1182elif test x$host = x$target; then
1183 # Native build.
1184 gcc_cv_nm=nm$host_exeext
1185fi
1186AC_MSG_RESULT($gcc_cv_nm)
1187
1188# Figure out what assembler alignment features are present.
1189AC_MSG_CHECKING(assembler alignment features)
9d147085 1190gcc_cv_as_alignment_features=none
981d4858
JM
1191if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1192 # Gas version 2.6 and later support for .balign and .p2align.
1193 # bytes to skip when using .p2align.
1194 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 6 -o "$gcc_cv_gas_major_version" -gt 2; then
1195 gcc_cv_as_alignment_features=".balign and .p2align"
1196 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1197 fi
1198 # Gas version 2.8 and later support specifying the maximum
1199 # bytes to skip when using .p2align.
1200 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 8 -o "$gcc_cv_gas_major_version" -gt 2; then
1201 gcc_cv_as_alignment_features=".p2align including maximum skip"
1202 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1203 fi
1204elif test x$gcc_cv_as != x; then
00ccc16d
JL
1205 # Check if we have .balign and .p2align
1206 echo ".balign 4" > conftest.s
1207 echo ".p2align 2" >> conftest.s
1208 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1209 gcc_cv_as_alignment_features=".balign and .p2align"
1210 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1211 fi
1212 rm -f conftest.s conftest.o
9e423e6d
JW
1213 # Check if specifying the maximum bytes to skip when
1214 # using .p2align is supported.
1215 echo ".p2align 4,,7" > conftest.s
1216 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1217 gcc_cv_as_alignment_features=".p2align including maximum skip"
1218 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1219 fi
1220 rm -f conftest.s conftest.o
1221fi
1222AC_MSG_RESULT($gcc_cv_as_alignment_features)
1223
d1accaa3 1224AC_MSG_CHECKING(assembler subsection support)
9d147085 1225gcc_cv_as_subsections=no
981d4858
JM
1226if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1227 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1228 gcc_cv_as_subsections="working .subsection -1"
1229 fi
1230elif test x$gcc_cv_as != x; then
d1accaa3
JJ
1231 # Check if we have .subsection
1232 echo ".subsection 1" > conftest.s
1233 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1234 gcc_cv_as_subsections=".subsection"
d1accaa3
JJ
1235 if test x$gcc_cv_nm != x; then
1236 cat > conftest.s <<EOF
1237conftest_label1: .word 0
1238.subsection -1
1239conftest_label2: .word 0
1240.previous
1241EOF
1242 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1243 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1244 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1b015bec
AO
1245 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1246 :
1247 else
d1accaa3 1248 gcc_cv_as_subsections="working .subsection -1"
d1accaa3
JJ
1249 fi
1250 fi
1251 fi
1252 fi
1253 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1254fi
981d4858
JM
1255if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1256 AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1257[Define if your assembler supports .subsection and .subsection -1 starts
1258 emitting at the beginning of your section.])
1259fi
d1accaa3
JJ
1260AC_MSG_RESULT($gcc_cv_as_subsections)
1261
12822146 1262AC_MSG_CHECKING(assembler weak support)
9d147085 1263gcc_cv_as_weak=no
981d4858
JM
1264if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1265 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
1266 gcc_cv_as_weak="yes"
1267 fi
1268elif test x$gcc_cv_as != x; then
12822146
JL
1269 # Check if we have .weak
1270 echo " .weak foobar" > conftest.s
1271 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
12822146
JL
1272 gcc_cv_as_weak="yes"
1273 fi
1274 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1275fi
981d4858
JM
1276if test x"$gcc_cv_as_weak" = xyes; then
1277 AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1278fi
12822146
JL
1279AC_MSG_RESULT($gcc_cv_as_weak)
1280
6a9c5260 1281AC_MSG_CHECKING(assembler hidden support)
9d147085 1282gcc_cv_as_hidden=no
981d4858
JM
1283if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1284 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1285 gcc_cv_as_hidden="yes"
1286 fi
1287elif test x$gcc_cv_as != x; then
6a9c5260
UD
1288 # Check if we have .hidden
1289 echo " .hidden foobar" > conftest.s
1290 echo "foobar:" >> conftest.s
1291 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6a9c5260
UD
1292 gcc_cv_as_hidden="yes"
1293 fi
1294 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1295fi
981d4858
JM
1296if test x"$gcc_cv_as_hidden" = xyes; then
1297 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1298 [Define if your assembler supports .hidden.])
1299fi
6a9c5260
UD
1300AC_MSG_RESULT($gcc_cv_as_hidden)
1301
b7460f24
RH
1302AC_MSG_CHECKING(assembler leb128 support)
1303gcc_cv_as_hidden=no
1304if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1305 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1306 gcc_cv_as_leb128="yes"
1307 fi
1308elif test x$gcc_cv_as != x; then
1309 # Check if we have .[us]leb128, and support symbol arithmetic with it.
1310 cat > conftest.s <<EOF
1311 .data
1312 .uleb128 L2 - L1
1313L1:
1314 .uleb128 1280
1315 .sleb128 -1010
1316L2:
1317EOF
1318 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1319 gcc_cv_as_leb128="yes"
1320 fi
1321 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1322fi
1323if test x"$gcc_cv_as_leb128" = xyes; then
1324 AC_DEFINE(HAVE_AS_LEB128, 1,
1325 [Define if your assembler supports .uleb128.])
1326fi
1327AC_MSG_RESULT($gcc_cv_as_leb128)
1328
1cb36a98
RH
1329case "$target" in
1330 sparc*-*-*)
5b68c389
AO
1331 AC_CACHE_CHECK([assembler .register pseudo-op support],
1332 gcc_cv_as_register_pseudo_op, [
1333 gcc_cv_as_register_pseudo_op=unknown
1334 if test x$gcc_cv_as != x; then
1335 # Check if we have .register
1336 echo ".register %g2, #scratch" > conftest.s
1337 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1cb36a98 1338 gcc_cv_as_register_pseudo_op=yes
5b68c389
AO
1339 else
1340 gcc_cv_as_register_pseudo_op=no
1341 fi
1342 rm -f conftest.s conftest.o
1cb36a98 1343 fi
5b68c389
AO
1344 ])
1345 if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
119d24d1
KG
1346 AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
1347 [Define if your assembler supports .register.])
1cb36a98 1348 fi
1cb36a98 1349
e95b1e6a
JJ
1350 AC_CACHE_CHECK([assembler supports -relax],
1351 gcc_cv_as_relax_opt, [
1352 gcc_cv_as_relax_opt=unknown
1353 if test x$gcc_cv_as != x; then
1354 # Check if gas supports -relax
1355 echo ".text" > conftest.s
1356 if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
1357 gcc_cv_as_relax_opt=yes
1358 else
1359 gcc_cv_as_relax_opt=no
1360 fi
1361 rm -f conftest.s conftest.o
1362 fi
1363 ])
1364 if test "x$gcc_cv_as_relax_opt" = xyes; then
1365 AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
1366 [Define if your assembler supports -relax option.])
1367 fi
1368
5b68c389
AO
1369 case "$tm_file" in
1370 *64*)
1371 AC_CACHE_CHECK([for 64 bit support in assembler ($gcc_cv_as)],
1372 gcc_cv_as_flags64, [
1373 if test -n "$gcc_cv_as"; then
1374 echo ".xword foo" > conftest.s
1375 gcc_cv_as_flags64=no
8a90b95d 1376 for flag in "-xarch=v9" "-64 -Av9"; do
5b68c389
AO
1377 if $gcc_cv_as $flag -o conftest.o conftest.s \
1378 > /dev/null 2>&1; then
1379 gcc_cv_as_flags64=$flag
1380 break
1381 fi
1382 done
1383 rm -f conftest.s conftest.o
1384 else
1385 if test "$gas" = yes; then
1386 gcc_cv_as_flags64="-64 -Av9"
1387 else
1388 gcc_cv_as_flags64="-xarch=v9"
1389 fi
1cb36a98 1390 fi
5b68c389
AO
1391 ])
1392 if test "x$gcc_cv_as_flags64" = xno; then
1393changequote(, )
1394 tmake_file=`echo " $tmake_file " | sed -e 's, sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
1395 dep_tmake_file=`echo " $dep_tmake_file " | sed -e 's, [^ ]*/config/sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
1396changequote([, ])
1397 else
119d24d1
KG
1398 AC_DEFINE_UNQUOTED(AS_SPARC64_FLAG, "$gcc_cv_as_flags64",
1399 [Define if the assembler supports 64bit sparc.])
1cb36a98 1400 fi
5b68c389
AO
1401 ;;
1402 *) gcc_cv_as_flags64=${gcc_cv_as_flags64-no}
1403 ;;
1404 esac
1405
1406 if test "x$gcc_cv_as_flags64" != xno; then
1407 AC_CACHE_CHECK([for assembler offsetable %lo() support],
1408 gcc_cv_as_offsetable_lo10, [
1409 gcc_cv_as_offsetable_lo10=unknown
1410 if test "x$gcc_cv_as" != x; then
1411 # Check if assembler has offsetable %lo()
1412 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
1413 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
1414 if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s \
1415 > /dev/null 2>&1 &&
1416 $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s \
1417 > /dev/null 2>&1; then
1418 if cmp conftest.o conftest1.o > /dev/null 2>&1; then
1419 gcc_cv_as_offsetable_lo10=no
1420 else
1421 gcc_cv_as_offsetable_lo10=yes
1422 fi
1423 else
1424 gcc_cv_as_offsetable_lo10=no
1cb36a98 1425 fi
5b68c389
AO
1426 rm -f conftest.s conftest.o conftest1.s conftest1.o
1427 fi
1428 ])
1429 if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
119d24d1
KG
1430 AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
1431 [Define if your assembler supports offsetable %lo().])
1cb36a98 1432 fi
1cb36a98 1433 fi
1cb36a98
RH
1434 ;;
1435
1436changequote(,)dnl
1437 i[34567]86-*-*)
1438changequote([,])dnl
1439 AC_MSG_CHECKING(assembler instructions)
1440 gcc_cv_as_instructions=
981d4858
JM
1441 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
1442 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
1443 gcc_cv_as_instructions="filds fists"
1444 fi
1445 elif test x$gcc_cv_as != x; then
53b5ce19
JW
1446 set "filds fists" "filds mem; fists mem"
1447 while test $# -gt 0
1448 do
1449 echo "$2" > conftest.s
1450 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1451 gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
53b5ce19
JW
1452 fi
1453 shift 2
1454 done
1455 rm -f conftest.s conftest.o
1cb36a98 1456 fi
981d4858 1457 if test x"$gcc_cv_as_instructions" != x; then
ee7692d2 1458 AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
981d4858 1459 fi
1cb36a98
RH
1460 AC_MSG_RESULT($gcc_cv_as_instructions)
1461 ;;
1462esac
53b5ce19 1463
9d147085
RH
1464AC_MSG_CHECKING(assembler dwarf2 debug_line support)
1465gcc_cv_as_dwarf2_debug_line=no
1466# ??? Not all targets support dwarf2 debug_line, even within a version
1467# of gas. Moreover, we need to emit a valid instruction to trigger any
1468# info to the output file. So, as supported targets are added to gas 2.11,
1469# add some instruction here to (also) show we expect this might work.
1470# ??? Once 2.11 is released, probably need to add first known working
1471# version to the per-target configury.
1472case "$target" in
e6978109 1473 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-*)
9d147085
RH
1474 insn="nop"
1475 ;;
1476 ia64*-*-*)
1477 insn="nop 0"
1478 ;;
1479 esac
1480if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
1481then
1482 if test "$gcc_cv_gas_major_version" -eq 2 \
1483 -a "$gcc_cv_gas_minor_version" -ge 11 \
1484 -o "$gcc_cv_gas_major_version" -gt 2 \
1485 && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1486 && test x"$insn" != x ; then
1487 gcc_cv_as_dwarf2_debug_line="yes"
1488 fi
1489elif test x$gcc_cv_as != x -a x"$insn" != x ; then
1490 echo ' .file 0 "conftest.s"' > conftest.s
1491 echo ' .loc 0 3 0' >> conftest.s
1492 echo " $insn" >> conftest.s
1493 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1494 && grep debug_line conftest.o > /dev/null 2>&1 ; then
1495 gcc_cv_as_dwarf2_debug_line="yes"
1496 fi
1497 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1498fi
1499if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
1500 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
1501 [Define if your assembler supports dwarf2 .file/.loc directives.])
1502fi
1503AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
1504
571a8de5 1505# Figure out what language subdirectories are present.
71205e0b
MH
1506# Look if the user specified --enable-languages="..."; if not, use
1507# the environment variable $LANGUAGES if defined. $LANGUAGES might
1508# go away some day.
1509if test x"${enable_languages+set}" != xset; then
1510 if test x"${LANGUAGES+set}" = xset; then
1511 enable_languages="`echo ${LANGUAGES} | tr ' ' ','`"
1512 else
1513 enable_languages=all
1514 fi
d6c6b553
PE
1515else
1516 if test x"${enable_languages}" = x; then
1517 AC_MSG_ERROR([--enable-languages needs at least one argument])
1518 fi
71205e0b 1519fi
75382c6d
TT
1520
1521# First scan to see if an enabled language requires some other language.
1522# We assume that a given config-lang.in will list all the language
1523# front ends it requires, even if some are required indirectly.
1524for lang in ${srcdir}/*/config-lang.in ..
1525do
1526 case $lang in
1527 ..)
1528 ;;
1529 # The odd quoting in the next line works around
1530 # an apparent bug in bash 1.12 on linux.
1531changequote(,)dnl
1532 ${srcdir}/[*]/config-lang.in)
1533 ;;
1534 *)
1535 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
1536 this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^ ]*\).*$,\1,p' $lang`
1537 for other in $this_lang_requires
1538 do
1539 case ,${enable_languages}, in
1540 *,$other,*)
1541 ;;
1542 *,all,*)
1543 ;;
1bf17cc4 1544 *,$lang_alias,*)
75382c6d
TT
1545 enable_languages="$enable_languages,$other"
1546 ;;
1547 esac
1548 done
1549 ;;
1550changequote([,])dnl
1551 esac
1552done
1553
571a8de5
DE
1554subdirs=
1555for lang in ${srcdir}/*/config-lang.in ..
1556do
1557 case $lang in
1558 ..) ;;
1559 # The odd quoting in the next line works around
1560 # an apparent bug in bash 1.12 on linux.
75bffa71
ILT
1561changequote(,)dnl
1562 ${srcdir}/[*]/config-lang.in) ;;
71205e0b
MH
1563 *)
1564 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
2b60b2cb
AO
1565 this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^ ]*\).*$,\1,p' $lang`
1566 build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^ ]*\).*$,\1,p' $lang`
71205e0b
MH
1567 if test "x$lang_alias" = x
1568 then
1569 echo "$lang doesn't set \$language." 1>&2
1570 exit 1
1571 fi
2b60b2cb
AO
1572 case ${build_by_default},${enable_languages}, in
1573 *,$lang_alias,*) add_this_lang=yes ;;
1574 no,*) add_this_lang=no ;;
1575 *,all,*) add_this_lang=yes ;;
1576 *) add_this_lang=no ;;
1577 esac
71205e0b
MH
1578 if test x"${add_this_lang}" = xyes; then
1579 case $lang in
1580 ${srcdir}/ada/config-lang.in)
1ffc5c6e 1581 if test x$have_gnat = xyes ; then
71205e0b
MH
1582 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
1583 fi
1584 ;;
1585 *)
1586 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
1587 ;;
1588 esac
1589 fi
1590 ;;
75bffa71 1591changequote([,])dnl
571a8de5
DE
1592 esac
1593done
1594
f24af81b
TT
1595# Make gthr-default.h if we have a thread file.
1596gthread_flags=
75bffa71 1597if test $thread_file != single; then
f24af81b 1598 rm -f gthr-default.h
db0d1ed9 1599 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
f24af81b
TT
1600 gthread_flags=-DHAVE_GTHR_DEFAULT
1601fi
1602AC_SUBST(gthread_flags)
1603
81bf3d9e
RH
1604# Find out what GC implementation we want, or may, use.
1605AC_ARG_WITH(gc,
1606[ --with-gc={simple,page} Choose the garbage collection mechanism to use
1607 with the compiler.],
1608[case "$withval" in
1609 simple | page)
1610 GGC=ggc-$withval
1611 ;;
1612 *)
1613 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
1614 ;;
1615esac],
130fadbb 1616[GGC=ggc-page])
81bf3d9e
RH
1617AC_SUBST(GGC)
1618echo "Using $GGC for garbage collection."
1619
3c809ba4 1620# Use the system's zlib library.
b8dad04b
ZW
1621zlibdir=-L../zlib
1622zlibinc="-I\$(srcdir)/../zlib"
3c809ba4
AG
1623AC_ARG_WITH(system-zlib,
1624[ --with-system-zlib use installed libz],
1625zlibdir=
1626zlibinc=
1627)
1628AC_SUBST(zlibdir)
1629AC_SUBST(zlibinc)
1630
22fdd65e 1631AC_DEFINE_UNQUOTED(ENABLE_STD_NAMESPACE, 1,
119d24d1 1632 [Define to 1 if you want to enable namespaces (-fhonor-std) by default.])
7822500a 1633
dc6746e7
PT
1634dnl Very limited version of automake's enable-maintainer-mode
1635
1636AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
1637 dnl maintainer-mode is disabled by default
1638 AC_ARG_ENABLE(maintainer-mode,
1639[ --enable-maintainer-mode enable make rules and dependencies not useful
1640 (and sometimes confusing) to the casual installer],
1641 maintainer_mode=$enableval,
1642 maintainer_mode=no)
1643
1644AC_MSG_RESULT($maintainer_mode)
1645
1646if test "$maintainer_mode" = "yes"; then
1647 MAINT=''
1648else
1649 MAINT='#'
1650fi
1651AC_SUBST(MAINT)dnl
1652
571a8de5
DE
1653# Make empty files to contain the specs and options for each language.
1654# Then add #include lines to for a compiler that has specs and/or options.
1655
1656lang_specs_files=
1657lang_options_files=
3103b7db
ML
1658lang_tree_files=
1659rm -f specs.h options.h gencheck.h
1660touch specs.h options.h gencheck.h
571a8de5
DE
1661for subdir in . $subdirs
1662do
75bffa71 1663 if test -f $srcdir/$subdir/lang-specs.h; then
571a8de5
DE
1664 echo "#include \"$subdir/lang-specs.h\"" >>specs.h
1665 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
1666 fi
75bffa71 1667 if test -f $srcdir/$subdir/lang-options.h; then
571a8de5
DE
1668 echo "#include \"$subdir/lang-options.h\"" >>options.h
1669 lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
1670 fi
3103b7db
ML
1671 if test -f $srcdir/$subdir/$subdir-tree.def; then
1672 echo "#include \"$subdir/$subdir-tree.def\"" >>gencheck.h
1673 lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
1674 fi
571a8de5
DE
1675done
1676
1677# These (without "all_") are set in each config-lang.in.
1678# `language' must be a single word so is spelled singularly.
1679all_languages=
1680all_boot_languages=
1681all_compilers=
1682all_stagestuff=
1683all_diff_excludes=
3ec83fc2 1684all_outputs='Makefile intl/Makefile po/Makefile.in fixinc/Makefile gccbug mklibgcc'
571a8de5
DE
1685# List of language makefile fragments.
1686all_lang_makefiles=
1687all_headers=
1688all_lib2funcs=
1689
1690# Add the language fragments.
1691# Languages are added via two mechanisms. Some information must be
1692# recorded in makefile variables, these are defined in config-lang.in.
1693# We accumulate them and plug them into the main Makefile.
1694# The other mechanism is a set of hooks for each of the main targets
1695# like `clean', `install', etc.
1696
1697language_fragments="Make-lang"
1698language_hooks="Make-hooks"
1699
1700for s in .. $subdirs
1701do
75bffa71 1702 if test $s != ".."
571a8de5
DE
1703 then
1704 language=
1705 boot_language=
1706 compilers=
1707 stagestuff=
1708 diff_excludes=
1709 headers=
0280cf84 1710 outputs=
571a8de5
DE
1711 lib2funcs=
1712 . ${srcdir}/$s/config-lang.in
75bffa71 1713 if test "x$language" = x
571a8de5
DE
1714 then
1715 echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
1716 exit 1
1717 fi
72aaffbd
ZW
1718 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
1719 if test -f ${srcdir}/$s/Makefile.in
1720 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
1721 fi
571a8de5 1722 all_languages="$all_languages $language"
75bffa71 1723 if test "x$boot_language" = xyes
571a8de5
DE
1724 then
1725 all_boot_languages="$all_boot_languages $language"
1726 fi
1727 all_compilers="$all_compilers $compilers"
1728 all_stagestuff="$all_stagestuff $stagestuff"
1729 all_diff_excludes="$all_diff_excludes $diff_excludes"
1730 all_headers="$all_headers $headers"
0280cf84 1731 all_outputs="$all_outputs $outputs"
571a8de5
DE
1732 all_lib2funcs="$all_lib2funcs $lib2funcs"
1733 fi
1734done
1735
cbc59f01
DD
1736check_languages=
1737for language in .. $all_languages
1738do
1739 if test $language != ".."
1740 then
1741 check_languages="$check_languages check-$language"
1742 fi
1743done
1744
571a8de5
DE
1745# Since we can't use `::' targets, we link each language in
1746# with a set of hooks, reached indirectly via lang.${target}.
1747
1748rm -f Make-hooks
1749touch Make-hooks
1750target_list="all.build all.cross start.encap rest.encap \
1751 info dvi \
1752 install-normal install-common install-info install-man \
436a88a6 1753 uninstall \
571a8de5
DE
1754 mostlyclean clean distclean extraclean maintainer-clean \
1755 stage1 stage2 stage3 stage4"
1756for t in $target_list
1757do
1758 x=
ab87f8c8 1759 for lang in .. $all_languages
571a8de5 1760 do
ab87f8c8
JL
1761 if test $lang != ".."; then
1762 x="$x $lang.$t"
571a8de5
DE
1763 fi
1764 done
1765 echo "lang.$t: $x" >> Make-hooks
1766done
1767
cc06d68c 1768# Create .gdbinit.
296e46bd 1769
cc06d68c
GP
1770echo "dir ." > .gdbinit
1771echo "dir ${srcdir}" >> .gdbinit
1772if test x$gdb_needs_out_file_path = xyes
1773then
1774 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
1775fi
1776if test "x$subdirs" != x; then
1777 for s in $subdirs
1778 do
1779 echo "dir ${srcdir}/$s" >> .gdbinit
1780 done
296e46bd 1781fi
cc06d68c 1782echo "source ${srcdir}/gdbinit.in" >> .gdbinit
296e46bd 1783
88111b26
JL
1784# Define variables host_canonical and build_canonical
1785# because some Cygnus local changes in the Makefile depend on them.
1786build_canonical=${build}
1787host_canonical=${host}
1788target_subdir=
75bffa71 1789if test "${host}" != "${target}" ; then
88111b26
JL
1790 target_subdir=${target}/
1791fi
1792AC_SUBST(build_canonical)
1793AC_SUBST(host_canonical)
1794AC_SUBST(target_subdir)
1795
8f8d3278
NC
1796# If $(exec_prefix) exists and is not the same as $(prefix), then compute an
1797# absolute path for gcc_tooldir based on inserting the number of up-directory
1798# movements required to get from $(exec_prefix) to $(prefix) into the basic
1799# $(libsubdir)/@(unlibsubdir) based path.
82cbf8f7
JL
1800# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
1801# make and thus we'd get different behavior depending on where we built the
1802# sources.
5949a9fc 1803if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
d062c304
JL
1804 gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
1805else
8f8d3278
NC
1806changequote(<<, >>)dnl
1807# An explanation of the sed strings:
1808# -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix'
1809# -e 's|/$||' match a trailing forward slash and eliminates it
1810# -e 's|^[^/]|/|' forces the string to start with a forward slash (*)
1811# -e 's|/[^/]*|../|g' replaces each occurance of /<directory> with ../
1812#
1813# (*) Note this pattern overwrites the first character of the string
1814# with a forward slash if one is not already present. This is not a
1815# problem because the exact names of the sub-directories concerned is
1816# unimportant, just the number of them matters.
1817#
1818# The practical upshot of these patterns is like this:
1819#
1820# prefix exec_prefix result
1821# ------ ----------- ------
1822# /foo /foo/bar ../
1823# /foo/ /foo/bar ../
1824# /foo /foo/bar/ ../
1825# /foo/ /foo/bar/ ../
1826# /foo /foo/bar/ugg ../../
1827#
4c112cda
NC
1828 dollar='$$'
1829 gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
8f8d3278 1830changequote([, ])dnl
d062c304
JL
1831fi
1832AC_SUBST(gcc_tooldir)
4c112cda 1833AC_SUBST(dollar)
d062c304 1834
2bbea3a6
RH
1835# Find a directory in which to install a shared libgcc.
1836
1837AC_ARG_ENABLE(version-specific-runtime-libs,
1838[ --enable-version-specific-runtime-libs Specify that runtime libraries shou
1839ld be installed in a compiler-specific directory ])
1840
5b15f277
RH
1841AC_ARG_WITH(slibdir,
1842[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
1843slibdir="$with_slibdir",
1844if test "${enable_version_specific_runtime_libs+set}" = set; then
2bbea3a6 1845 slibdir='$(libsubdir)'
5b15f277 1846elif test "$host" != "$target"; then
2bbea3a6
RH
1847 slibdir='$(build_tooldir)/lib'
1848else
5b15f277
RH
1849 slibdir='$(libdir)'
1850fi)
2bbea3a6
RH
1851AC_SUBST(slibdir)
1852
7e717196
JL
1853# Nothing to do for FLOAT_H, float_format already handled.
1854objdir=`pwd`
1855AC_SUBST(objdir)
1856
94f42018
DE
1857# Process the language and host/target makefile fragments.
1858${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
47866ac0 1859
46f18e7b
RK
1860# Substitute configuration variables
1861AC_SUBST(subdirs)
46f18e7b
RK
1862AC_SUBST(all_boot_languages)
1863AC_SUBST(all_compilers)
46f18e7b 1864AC_SUBST(all_diff_excludes)
46f18e7b 1865AC_SUBST(all_headers)
9f3d1bc2
BK
1866AC_SUBST(all_lang_makefiles)
1867AC_SUBST(all_languages)
1868AC_SUBST(all_lib2funcs)
1869AC_SUBST(all_stagestuff)
1870AC_SUBST(build_exeext)
1871AC_SUBST(build_install_headers_dir)
1872AC_SUBST(build_xm_file_list)
11642c3a
ZW
1873AC_SUBST(build_xm_file)
1874AC_SUBST(build_xm_defines)
cbc59f01 1875AC_SUBST(check_languages)
9f3d1bc2 1876AC_SUBST(cc_set_by_configure)
5aa82ace 1877AC_SUBST(quoted_cc_set_by_configure)
9f3d1bc2 1878AC_SUBST(cpp_install_dir)
9f3d1bc2
BK
1879AC_SUBST(dep_host_xmake_file)
1880AC_SUBST(dep_tmake_file)
1881AC_SUBST(extra_c_flags)
9f3d1bc2 1882AC_SUBST(extra_headers_list)
46f18e7b 1883AC_SUBST(extra_objs)
9f3d1bc2
BK
1884AC_SUBST(extra_parts)
1885AC_SUBST(extra_passes)
1886AC_SUBST(extra_programs)
9f3d1bc2 1887AC_SUBST(float_h_file)
cc1e60ea 1888AC_SUBST(gcc_config_arguments)
9f3d1bc2 1889AC_SUBST(gcc_gxx_include_dir)
e2187d3b 1890AC_SUBST(libstdcxx_incdir)
9f3d1bc2 1891AC_SUBST(gcc_version)
8763704d 1892AC_SUBST(gcc_version_full)
9f3d1bc2
BK
1893AC_SUBST(gcc_version_trigger)
1894AC_SUBST(host_exeext)
46f18e7b 1895AC_SUBST(host_extra_gcc_objs)
46f18e7b 1896AC_SUBST(host_xm_file_list)
11642c3a
ZW
1897AC_SUBST(host_xm_file)
1898AC_SUBST(host_xm_defines)
9f3d1bc2 1899AC_SUBST(install)
46f18e7b 1900AC_SUBST(lang_options_files)
9f3d1bc2 1901AC_SUBST(lang_specs_files)
3103b7db 1902AC_SUBST(lang_tree_files)
46f18e7b 1903AC_SUBST(local_prefix)
46f18e7b 1904AC_SUBST(maybe_use_collect2)
9f3d1bc2
BK
1905AC_SUBST(md_file)
1906AC_SUBST(objc_boehm_gc)
1907AC_SUBST(out_file)
1908AC_SUBST(out_object_file)
46f18e7b 1909AC_SUBST(stage_prefix_set_by_configure)
e9a25f70 1910AC_SUBST(symbolic_link)
9f3d1bc2
BK
1911AC_SUBST(thread_file)
1912AC_SUBST(tm_file_list)
11642c3a
ZW
1913AC_SUBST(tm_file)
1914AC_SUBST(tm_p_file_list)
1915AC_SUBST(tm_p_file)
1916AC_SUBST(xm_file)
9f3d1bc2 1917AC_SUBST(will_use_collect2)
aac69a49
NC
1918AC_SUBST(c_target_objs)
1919AC_SUBST(cxx_target_objs)
11642c3a 1920AC_SUBST(target_cpu_default)
46f18e7b
RK
1921
1922AC_SUBST_FILE(target_overrides)
1923AC_SUBST_FILE(host_overrides)
1924AC_SUBST(cross_defines)
1925AC_SUBST_FILE(cross_overrides)
1926AC_SUBST_FILE(build_overrides)
1927AC_SUBST_FILE(language_fragments)
1928AC_SUBST_FILE(language_hooks)
1929
1930# Echo that links are built
75bffa71 1931if test x$host = x$target
46f18e7b
RK
1932then
1933 str1="native "
1934else
1935 str1="cross-"
1936 str2=" from $host"
1937fi
1938
75bffa71 1939if test x$host != x$build
46f18e7b
RK
1940then
1941 str3=" on a $build system"
1942fi
1943
75bffa71 1944if test "x$str2" != x || test "x$str3" != x
46f18e7b
RK
1945then
1946 str4=
1947fi
1948
1949echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
1950
75bffa71 1951if test "x$str2" != x || test "x$str3" != x
46f18e7b
RK
1952then
1953 echo " ${str2}${str3}." 1>&2
1954fi
1955
61536478 1956# Truncate the target if necessary
75bffa71 1957if test x$host_truncate_target != x; then
61536478
JL
1958 target=`echo $target | sed -e 's/\(..............\).*/\1/'`
1959fi
1960
46f18e7b
RK
1961# Configure the subdirectories
1962# AC_CONFIG_SUBDIRS($subdirs)
1963
1964# Create the Makefile
5891b37d 1965# and configure language subdirectories
0280cf84 1966AC_OUTPUT($all_outputs,
cdcc6a01 1967[
cdcc6a01 1968case x$CONFIG_HEADERS in
b7cb92ad 1969xauto-host.h:config.in)
818b66cc 1970echo > cstamp-h ;;
cdcc6a01 1971esac
93cf819d
BK
1972# If the host supports symlinks, point stage[1234] at ../stage[1234] so
1973# bootstrapping and the installation procedure can still use
1974# CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks,
1975# FLAGS_TO_PASS has been modified to solve the problem there.
1976# This is virtually a duplicate of what happens in configure.lang; we do
1977# an extra check to make sure this only happens if ln -s can be used.
75bffa71 1978if test "$symbolic_link" = "ln -s"; then
93cf819d 1979 for d in .. ${subdirs} ; do
75bffa71 1980 if test $d != ..; then
4e8a434e
BK
1981 STARTDIR=`pwd`
1982 cd $d
1983 for t in stage1 stage2 stage3 stage4 include
1984 do
1985 rm -f $t
1986 $symbolic_link ../$t $t 2>/dev/null
1987 done
1988 cd $STARTDIR
93cf819d
BK
1989 fi
1990 done
1991else true ; fi
ab87f8c8
JL
1992# Avoid having to add intl to our include paths.
1993if test -f intl/libintl.h; then
1994 echo creating libintl.h
1995 echo '#include "intl/libintl.h"' >libintl.h
1996fi
cdcc6a01
DE
1997],
1998[
5891b37d
RK
1999host='${host}'
2000build='${build}'
2001target='${target}'
52060267 2002target_alias='${target_alias}'
5891b37d
RK
2003srcdir='${srcdir}'
2004subdirs='${subdirs}'
2005symbolic_link='${symbolic_link}'
2006program_transform_set='${program_transform_set}'
2007program_transform_name='${program_transform_name}'
5891b37d
RK
2008dep_host_xmake_file='${dep_host_xmake_file}'
2009host_xmake_file='${host_xmake_file}'
2010dep_tmake_file='${dep_tmake_file}'
2011tmake_file='${tmake_file}'
0bbb1697 2012thread_file='${thread_file}'
cc1e60ea 2013gcc_config_arguments='${gcc_config_arguments}'
f1943b77 2014gcc_version='${gcc_version}'
8763704d 2015gcc_version_full='${gcc_version_full}'
f1943b77 2016gcc_version_trigger='${gcc_version_trigger}'
5891b37d 2017local_prefix='${local_prefix}'
5891b37d 2018build_install_headers_dir='${build_install_headers_dir}'
a204adc6 2019build_exeext='${build_exeext}'
6e26218f 2020host_exeext='${host_exeext}'
7ed46111 2021out_file='${out_file}'
5891b37d
RK
2022gdb_needs_out_file_path='${gdb_needs_out_file_path}'
2023SET_MAKE='${SET_MAKE}'
5891b37d 2024target_list='${target_list}'
5891b37d
RK
2025target_overrides='${target_overrides}'
2026host_overrides='${host_overrides}'
2027cross_defines='${cross_defines}'
2028cross_overrides='${cross_overrides}'
2029build_overrides='${build_overrides}'
9fc9b82a 2030cpp_install_dir='${cpp_install_dir}'
cdcc6a01 2031])
This page took 1.061845 seconds and 5 git commands to generate.