2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
5 # Free Software Foundation, Inc.
7 #This file is part of GCC.
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
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
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING. If not, write to the Free
21 #Software Foundation, 59 Temple Place - Suite 330, Boston, MA
24 # --------------------------------
25 # Initialization and sanity checks
26 # --------------------------------
30 AC_CONFIG_HEADER(auto-host.h:config.in)
32 # Determine the host, build, and target systems
35 # Set program_transform_name
38 # Check for bogus environment variables.
39 # Test if LIBRARY_PATH contains the notation for the current directory
40 # since this would lead to problems installing/building glibc.
41 # LIBRARY_PATH contains the current directory if one of the following
43 # - one of the terminals (":" and ";") is the first or last sign
44 # - two terminals occur directly after each other
45 # - the path contains an element with a dot in it
46 AC_MSG_CHECKING(LIBRARY_PATH variable)
48 case ${LIBRARY_PATH} in
49 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
50 library_path_setting="contains current directory"
53 library_path_setting="ok"
57 AC_MSG_RESULT($library_path_setting)
58 if test "$library_path_setting" != "ok"; then
60 *** LIBRARY_PATH shouldn't contain the current directory when
61 *** building gcc. Please change the environment variable
62 *** and run configure again.])
65 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
66 # since this would lead to problems installing/building glibc.
67 # GCC_EXEC_PREFIX contains the current directory if one of the following
69 # - one of the terminals (":" and ";") is the first or last sign
70 # - two terminals occur directly after each other
71 # - the path contains an element with a dot in it
72 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
74 case ${GCC_EXEC_PREFIX} in
75 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
76 gcc_exec_prefix_setting="contains current directory"
79 gcc_exec_prefix_setting="ok"
83 AC_MSG_RESULT($gcc_exec_prefix_setting)
84 if test "$gcc_exec_prefix_setting" != "ok"; then
86 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
87 *** building gcc. Please change the environment variable
88 *** and run configure again.])
95 # Specify the local prefix
97 AC_ARG_WITH(local-prefix,
98 [ --with-local-prefix=DIR specifies directory to put local include],
100 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
102 *) local_prefix=$with_local_prefix ;;
105 # Default local prefix if it is empty
106 if test x$local_prefix = x; then
107 local_prefix=/usr/local
110 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
111 # passed in by the toplevel make and thus we'd get different behavior
112 # depending on where we built the sources.
114 # Specify the g++ header file directory
115 AC_ARG_WITH(gxx-include-dir,
116 [ --with-gxx-include-dir=DIR
117 specifies directory to put g++ header files],
118 [case "${withval}" in
119 yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
121 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
124 if test x${gcc_gxx_include_dir} = x; then
125 if test x${enable_version_specific_runtime_libs} = xyes; then
126 gcc_gxx_include_dir='${libsubdir}/include/c++'
128 topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
129 changequote(<<, >>)dnl
130 gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
135 AC_ARG_WITH(cpp_install_dir,
136 [ --with-cpp-install-dir=DIR
137 install the user visible C preprocessor in DIR
138 (relative to PREFIX) as well as PREFIX/bin],
139 [if test x$withval = xyes; then
140 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
141 elif test x$withval != xno; then
142 cpp_install_dir=$withval
145 # -------------------
146 # Find default linker
147 # -------------------
151 [ --with-gnu-ld arrange to work with GNU ld.],
152 gnu_ld_flag="$with_gnu_ld",
155 # With pre-defined ld
157 [ --with-ld arrange to use the specified ld (full pathname)],
158 DEFAULT_LINKER="$with_ld")
159 if test x"${DEFAULT_LINKER+set}" = x"set"; then
160 if test ! -x "$DEFAULT_LINKER"; then
161 AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
162 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
165 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
166 [Define to enable the use of a default linker.])
169 AC_MSG_CHECKING([whether a default linker was specified])
170 if test x"${DEFAULT_LINKER+set}" = x"set"; then
171 if test x"$gnu_ld_flag" = x"no"; then
172 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
174 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
180 # ----------------------
181 # Find default assembler
182 # ----------------------
186 [ --with-gnu-as arrange to work with GNU as],
187 gas_flag="$with_gnu_as",
191 [ --with-as arrange to use the specified as (full pathname)],
192 DEFAULT_ASSEMBLER="$with_as")
193 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
194 if test ! -x "$DEFAULT_ASSEMBLER"; then
195 AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
196 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
199 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
200 [Define to enable the use of a default assembler.])
203 AC_MSG_CHECKING([whether a default assembler was specified])
204 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
205 if test x"$gas_flag" = x"no"; then
206 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
208 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
218 # Find the native compiler
221 # autoconf is lame and doesn't give us any substitution variable for this.
222 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
223 NO_MINUS_C_MINUS_O=yes
225 OUTPUT_OPTION='-o $@'
227 AC_SUBST(NO_MINUS_C_MINUS_O)
228 AC_SUBST(OUTPUT_OPTION)
230 AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
231 ac_cv_prog_cc_no_long_long,
232 [save_CFLAGS="$CFLAGS"
233 CFLAGS="-Wno-long-long"
234 AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
235 ac_cv_prog_cc_no_long_long=no)
236 CFLAGS="$save_CFLAGS"])
246 # sizeof(char) is 1 by definition.
247 AC_COMPILE_CHECK_SIZEOF(short)
248 AC_COMPILE_CHECK_SIZEOF(int)
249 AC_COMPILE_CHECK_SIZEOF(long)
250 if test $ac_cv_c_long_long = yes; then
251 AC_COMPILE_CHECK_SIZEOF(long long)
253 if test $ac_cv_c___int64 = yes; then
254 AC_COMPILE_CHECK_SIZEOF(__int64)
263 # See if GNAT has been installed
266 if test x$have_gnat != xno ; then
267 AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
268 ac_cv_prog_adac_no_long_long,
269 [cat >conftest.adb <<EOF
270 procedure conftest is begin null; end conftest;
272 if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
273 ac_cv_prog_adac_no_long_long=yes
275 ac_cv_prog_adac_no_long_long=no
279 ac_cv_prog_adac_no_long_long=yes
282 # ---------------------
283 # Warnings and checking
284 # ---------------------
287 if test $ac_cv_prog_cc_no_long_long = yes && \
288 test $ac_cv_prog_adac_no_long_long = yes ; then
289 strict1_warn="-pedantic -Wno-long-long"
291 AC_SUBST(strict1_warn)
293 # If the native compiler is GCC, we can enable warnings even in stage1.
294 # That's useful for people building cross-compilers, or just running a
297 if test "x$GCC" = "xyes"; then
298 warn_cflags='$(GCC_WARN_CFLAGS)'
300 AC_SUBST(warn_cflags)
302 # Enable -Werror in bootstrap stage2 and later.
303 # Change the default to "no" on release branches.
304 AC_ARG_ENABLE(werror,
305 [ --enable-werror enable -Werror in bootstrap stage2 and later], [],
307 if test x$enable_werror = xyes ; then
312 # Enable expensive internal checks
313 AC_ARG_ENABLE(checking,
314 [ --enable-checking[=LIST]
315 enable expensive run-time checks. With LIST,
316 enable only specific categories of checks.
317 Categories are: misc,tree,rtl,rtlflag,gc,gcac;
318 default is misc,tree,gc,rtlflag],
324 ac_gc_always_collect=
325 case "${enableval}" in
326 yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
327 ac_rtlflag_checking=1 ;;
329 *) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
330 set fnord $enableval; shift
335 misc) ac_checking=1 ;;
336 tree) ac_tree_checking=1 ;;
337 rtlflag) ac_rtlflag_checking=1 ;;
338 rtl) ac_rtl_checking=1 ;;
339 gc) ac_gc_checking=1 ;;
340 gcac) ac_gc_always_collect=1 ;;
341 valgrind) ac_checking_valgrind=1 ;;
342 *) AC_MSG_ERROR(unknown check category $check) ;;
348 # Enable some checks by default for development versions of GCC
349 [ac_checking=1; ac_tree_checking=1; ac_gc_checking=1; ac_rtlflag_checking=1;])
351 if test x$ac_checking != x ; then
352 AC_DEFINE(ENABLE_CHECKING, 1,
353 [Define if you want more run-time sanity checks. This one gets a grab
354 bag of miscellaneous but relatively cheap checks.])
355 nocommon_flag=-fno-common
357 AC_SUBST(nocommon_flag)
358 if test x$ac_tree_checking != x ; then
359 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
360 [Define if you want all operations on trees (the basic data
361 structure of the front ends) to be checked for dynamic type safety
362 at runtime. This is moderately expensive.])
364 if test x$ac_rtl_checking != x ; then
365 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
366 [Define if you want all operations on RTL (the basic data structure
367 of the optimizer and back end) to be checked for dynamic type safety
368 at runtime. This is quite expensive.])
370 if test x$ac_rtlflag_checking != x ; then
371 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
372 [Define if you want RTL flag accesses to be checked against the RTL
373 codes that are supported for each access macro. This is relatively
376 if test x$ac_gc_checking != x ; then
377 AC_DEFINE(ENABLE_GC_CHECKING, 1,
378 [Define if you want the garbage collector to do object poisoning and
379 other memory allocation checks. This is quite expensive.])
381 if test x$ac_gc_always_collect != x ; then
382 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
383 [Define if you want the garbage collector to operate in maximally
384 paranoid mode, validating the entire heap and collecting garbage at
385 every opportunity. This is extremely expensive.])
387 valgrind_path_defines=
389 if test x$ac_checking_valgrind != x ; then
390 # It is certainly possible that there's valgrind but no valgrind.h.
391 # GCC relies on making annotations so we must have both.
392 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
394 [#include <memcheck.h>
395 #ifndef VALGRIND_DISCARD
396 #error VALGRIND_DISCARD not defined
398 [gcc_cv_header_memcheck_h=yes],
399 gcc_cv_header_memcheck_h=no)
400 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
401 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
402 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
403 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
404 if test "x$valgrind_path" = "x" || test $have_valgrind_h = no; then
405 AC_MSG_ERROR([*** Can't find both valgrind and valgrind.h])
407 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
408 valgrind_command="$valgrind_path -q"
409 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
410 [Define if you want to run subprograms and generated programs
411 through valgrind (a memory checker). This is extremely expensive.])
412 if test $gcc_cv_header_memcheck_h = yes; then
413 AC_DEFINE(HAVE_MEMCHECK_H, 1,
414 [Define if valgrind's memcheck.h header is installed.])
417 AC_SUBST(valgrind_path_defines)
418 AC_SUBST(valgrind_command)
420 # Enable code coverage collection
421 AC_ARG_ENABLE(coverage,
422 [ --enable-coverage[=LEVEL]
423 enable compiler\'s code coverage collection.
424 Use to measure compiler performance and locate
425 unused parts of the compiler. With LEVEL, specify
426 optimization. Values are opt, noopt,
428 [case "${enableval}" in
430 coverage_flags="-fprofile-arcs -ftest-coverage -O0 -DSELF_COVERAGE=1"
433 coverage_flags="-fprofile-arcs -ftest-coverage -O2 -DSELF_COVERAGE=2"
436 AC_MSG_ERROR(unknown coverage setting $enableval)
440 AC_SUBST(coverage_flags)
448 [ --with-stabs arrange to use stabs instead of host debug format],
454 [ --with-elf arrange to use ELF instead of host debug format],
458 # Determine whether or not multilibs are enabled.
459 AC_ARG_ENABLE(multilib,
460 [ --enable-multilib enable library support for multiple ABIs],
461 [], [enable_multilib=yes])
462 AC_SUBST(enable_multilib)
464 # Enable __cxa_atexit for C++.
465 AC_ARG_ENABLE(__cxa_atexit,
466 [ --enable-__cxa_atexit enable __cxa_atexit for C++],
468 if test x$enable___cxa_atexit = xyes; then
469 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
470 [Define if you want to use __cxa_atexit, rather than atexit, to
471 register C++ destructors for local statics and global objects.
472 This is essential for fully standards-compliant handling of
473 destructors, but requires __cxa_atexit in libc.])
476 # Enable Multibyte Characters for C/C++
477 AC_ARG_ENABLE(c-mbchar,
478 [ --enable-c-mbchar enable multibyte characters for C and C++],
479 if test x$enable_c_mbchar != xno; then
480 AC_DEFINE(MULTIBYTE_CHARS, 1,
481 [Define if you want the C and C++ compilers to support multibyte
482 character sets for source code.])
486 # Pass with no value to take the default
487 # Pass with a value to specify a thread package
488 AC_ARG_ENABLE(threads,
489 [ --enable-threads enable thread usage for target GCC
490 --enable-threads=LIB use LIB thread package for target GCC],,
493 enable_threads_flag=$enable_threads
494 # Check if a valid thread package
495 case x${enable_threads_flag} in
498 target_thread_file='single'
502 target_thread_file=''
504 xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
505 xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
506 target_thread_file=$enable_threads_flag
509 echo "$enable_threads is an unknown thread package" 1>&2
514 AC_ARG_ENABLE(objc-gc,
515 [ --enable-objc-gc enable the use of Boehm's garbage collector with
516 the GNU Objective-C runtime],
517 if test x$enable_objc_gc = xno; then
525 [ --with-dwarf2 force the default debug format to be DWARF 2],
526 dwarf2="$with_dwarf2",
529 AC_ARG_ENABLE(shared,
530 [ --disable-shared don't provide a shared libgcc],
532 case $enable_shared in
536 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
537 for pkg in $enableval; do
538 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
545 ], [enable_shared=yes])
546 AC_SUBST(enable_shared)
549 [ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
551 case ${with_sysroot} in
552 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;;
553 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
556 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
557 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)'
559 if test "x$exec_prefix" = xNONE; then
560 if test "x$prefix" = xNONE; then
561 test_prefix=/usr/local
566 test_prefix=$exec_prefix
568 case ${TARGET_SYSTEM_ROOT} in
569 "${test_prefix}"|"${test_prefix}/"*|\
570 '${exec_prefix}'|'${exec_prefix}/'*)
571 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
572 TARGET_SYSTEM_ROOT_DEFINE="$t"
577 TARGET_SYSTEM_ROOT_DEFINE=
578 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
580 AC_SUBST(TARGET_SYSTEM_ROOT)
581 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
582 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
584 # Stage specific cflags for build.
590 stage1_cflags="-Wa,-J"
596 # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
597 # sources; use -no-cpp-precomp to get to GNU cpp.
598 # Apple's GCC has bugs in designated initializer handling, so disable
600 stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
603 AC_SUBST(stage1_cflags)
607 AC_MSG_CHECKING(for GNU C library)
608 AC_CACHE_VAL(gcc_cv_glibc,
610 [#include <features.h>],[
611 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
612 #error Not a GNU C library system
616 AC_MSG_RESULT($gcc_cv_glibc)
617 if test $gcc_cv_glibc = yes; then
618 AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
621 # Find some useful tools
630 gcc_AC_HEADER_STDBOOL
633 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
634 fcntl.h unistd.h sys/file.h sys/time.h \
635 sys/resource.h sys/param.h sys/times.h sys/stat.h \
636 direct.h malloc.h langinfo.h ldfcn.h)
638 # Check for thread headers.
639 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
640 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
642 # These tests can't be done till we know if we have limits.h.
645 gcc_AC_C_FLOAT_FORMAT
647 # See if we have the mktemp command.
648 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
650 # Do we have a single-tree copy of texinfo?
651 if test -f $srcdir/../texinfo/Makefile.in; then
652 MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
653 gcc_cv_prog_makeinfo_modern=yes
654 AC_MSG_RESULT([Using makeinfo from the unified source tree.])
656 # See if makeinfo has been installed and is modern enough
657 # that we can use it.
658 gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
659 [GNU texinfo.* \([0-9][0-9.]*\)],
663 if test $gcc_cv_prog_makeinfo_modern = no; then
665 *** Makeinfo is missing or too old.
666 *** Info documentation will not be built.])
669 BUILD_INFO=info AC_SUBST(BUILD_INFO)
672 # Is pod2man recent enough to regenerate manpages?
673 AC_MSG_CHECKING([for recent Pod::Man])
674 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
676 GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES)
683 dnl Don't use AC_PROG_LEX; we insist on flex.
684 dnl LEXLIB is not useful in gcc.
685 if test -f $srcdir/../flex/skel.c; then
686 FLEX='$(objdir)/../flex/flex'
688 AC_CHECK_PROG(FLEX, flex, flex, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex)
692 # The -L switch is so bison can find its skeleton file.
693 if test -f $srcdir/../bison/bison.simple; then
694 BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
696 AC_CHECK_PROG(BISON, bison, bison, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison)
699 # These libraries may be used by collect2.
700 # We may need a special search path to get them linked.
701 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
703 for libs in '' -lld -lmld \
704 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
705 '-L/usr/lib/cmplrs/cc3.11 -lmld'
708 AC_TRY_LINK_FUNC(ldopen,
709 [gcc_cv_collect2_libs="$libs"; break])
712 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
713 case $gcc_cv_collect2_libs in
715 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
717 AC_SUBST(COLLECT2_LIBS)
719 # When building Ada code on Alpha, we need exc_resume which is usually in
720 # -lexc. So test for it.
723 AC_SEARCH_LIBS(exc_resume, exc)
726 AC_SUBST(GNAT_LIBEXC)
728 # See if the stage1 system preprocessor understands the ANSI C
729 # preprocessor stringification operator. (Used by symcat.h.)
732 # Use <inttypes.h> only if it exists,
733 # doesn't clash with <sys/types.h>, and declares intmax_t.
734 AC_MSG_CHECKING(for inttypes.h)
735 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
737 [#include <sys/types.h>
738 #include <inttypes.h>],
740 [gcc_cv_header_inttypes_h=yes],
741 gcc_cv_header_inttypes_h=no)])
742 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
743 if test $gcc_cv_header_inttypes_h = yes; then
744 AC_DEFINE(HAVE_INTTYPES_H, 1,
745 [Define if you have a working <inttypes.h> header file.])
748 dnl Disabled until we have a complete test for buggy enum bitfields.
749 dnl gcc_AC_C_ENUM_BF_UNSIGNED
751 AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
752 sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
753 fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat \
756 AC_CHECK_TYPE(ssize_t, int)
758 # Try to determine the array type of the second argument of getgroups
759 # for the target system (int or gid_t).
761 if test "${target}" = "${build}"; then
762 TARGET_GETGROUPS_T=$ac_cv_type_getgroups
765 # This condition may need some tweaking. It should include all
766 # targets where the array type of the second argument of getgroups
767 # is int and the type of gid_t is not equivalent to int.
768 *-*-sunos* | *-*-ultrix*)
769 TARGET_GETGROUPS_T=int
772 TARGET_GETGROUPS_T=gid_t
776 AC_SUBST(TARGET_GETGROUPS_T)
778 gcc_AC_FUNC_PRINTF_PTR
783 *** UWIN may not be used as a host platform because
784 *** linking with posix.dll is not allowed by the GNU GPL])
787 # Under VMS, vfork works very different than on Unix. The standard test
788 # won't work, and it isn't easily adaptable. It makes more sense to
790 ac_cv_func_vfork_works=yes
794 AC_FUNC_MMAP_ANYWHERE
799 # We will need to find libiberty.h and ansidecl.h
800 saved_CFLAGS="$CFLAGS"
801 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
802 gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
803 strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
804 fprintf_unlocked strstr errno vasprintf \
805 malloc realloc calloc free basename getopt clock, , ,[
806 #include "ansidecl.h"
807 #include "system.h"])
809 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
810 #include "ansidecl.h"
812 #ifdef HAVE_SYS_RESOURCE_H
813 #include <sys/resource.h>
817 gcc_AC_CHECK_DECLS(ldgetname, , ,[
818 #include "ansidecl.h"
825 gcc_AC_CHECK_DECLS(times, , ,[
826 #include "ansidecl.h"
828 #ifdef HAVE_SYS_TIMES_H
829 #include <sys/times.h>
833 # More time-related stuff.
834 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
836 #include "ansidecl.h"
838 #ifdef HAVE_SYS_TIMES_H
839 #include <sys/times.h>
841 ], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
842 if test $ac_cv_struct_tms = yes; then
843 AC_DEFINE(HAVE_STRUCT_TMS, 1,
844 [Define if <sys/times.h> defines struct tms.])
847 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
848 # revisit after autoconf 2.50.
849 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
851 #include "ansidecl.h"
853 ], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
854 if test $gcc_cv_type_clock_t = yes; then
855 AC_DEFINE(HAVE_CLOCK_T, 1,
856 [Define if <time.h> defines clock_t.])
859 AC_CACHE_CHECK(for uchar, gcc_cv_type_uchar,
861 #include "ansidecl.h"
864 [if ((uchar *)0) return 0;
865 if (sizeof(uchar)) return 0;],
866 ac_cv_type_uchar=yes, ac_cv_type_uchar=no)])
867 if test $ac_cv_type_uchar = yes; then
868 AC_DEFINE(HAVE_UCHAR, 1,
869 [Define if <sys/types.h> defines \`uchar'.])
872 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
873 CFLAGS="$saved_CFLAGS"
875 gcc_AC_INITFINI_ARRAY
877 # mkdir takes a single argument on some systems.
878 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
886 # With Setjmp/Longjmp based exception handling.
887 AC_ARG_ENABLE(sjlj-exceptions,
888 [ --enable-sjlj-exceptions
889 arrange to use setjmp/longjmp exception handling],
890 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
891 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
892 [Define 0/1 to force the choice for exception handling model.])])
894 AC_CHECK_LIB(unwind, main, use_libunwind_default=yes, use_libunwind_default=no)
895 # Use libunwind based exception handling.
896 AC_ARG_ENABLE(libunwind-exceptions,
897 [ --enable-libunwind-exceptions force use libunwind for exceptions],
898 use_libunwind_exceptions=$enableval,
899 use_libunwind_exceptions=$use_libunwind_default)
900 if test x"$use_libunwind_exceptions" = xyes; then
901 AC_DEFINE(USE_LIBUNWIND_EXCEPTIONS, 1,
902 [Define if gcc should use -lunwind.])
905 # --------------------------------------------------------
906 # Build, host, and target specific configuration fragments
907 # --------------------------------------------------------
912 build_install_headers_dir=install-headers-tar
917 host_truncate_target=
920 # Decode the host machine, then the target machine.
921 # For the host machine, we save the xm_file variable as host_xm_file;
922 # then we decode the target machine and forget everything else
923 # that came from the host machine.
924 for machine in $build $host $target; do
925 . ${srcdir}/config.gcc
928 extra_objs="${host_extra_objs} ${extra_objs}"
930 # Default the target-machine variables that were not explicitly set.
931 if test x"$tm_file" = x
932 then tm_file=$cpu_type/$cpu_type.h; fi
934 if test x"$extra_headers" = x
935 then extra_headers=; fi
937 if test x$md_file = x
938 then md_file=$cpu_type/$cpu_type.md; fi
940 if test x$out_file = x
941 then out_file=$cpu_type/$cpu_type.c; fi
943 if test x"$tmake_file" = x
944 then tmake_file=$cpu_type/t-$cpu_type
947 if test x"$dwarf2" = xyes
948 then tm_file="$tm_file tm-dwarf2.h"
951 # Say what files are being used for the output code and MD file.
952 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
953 echo "Using \`$srcdir/config/$md_file' as machine description file."
955 # If any of the xm_file variables contain nonexistent files, warn
956 # about them and drop them.
959 for x in $build_xm_file; do
960 if test -f $srcdir/config/$x
962 else AC_MSG_WARN($srcdir/config/$x does not exist.)
968 for x in $host_xm_file; do
969 if test -f $srcdir/config/$x
971 else AC_MSG_WARN($srcdir/config/$x does not exist.)
977 for x in $xm_file; do
978 if test -f $srcdir/config/$x
980 else AC_MSG_WARN($srcdir/config/$x does not exist.)
986 for f in $tm_file; do
989 if test $count = ax; then
990 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
992 echo "Using the following target machine macro files:"
993 for f in $tm_file; do
994 echo " $srcdir/config/$f"
998 if test x$need_64bit_hwint = xyes; then
999 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1000 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1004 for f in $host_xm_file; do
1007 if test $count = a; then
1009 elif test $count = ax; then
1010 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1012 echo "Using the following host machine macro files:"
1013 for f in $host_xm_file; do
1014 echo " $srcdir/config/$f"
1017 echo "Using ${out_host_hook_obj} for host machine hooks."
1019 if test "$host_xm_file" != "$build_xm_file"; then
1021 for f in $build_xm_file; do
1024 if test $count = a; then
1026 elif test $count = ax; then
1027 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1029 echo "Using the following build machine macro files:"
1030 for f in $build_xm_file; do
1031 echo " $srcdir/config/$f"
1036 if test x$thread_file = x; then
1037 if test x$target_thread_file != x; then
1038 thread_file=$target_thread_file
1040 thread_file='single'
1044 # Look for a file containing extra machine modes.
1045 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1046 extra_modes_file='$(srcdir)'/config/${extra_modes}
1047 AC_SUBST(extra_modes_file)
1048 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "$extra_modes",
1049 [Define to the name of a file containing a list of extra machine modes
1050 for this architecture.])
1051 AC_DEFINE(EXTRA_CC_MODES, 1,
1052 [Define if the target architecture needs extra machine modes to represent
1053 the results of comparisons.])
1056 # auto-host.h is the file containing items generated by autoconf and is
1057 # the first file included by config.h.
1058 # If host=build, it is correct to have bconfig include auto-host.h
1059 # as well. If host!=build, we are in error and need to do more
1060 # work to find out the build config parameters.
1061 if test x$host = x$build
1063 build_auto=auto-host.h
1066 # We create a subdir, then run autoconf in the subdir.
1067 # To prevent recursion we set host and build for the new
1068 # invocation of configure to the build for this invocation
1075 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1076 *) realsrcdir=../${srcdir};;
1078 saved_CFLAGS="${CFLAGS}"
1079 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1080 ${realsrcdir}/configure \
1081 --target=$target_alias --host=$build_alias --build=$build_alias
1082 CFLAGS="${saved_CFLAGS}"
1084 # We just finished tests for the build machine, so rename
1085 # the file auto-build.h in the gcc directory.
1086 mv auto-host.h ../auto-build.h
1089 build_auto=auto-build.h
1090 FORBUILD=../build-$build_alias
1094 tm_file="${tm_file} defaults.h"
1095 tm_p_file="${tm_p_file} tm-preds.h"
1096 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1097 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1098 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1099 # put this back in temporarily.
1100 xm_file="ansidecl.h ${xm_file}"
1106 # Truncate the target if necessary
1107 if test x$host_truncate_target != x; then
1108 target=`echo $target | sed -e 's/\(..............\).*/\1/'`
1111 # Get the version trigger filename from the toplevel
1112 if test "${with_gcc_version_trigger+set}" = set; then
1113 gcc_version_trigger=$with_gcc_version_trigger
1115 gcc_version_trigger=${srcdir}/version.c
1118 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
1119 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
1121 # Compile in configure arguments.
1122 if test -f configargs.h ; then
1123 # Being re-configured.
1124 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1125 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1127 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1129 cat > configargs.h <<EOF
1130 /* Generated automatically. */
1131 static const char configuration_arguments[] = "$gcc_config_arguments";
1132 static const char thread_model[] = "$thread_file";
1136 # Internationalization
1138 VERSION="$gcc_version"
1142 # Enable NLS support by default
1144 [ --enable-nls use Native Language Support (default)],
1147 # if cross compiling, disable NLS support.
1148 # It's not worth the trouble, at least for now.
1150 if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
1151 AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
1157 # Windows32 Registry support for specifying GCC installation paths.
1158 AC_ARG_ENABLE(win32-registry,
1159 [ --disable-win32-registry
1160 disable lookup of installation paths in the
1161 Registry on Windows hosts
1162 --enable-win32-registry enable registry lookup (default)
1163 --enable-win32-registry=KEY
1164 use KEY instead of GCC version as the last portion
1165 of the registry key],,)
1167 win32 | pe | cygwin* | mingw32* | uwin*)
1168 AC_MSG_CHECKING(whether windows registry support is requested)
1169 if test "x$enable_win32_registry" != xno; then
1170 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1171 [Define to 1 if installation paths should be looked up in Windows32
1172 Registry. Ignored on non windows32 hosts.])
1174 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
1179 # Check if user specified a different registry key.
1180 case "x${enable_win32_registry}" in
1183 gcc_cv_win32_registry_key="$VERSION"
1186 # no registry lookup.
1187 gcc_cv_win32_registry_key=''
1190 # user-specified key.
1191 gcc_cv_win32_registry_key="$enable_win32_registry"
1195 if test "x$enable_win32_registry" != xno; then
1196 AC_MSG_CHECKING(registry key on windows hosts)
1197 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
1198 [Define to be the last portion of registry key on windows hosts.])
1199 AC_MSG_RESULT($gcc_cv_win32_registry_key)
1204 # Get an absolute path to the GCC top-level source directory
1205 holddir=`${PWDCMD-pwd}`
1207 topdir=`${PWDCMD-pwd}`
1210 # Conditionalize the makefile for this host machine.
1211 # Make-host contains the concatenation of all host makefile fragments
1212 # [there can be more than one]. This file is built by configure.frag.
1213 host_overrides=Make-host
1214 dep_host_xmake_file=
1215 for f in .. ${host_xmake_file}
1217 if test -f ${srcdir}/config/$f
1219 dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
1223 # Conditionalize the makefile for this target machine.
1224 # Make-target contains the concatenation of all host makefile fragments
1225 # [there can be more than one]. This file is built by configure.frag.
1226 target_overrides=Make-target
1228 for f in .. ${tmake_file}
1230 if test -f ${srcdir}/config/$f
1232 dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
1236 symbolic_link='ln -s'
1238 # If the host doesn't support symlinks, modify CC in
1239 # FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
1240 # Otherwise, we can use "CC=$(CC)".
1242 if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
1244 cc_set_by_configure="\$(CC)"
1245 quoted_cc_set_by_configure="\$(CC)"
1246 stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1247 quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
1250 if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
1252 symbolic_link="cp -p"
1256 cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
1257 quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
1258 stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
1259 quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
1263 out_object_file=`basename $out_file .c`.o
1266 for f in $tm_file; do
1269 tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1271 tm_file_list="${tm_file_list} \$(srcdir)/$f" ;;
1272 *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
1277 for f in $tm_p_file; do
1280 tm_p_file_list="${tm_p_file_list} $f" ;;
1281 *) tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f" ;;
1286 for f in $host_xm_file; do
1289 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1291 host_xm_file_list="${host_xm_file_list} $f" ;;
1293 host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1294 *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
1299 for f in $build_xm_file; do
1302 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
1303 auto-build.h | auto-host.h )
1304 build_xm_file_list="${build_xm_file_list} $f" ;;
1306 host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
1307 *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
1311 # Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
1312 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1313 CROSS= AC_SUBST(CROSS)
1314 ALL=all.internal AC_SUBST(ALL)
1315 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1316 if test x$host != x$target
1318 CROSS="-DCROSS_COMPILE"
1320 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
1321 case "$host","$target" in
1322 i?86-*-*,x86_64-*-* \
1323 | powerpc*-*-*,powerpc64*-*-*)
1324 CROSS="$CROSS -DNATIVE_CROSS" ;;
1328 # If this is a cross-compiler that does not
1329 # have its own set of headers then define
1332 # If this is using newlib, then define inhibit_libc in LIBGCC2_CFLAGS.
1333 # This prevents libgcc2 from containing any code which requires libc
1336 if { test x$host != x$target && test "x$with_headers" = x &&
1337 test "x$with_sysroot" = x ; } || test x$with_newlib = xyes ; then
1338 inhibit_libc=-Dinhibit_libc
1340 AC_SUBST(inhibit_libc)
1342 # When building gcc with a cross-compiler, we need to adjust things so
1343 # that the generator programs are still built with the native compiler.
1344 # Also, we cannot run fixincludes or fix-header.
1346 # These are the normal (build=host) settings:
1347 BUILD_PREFIX= AC_SUBST(BUILD_PREFIX)
1348 BUILD_PREFIX_1=ignore- AC_SUBST(BUILD_PREFIX_1)
1349 BUILD_CC='$(CC)' AC_SUBST(BUILD_CC)
1350 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
1352 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
1353 STMP_FIXPROTO=stmp-fixproto AC_SUBST(STMP_FIXPROTO)
1355 # And these apply if build != host.
1356 if test x$build != x$host
1359 BUILD_PREFIX_1=build-
1360 BUILD_CC='$(CC_FOR_BUILD)'
1361 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
1367 # Expand extra_headers to include complete path.
1368 # This substitutes for lots of t-* files.
1370 if test "x$extra_headers" = x
1373 # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
1374 for file in $extra_headers;
1376 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1380 # Add a definition of USE_COLLECT2 if system wants one.
1381 case $use_collect2 in
1382 no) use_collect2= ;;
1385 host_xm_defines="${host_xm_defines} USE_COLLECT2"
1386 xm_defines="${xm_defines} USE_COLLECT2"
1390 # If we have gas in the build tree, make a link to it.
1391 if test -f ../gas/Makefile; then
1392 rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
1395 # If we have nm and objdump in the build tree, make a link to them.
1396 if test -f ../binutils/Makefile; then
1397 rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
1398 rm -f objdump; $symbolic_link ../binutils/objdump$host_exeext objdump$host_exeext 2>/dev/null
1401 # If we have ld in the build tree, make a link to it.
1402 if test -f ../ld/Makefile; then
1403 rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
1406 # Figure out what assembler we will be using.
1407 AC_MSG_CHECKING(what assembler to use)
1410 gcc_cv_gas_major_version=
1411 gcc_cv_gas_minor_version=
1412 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1413 gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1414 if test -x "$DEFAULT_ASSEMBLER"; then
1415 gcc_cv_as="$DEFAULT_ASSEMBLER"
1416 elif test -x "$AS"; then
1418 elif test -x as$host_exeext; then
1419 # Build using assembler in the current directory.
1420 gcc_cv_as=./as$host_exeext
1421 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1422 && test -f ../gas/Makefile; then
1423 # Single tree build which includes gas.
1425 for f in $gcc_cv_as_bfd_srcdir/configure $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
1428 gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1430 if test x$gcc_cv_gas_version != x; then
1435 gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
1436 gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1437 gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"`
1441 if test "x$gcc_cv_as" = x; then
1442 # Search the same directories that the installed compiler will
1443 # search. Else we may find the wrong assembler and lose. If we
1444 # do not find a suitable assembler binary, then try the user's
1447 # Also note we have to check MD_EXEC_PREFIX before checking the
1448 # user's path. Unfortunately, there is no good way to get at the
1449 # value of MD_EXEC_PREFIX here. So we do a brute force search
1450 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
1451 # to be fixed as part of the make/configure rewrite too.
1453 if test "x$exec_prefix" = xNONE; then
1454 if test "x$prefix" = xNONE; then
1455 test_prefix=/usr/local
1460 test_prefix=$exec_prefix
1463 # If the loop below does not find an assembler, then use whatever
1464 # one we can find in the users's path.
1466 if test "x$program_prefix" != xNONE; then
1467 gcc_cv_as=${program_prefix}as$host_exeext
1469 gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
1472 test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1473 $test_prefix/lib/gcc-lib/$target_alias \
1474 /usr/lib/gcc/$target_alias/$gcc_version \
1475 /usr/lib/gcc/$target_alias \
1476 $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1477 $test_prefix/$target_alias/bin"
1479 if test x$host = x$target; then
1480 test_dirs="$test_dirs \
1485 /bsd43/usr/lib/cmplrs/cc \
1486 /usr/cross64/usr/bin \
1487 /usr/lib/cmplrs/cc \
1488 /sysv/usr/lib/cmplrs/cc \
1489 /svr4/usr/lib/cmplrs/cc \
1493 for dir in $test_dirs; do
1494 if test -x $dir/as$host_exeext; then
1495 gcc_cv_as=$dir/as$host_exeext
1500 case $in_tree_gas in
1502 AC_MSG_RESULT("newly built gas")
1505 AC_MSG_RESULT($gcc_cv_as)
1509 # Figure out what linker we will be using.
1510 AC_MSG_CHECKING(what linker to use)
1513 gcc_cv_gld_major_version=
1514 gcc_cv_gld_minor_version=
1515 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1516 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1517 if test -x "$DEFAULT_LINKER"; then
1518 gcc_cv_ld="$DEFAULT_LINKER"
1519 elif test -x "$LD"; then
1521 elif test -x ld$host_exeext; then
1522 # Build using linker in the current directory.
1523 gcc_cv_ld=./ld$host_exeext
1524 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1525 && test -f ../ld/Makefile; then
1526 # Single tree build which includes ld.
1528 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
1531 gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
1533 if test x$gcc_cv_gld_version != x; then
1538 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1539 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1543 if test "x$gcc_cv_ld" = x; then
1544 # Search the same directories that the installed compiler will
1545 # search. Else we may find the wrong linker and lose. If we
1546 # do not find a suitable linker binary, then try the user's
1549 # Also note we have to check MD_EXEC_PREFIX before checking the
1550 # user's path. Unfortunately, there is no good way to get at the
1551 # value of MD_EXEC_PREFIX here. So we do a brute force search
1552 # through all the known MD_EXEC_PREFIX values. Ugh. This needs
1553 # to be fixed as part of the make/configure rewrite too.
1555 if test "x$exec_prefix" = xNONE; then
1556 if test "x$prefix" = xNONE; then
1557 test_prefix=/usr/local
1562 test_prefix=$exec_prefix
1565 # If the loop below does not find an linker, then use whatever
1566 # one we can find in the users's path.
1568 if test "x$program_prefix" != xNONE; then
1569 gcc_cv_ld=${program_prefix}ld$host_exeext
1571 gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
1574 test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
1575 $test_prefix/lib/gcc-lib/$target_alias \
1576 /usr/lib/gcc/$target_alias/$gcc_version \
1577 /usr/lib/gcc/$target_alias \
1578 $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
1579 $test_prefix/$target_alias/bin"
1581 if test x$host = x$target; then
1582 test_dirs="$test_dirs \
1587 /bsd43/usr/lib/cmplrs/cc \
1588 /usr/cross64/usr/bin \
1589 /usr/lib/cmplrs/cc \
1590 /sysv/usr/lib/cmplrs/cc \
1591 /svr4/usr/lib/cmplrs/cc \
1595 for dir in $test_dirs; do
1596 if test -x $dir/ld$host_exeext; then
1597 gcc_cv_ld=$dir/ld$host_exeext
1604 AC_MSG_RESULT("newly built ld")
1607 AC_MSG_RESULT($gcc_cv_ld)
1611 # Figure out what nm we will be using.
1612 AC_MSG_CHECKING(what nm to use)
1613 if test -x nm$host_exeext; then
1614 gcc_cv_nm=./nm$host_exeext
1615 elif test "x$program_prefix" != xNONE; then
1616 gcc_cv_nm=${program_prefix}nm$host_exeext
1618 gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
1620 AC_MSG_RESULT($gcc_cv_nm)
1622 # Figure out what objdump we will be using.
1623 AC_MSG_CHECKING(what objdump to use)
1624 if test -x objdump$host_exeext; then
1625 gcc_cv_objdump=./objdump$host_exeext
1626 elif test "x$program_prefix" != xNONE; then
1627 gcc_cv_objdump=${program_prefix}objdump$host_exeext
1629 gcc_cv_objdump=`echo objdump | sed ${program_transform_name}`$host_exeext
1631 AC_MSG_RESULT($gcc_cv_objdump)
1633 # Figure out what assembler alignment features are present.
1634 AC_MSG_CHECKING(assembler alignment features)
1635 gcc_cv_as_alignment_features=none
1636 if test $in_tree_gas = yes; then
1637 # Gas version 2.6 and later support for .balign and .p2align.
1638 # bytes to skip when using .p2align.
1639 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
1640 gcc_cv_as_alignment_features=".balign and .p2align"
1641 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1643 # Gas version 2.8 and later support specifying the maximum
1644 # bytes to skip when using .p2align.
1645 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
1646 gcc_cv_as_alignment_features=".p2align including maximum skip"
1647 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1649 elif test x$gcc_cv_as != x; then
1650 # Check if we have .balign and .p2align
1651 echo ".balign 4" > conftest.s
1652 echo ".p2align 2" >> conftest.s
1653 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1654 gcc_cv_as_alignment_features=".balign and .p2align"
1655 AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
1657 rm -f conftest.s conftest.o
1658 # Check if specifying the maximum bytes to skip when
1659 # using .p2align is supported.
1660 echo ".p2align 4,,7" > conftest.s
1661 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1662 gcc_cv_as_alignment_features=".p2align including maximum skip"
1663 AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
1665 rm -f conftest.s conftest.o
1667 AC_MSG_RESULT($gcc_cv_as_alignment_features)
1669 AC_MSG_CHECKING(assembler subsection support)
1670 gcc_cv_as_subsections=no
1671 if test $in_tree_gas = yes ; then
1672 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
1673 gcc_cv_as_subsections="working .subsection -1"
1675 elif test x$gcc_cv_as != x; then
1676 # Check if we have .subsection
1677 echo ".subsection 1" > conftest.s
1678 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1679 gcc_cv_as_subsections=".subsection"
1680 if test x$gcc_cv_nm != x; then
1681 cat > conftest.s <<EOF
1682 conftest_label1: .word 0
1684 conftest_label2: .word 0
1687 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1688 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1689 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1690 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
1693 gcc_cv_as_subsections="working .subsection -1"
1698 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1700 if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
1701 AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1702 [Define if your assembler supports .subsection and .subsection -1 starts
1703 emitting at the beginning of your section.])
1705 AC_MSG_RESULT($gcc_cv_as_subsections)
1707 AC_MSG_CHECKING(assembler weak support)
1709 if test $in_tree_gas = yes ; then
1710 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
1711 gcc_cv_as_weak="yes"
1713 elif test x$gcc_cv_as != x; then
1714 # Check if we have .weak
1715 echo " .weak foobar" > conftest.s
1716 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1717 gcc_cv_as_weak="yes"
1719 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1721 if test x"$gcc_cv_as_weak" = xyes; then
1722 AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
1724 AC_MSG_RESULT($gcc_cv_as_weak)
1726 AC_MSG_CHECKING(assembler hidden support)
1728 if test $in_tree_gas = yes ; then
1729 if test "$gcc_cv_gas_major_version" -eq 2 \
1730 -a "$gcc_cv_gas_minor_version" -eq 12 \
1731 -a "$gcc_cv_gas_patch_version" -ge 1 \
1732 -o "$gcc_cv_gas_major_version" -eq 2 \
1733 -a "$gcc_cv_gas_minor_version" -gt 12 \
1734 -o "$gcc_cv_gas_major_version" -gt 2 \
1735 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1736 gcc_cv_as_hidden="yes"
1738 elif test x$gcc_cv_as != x; then
1739 # Check if we have .hidden
1740 echo " .hidden foobar" > conftest.s
1741 echo "foobar:" >> conftest.s
1742 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1743 gcc_cv_as_hidden="yes"
1745 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1747 # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
1748 # This is irritatingly difficult to feature test for. Look for
1749 # the date string after the version number.
1750 ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
1751 if echo "$ld_ver" | grep GNU > /dev/null; then
1753 ld_vers=`echo $ld_ver | sed -n 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\([ ].*\|\)$,\1,p'`
1754 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'`
1755 if test 0"$ld_date" -lt 20020404; then
1756 if test -n "$ld_date"; then
1757 # If there was date string, but was earlier than 2002-04-04, fail
1758 gcc_cv_as_hidden="no"
1759 elif test -z "$ld_vers"; then
1760 # If there was no date string nor ld version number, something is wrong
1761 gcc_cv_as_hidden="no"
1763 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
1764 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
1765 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
1766 test -z "$ld_vers_patch" && ld_vers_patch=0
1767 if test "$ld_vers_major" -lt 2; then
1768 gcc_cv_as_hidden="no"
1769 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
1770 gcc_cv_as_hidden="no"
1771 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \
1772 -a "$ld_vers_patch" -eq 0; then
1773 gcc_cv_as_hidden="no"
1780 if test x"$gcc_cv_as_hidden" = xyes; then
1781 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
1782 [Define if your assembler supports .hidden.])
1784 AC_MSG_RESULT($gcc_cv_as_hidden)
1785 libgcc_visibility=$gcc_cv_as_hidden
1788 if test x"$gnu_ld_flag" = x"no"; then
1789 # Even if using gas with .hidden support, the resulting object files
1790 # cannot be linked with the IRIX 6 O32 linker. With the N32 and
1791 # N64 linkers, the problem is that the linker refuses to accept
1792 # -call_shared (passed by default to the linker) and -r (used to
1793 # link the object file generated without .hidden directives with
1794 # one that hides symbols), so we also lose.
1795 libgcc_visibility=no
1799 AC_SUBST(libgcc_visibility)
1801 AC_MSG_CHECKING(assembler leb128 support)
1803 if test $in_tree_gas = yes ; then
1804 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1805 gcc_cv_as_leb128="yes"
1807 elif test x$gcc_cv_as != x; then
1808 # Check if we have .[us]leb128, and support symbol arithmetic with it.
1809 cat > conftest.s <<EOF
1817 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
1818 gcc_cv_as_leb128="yes"
1820 # GAS versions before 2.11 do not support uleb128,
1821 # despite appearing to.
1822 # ??? There exists an elf-specific test that will crash
1823 # the assembler. Perhaps it's better to figure out whether
1824 # arbitrary sections are supported and try the test.
1825 as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
1826 if echo "$as_ver" | grep GNU > /dev/null; then
1828 as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
1829 as_major=`echo $as_ver | sed 's/\..*//'`
1830 as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
1832 if test $as_major -eq 2 -a $as_minor -lt 11; then
1833 gcc_cv_as_leb128="no"
1837 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
1839 if test x"$gcc_cv_as_leb128" = xyes; then
1840 AC_DEFINE(HAVE_AS_LEB128, 1,
1841 [Define if your assembler supports .uleb128.])
1843 AC_MSG_RESULT($gcc_cv_as_leb128)
1845 AC_MSG_CHECKING(assembler eh_frame optimization)
1846 gcc_cv_as_eh_frame=no
1847 if test $in_tree_gas = yes ; then
1848 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1849 gcc_cv_as_eh_frame="yes"
1851 elif test x$gcc_cv_as != x; then
1852 # Check if this is GAS.
1853 as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
1854 rm -f a.out 2> /dev/null
1855 if echo "$as_ver" | grep GNU > /dev/null; then
1856 # Versions up to and including 2.11.0 may mis-optimize
1857 # .eh_frame data. Try something.
1858 cat > conftest.s <<EOF
1865 .section .eh_frame,"aw",@progbits
1867 .4byte .LECIE1-.LSCIE1
1881 .4byte .LEFDE1-.LASFDE1
1883 .4byte .LASFDE1-__FRAME_BEGIN__
1892 cat > conftest.lit <<EOF
1893 0000 10000000 00000000 017a0001 781a0004 .........z..x...
1894 0010 01000000 12000000 18000000 00000000 ................
1895 0020 08000000 04080000 0044 .........D
1897 cat > conftest.big <<EOF
1898 0000 00000010 00000000 017a0001 781a0004 .........z..x...
1899 0010 00000001 00000012 00000018 00000000 ................
1900 0020 00000008 04000000 0844 .........D
1902 # If the assembler didn't choke, and we can objdump,
1903 # and we got the correct data, then succeed.
1904 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
1905 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
1906 | tail -3 > conftest.got \
1907 && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
1908 || cmp conftest.big conftest.got > /dev/null 2>&1; }
1910 gcc_cv_as_eh_frame="yes"
1912 gcc_cv_as_eh_frame="bad"
1913 if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
1914 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
1915 [Define if your assembler mis-optimizes .eh_frame data.])
1921 AC_MSG_RESULT($gcc_cv_as_eh_frame)
1923 AC_MSG_CHECKING(assembler section merging support)
1924 gcc_cv_as_shf_merge=no
1925 if test $in_tree_gas = yes ; then
1926 if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
1927 gcc_cv_as_shf_merge=yes
1929 elif test x$gcc_cv_as != x; then
1930 # Check if we support SHF_MERGE sections
1931 echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
1932 if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
1933 gcc_cv_as_shf_merge=yes
1935 rm -f conftest.s conftest.o
1937 if test x"$gcc_cv_as_shf_merge" = xyes; then
1938 AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
1939 [Define if your assembler supports marking sections with SHF_MERGE flag.])
1941 AC_MSG_RESULT($gcc_cv_as_shf_merge)
1943 AC_MSG_CHECKING(assembler thread-local storage support)
1952 .section ".tdata","awT",@progbits
1955 ldq $27,__tls_get_addr($29) !literal!1
1956 lda $16,foo($29) !tlsgd!1
1957 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
1958 ldq $27,__tls_get_addr($29) !literal!2
1959 lda $16,foo($29) !tlsldm!2
1960 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
1961 ldq $1,foo($29) !gotdtprel
1962 ldah $2,foo($29) !dtprelhi
1963 lda $3,foo($2) !dtprello
1964 lda $4,foo($29) !dtprel
1965 ldq $1,foo($29) !gottprel
1966 ldah $2,foo($29) !tprelhi
1967 lda $3,foo($2) !tprello
1968 lda $4,foo($29) !tprel'
1975 .section ".tdata","awT",@progbits
1979 leal foo@TLSGD(,%ebx,1), %eax
1980 leal foo@TLSLDM(%ebx), %eax
1981 leal foo@DTPOFF(%eax), %edx
1982 movl foo@GOTTPOFF(%ebx), %eax
1983 subl foo@GOTTPOFF(%ebx), %eax
1984 addl foo@GOTNTPOFF(%ebx), %eax
1985 movl foo@INDNTPOFF, %eax
1986 movl $foo@TPOFF, %eax
1987 subl $foo@TPOFF, %eax
1988 leal foo@NTPOFF(%ecx), %eax'
1994 .section ".tdata","awT",@progbits
1998 leaq foo@TLSGD(%rip), %rdi
1999 leaq foo@TLSLD(%rip), %rdi
2000 leaq foo@DTPOFF(%rax), %rdx
2001 movq foo@GOTTPOFF(%rip), %rax
2002 movq $foo@TPOFF, %rax'
2008 .section ".tdata","awT",@progbits
2011 addl r16 = @ltoff(@dtpmod(foo#)), gp
2012 addl r17 = @ltoff(@dtprel(foo#)), gp
2013 addl r18 = @ltoff(@tprel(foo#)), gp
2014 addl r19 = @dtprel(foo#), gp
2015 adds r21 = @dtprel(foo#), r13
2016 movl r23 = @dtprel(foo#)
2017 addl r20 = @tprel(foo#), gp
2018 adds r22 = @tprel(foo#), r13
2019 movl r24 = @tprel(foo#)'
2025 .section ".tdata","awT",@progbits
2034 l %r1,foo@GOTNTPOFF(%r12)
2035 l %r1,0(%r1):tls_load:foo
2036 bas %r14,0(%r1,%r13):tls_gdcall:foo
2037 bas %r14,0(%r1,%r13):tls_ldcall:foo'
2043 .section ".tdata","awT",@progbits
2051 lg %r1,foo@GOTNTPOFF(%r12)
2052 larl %r1,foo@INDNTPOFF
2053 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
2054 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2059 if test -z "$tls_first_major"; then
2061 elif test $in_tree_gas = yes ; then
2062 if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
2063 -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
2064 -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
2067 elif test x$gcc_cv_as != x; then
2068 echo "$conftest_s" > conftest.s
2069 if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
2073 rm -f conftest.s conftest.o
2075 if test "$gcc_cv_as_tls" = yes; then
2076 AC_DEFINE(HAVE_AS_TLS, 1,
2077 [Define if your assembler supports thread-local storage.])
2079 AC_MSG_RESULT($gcc_cv_as_tls)
2082 # All TARGET_ABI_OSF targets.
2083 alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2084 AC_CACHE_CHECK([assembler supports explicit relocations],
2085 gcc_cv_as_explicit_relocs, [
2086 gcc_cv_as_explicit_relocs=unknown
2087 if test $in_tree_gas = yes ; then
2088 if test "$gcc_cv_gas_major_version" -eq 2 \
2089 -a "$gcc_cv_gas_minor_version" -ge 12 \
2090 -o "$gcc_cv_gas_major_version" -gt 2; then
2091 gcc_cv_as_explicit_relocs=yes
2093 elif test x$gcc_cv_as != x; then
2094 cat > conftest.s << 'EOF'
2097 extbl $3, $2, $3 !lituse_bytoff!1
2098 ldq $2, a($29) !literal!1
2099 ldq $4, b($29) !literal!2
2100 ldq_u $3, 0($2) !lituse_base!1
2101 ldq $27, f($29) !literal!5
2102 jsr $26, ($27), f !lituse_jsr!5
2103 ldah $29, 0($26) !gpdisp!3
2104 lda $0, c($29) !gprel
2105 ldah $1, d($29) !gprelhigh
2106 lda $1, d($1) !gprellow
2107 lda $29, 0($29) !gpdisp!3
2109 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2110 gcc_cv_as_explicit_relocs=yes
2112 gcc_cv_as_explicit_relocs=no
2114 rm -f conftest.s conftest.o
2117 if test "x$gcc_cv_as_explicit_relocs" = xyes; then
2118 AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2119 [Define if your assembler supports explicit relocations.])
2123 AC_CACHE_CHECK([assembler .register pseudo-op support],
2124 gcc_cv_as_register_pseudo_op, [
2125 gcc_cv_as_register_pseudo_op=unknown
2126 if test x$gcc_cv_as != x; then
2127 # Check if we have .register
2128 echo ".register %g2, #scratch" > conftest.s
2129 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2130 gcc_cv_as_register_pseudo_op=yes
2132 gcc_cv_as_register_pseudo_op=no
2134 rm -f conftest.s conftest.o
2137 if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
2138 AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2139 [Define if your assembler supports .register.])
2142 AC_CACHE_CHECK([assembler supports -relax],
2143 gcc_cv_as_relax_opt, [
2144 gcc_cv_as_relax_opt=unknown
2145 if test x$gcc_cv_as != x; then
2146 # Check if gas supports -relax
2147 echo ".text" > conftest.s
2148 if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
2149 gcc_cv_as_relax_opt=yes
2151 gcc_cv_as_relax_opt=no
2153 rm -f conftest.s conftest.o
2156 if test "x$gcc_cv_as_relax_opt" = xyes; then
2157 AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2158 [Define if your assembler supports -relax option.])
2161 AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
2162 gcc_cv_as_sparc_ua_pcrel, [
2163 gcc_cv_as_sparc_ua_pcrel=unknown
2164 if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
2165 gcc_cv_as_sparc_ua_pcrel=no
2166 echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
2167 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2168 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2169 gcc_cv_as_sparc_ua_pcrel=yes
2171 rm -f conftest.s conftest.o conftest
2174 if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2175 AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2176 [Define if your assembler and linker support unaligned PC relative relocs.])
2179 AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
2180 gcc_cv_as_sparc_ua_pcrel_hidden, [
2181 if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
2182 gcc_cv_as_sparc_ua_pcrel_hidden=unknown
2183 if test x$gcc_cv_objdump != x; then
2184 gcc_cv_as_sparc_ua_pcrel_hidden=no
2185 echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
2186 echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
2187 echo "foo: .skip 4" >> conftest.s
2188 if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
2189 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2190 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2191 | grep ' 31000000 07323334' > /dev/null 2>&1; then
2192 if $gcc_cv_objdump -R conftest 2> /dev/null \
2193 | grep 'DISP32' > /dev/null 2>&1; then
2196 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2200 rm -f conftest.s conftest.o conftest
2202 gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
2205 if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
2206 AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2207 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
2210 AC_CACHE_CHECK([for assembler offsetable %lo() support],
2211 gcc_cv_as_offsetable_lo10, [
2212 gcc_cv_as_offsetable_lo10=unknown
2213 if test "x$gcc_cv_as" != x; then
2214 # Check if assembler has offsetable %lo()
2215 echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
2216 echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
2217 if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
2219 $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
2220 > /dev/null 2>&1; then
2221 if cmp conftest.o conftest1.o > /dev/null 2>&1; then
2222 gcc_cv_as_offsetable_lo10=no
2224 gcc_cv_as_offsetable_lo10=yes
2227 gcc_cv_as_offsetable_lo10=no
2229 rm -f conftest.s conftest.o conftest1.s conftest1.o
2232 if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
2233 AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2234 [Define if your assembler supports offsetable %lo().])
2240 i[34567]86-*-* | x86_64-*-*)
2242 AC_MSG_CHECKING(assembler instructions)
2243 gcc_cv_as_instructions=
2244 if test $in_tree_gas = yes ; then
2245 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
2246 gcc_cv_as_instructions="filds fists"
2248 elif test x$gcc_cv_as != x; then
2249 set "filds fists" "filds mem; fists mem"
2252 echo "$2" > conftest.s
2253 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2254 gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
2258 rm -f conftest.s conftest.o
2260 if test x"$gcc_cv_as_instructions" != x; then
2261 AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
2263 AC_MSG_RESULT($gcc_cv_as_instructions)
2265 AC_MSG_CHECKING(assembler GOTOFF in data directives)
2266 gcc_cv_as_gotoff_in_data=no
2267 if test $in_tree_gas = yes ; then
2268 if test "$gcc_cv_gas_major_version" -eq 2 \
2269 -a "$gcc_cv_gas_minor_version" -ge 11 \
2270 -o "$gcc_cv_gas_major_version" -gt 2; then
2271 gcc_cv_as_gotoff_in_data=yes
2273 elif test x$gcc_cv_as != x; then
2274 cat > conftest.s <<EOF
2281 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2282 gcc_cv_as_gotoff_in_data=yes
2285 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2286 [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2287 [Define true if the assembler supports '.long foo@GOTOFF'.])
2288 AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
2292 AC_CACHE_CHECK([assembler supports ltoffx and ldxmov],
2293 gcc_cv_as_ltoffx_ldxmov_relocs, [
2294 gcc_cv_as_ltoffx_ldxmov_relocs=unknown
2295 if test x$gcc_cv_gas_major_version != x \
2296 -a x$gcc_cv_gas_minor_version != x
2298 if test "$gcc_cv_gas_major_version" -eq 2 \
2299 -a "$gcc_cv_gas_minor_version" -ge 14 \
2300 -o "$gcc_cv_gas_major_version" -gt 2; then
2301 gcc_cv_as_ltoffx_ldxmov_relocs=yes
2303 elif test x$gcc_cv_as != x; then
2304 cat > conftest.s << 'EOF'
2307 addl r15 = @ltoffx(x#), gp
2309 ld8.mov r16 = [r15], x#
2312 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
2313 gcc_cv_as_ltoffx_ldxmov_relocs=yes
2315 gcc_cv_as_ltoffx_ldxmov_relocs=no
2317 rm -f conftest.s conftest.o
2320 if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then
2321 AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2322 [Define if your assembler supports ltoffx and ldxmov relocations.])
2327 AC_MSG_CHECKING(assembler dwarf2 debug_line support)
2328 gcc_cv_as_dwarf2_debug_line=no
2329 # ??? Not all targets support dwarf2 debug_line, even within a version
2330 # of gas. Moreover, we need to emit a valid instruction to trigger any
2331 # info to the output file. So, as supported targets are added to gas 2.11,
2332 # add some instruction here to (also) show we expect this might work.
2333 # ??? Once 2.11 is released, probably need to add first known working
2334 # version to the per-target configury.
2336 i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2337 | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-*)
2344 if test $in_tree_gas = yes ; then
2345 if test "$gcc_cv_gas_major_version" -eq 2 \
2346 -a "$gcc_cv_gas_minor_version" -ge 11 \
2347 -o "$gcc_cv_gas_major_version" -gt 2 \
2348 && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2349 && test x"$insn" != x ; then
2350 gcc_cv_as_dwarf2_debug_line="yes"
2352 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2353 echo ' .file 1 "conftest.s"' > conftest.s
2354 echo ' .loc 1 3 0' >> conftest.s
2355 echo " $insn" >> conftest.s
2356 # ??? This fails with non-gnu grep.
2357 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2358 && grep debug_line conftest.o > /dev/null 2>&1 ; then
2359 # The .debug_line file table must be in the exact order that
2360 # we specified the files, since these indices are also used
2361 # by DW_AT_decl_file. Approximate this test by testing if
2362 # the assembler bitches if the same index is assigned twice.
2363 echo ' .file 1 "foo.s"' > conftest.s
2364 echo ' .file 1 "bar.s"' >> conftest.s
2365 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
2367 gcc_cv_as_dwarf2_debug_line="no"
2369 gcc_cv_as_dwarf2_debug_line="yes"
2372 rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
2374 if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
2375 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
2376 [Define if your assembler supports dwarf2 .file/.loc directives,
2377 and preserves file table indices exactly as given.])
2379 AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
2381 AC_MSG_CHECKING(assembler --gdwarf2 support)
2382 gcc_cv_as_gdwarf2_flag=no
2383 if test $in_tree_gas = yes ; then
2384 if test "$gcc_cv_gas_major_version" -eq 2 \
2385 -a "$gcc_cv_gas_minor_version" -ge 11 \
2386 -o "$gcc_cv_gas_major_version" -gt 2 \
2387 && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2388 && test x"$insn" != x ; then
2389 gcc_cv_as_gdwarf2_flag="yes"
2391 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2392 echo '' > conftest.s
2393 # ??? This fails with non-gnu grep.
2394 if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
2396 gcc_cv_as_gdwarf2_flag="yes"
2398 rm -f conftest.s conftest.o
2400 if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
2401 AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
2402 [Define if your assembler supports the --gdwarf2 option.])
2404 AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
2406 AC_MSG_CHECKING(assembler --gstabs support)
2407 gcc_cv_as_gstabs_flag=no
2408 if test $in_tree_gas = yes ; then
2409 if test "$gcc_cv_gas_major_version" -eq 2 \
2410 -a "$gcc_cv_gas_minor_version" -ge 11 \
2411 -o "$gcc_cv_gas_major_version" -gt 2 \
2412 && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2413 && test x"$insn" != x ; then
2414 gcc_cv_as_gstabs_flag="yes"
2416 elif test x$gcc_cv_as != x -a x"$insn" != x ; then
2417 echo '' > conftest.s
2418 # ??? This fails with non-gnu grep.
2419 if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
2420 gcc_cv_as_gstabs_flag="yes"
2422 rm -f conftest.s conftest.o
2424 if test x"$gcc_cv_as_gstabs_flag" = xyes; then
2425 AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
2426 [Define if your assembler supports the --gstabs option.])
2428 AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
2430 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2431 gcc_cv_ld_ro_rw_mix=unknown
2432 if test $in_tree_ld = yes ; then
2433 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2434 gcc_cv_ld_ro_rw_mix=read-write
2436 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2437 echo '.section "myfoosect", "a"' > conftest1.s
2438 echo '.section "myfoosect", "aw"' > conftest2.s
2439 echo '.byte 1' >> conftest2.s
2440 echo '.section "myfoosect", "a"' > conftest3.s
2441 echo '.byte 0' >> conftest3.s
2442 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2443 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2444 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2445 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2446 conftest2.o conftest3.o; then
2447 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2448 | grep -A1 myfoosect`
2449 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2450 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2451 gcc_cv_ld_ro_rw_mix=read-only
2453 gcc_cv_ld_ro_rw_mix=read-write
2458 rm -f conftest.* conftest[123].*
2461 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2462 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2463 [Define if your linker links a mix of read-only
2464 and read-write sections into a read-write section.])
2466 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2468 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
2469 gcc_cv_ld_eh_frame_hdr=no
2470 if test $in_tree_ld = yes ; then
2471 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
2472 gcc_cv_ld_eh_frame_hdr=yes
2474 elif 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
2480 if 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.])
2484 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
2486 # Miscellaneous target-specific checks.
2489 AC_MSG_CHECKING(whether libgloss uses STARTUP directives consistently)
2490 gcc_cv_mips_libgloss_startup=no
2491 gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
2492 if test "x$exec_prefix" = xNONE; then
2493 if test "x$prefix" = xNONE; then
2494 test_prefix=/usr/local
2499 test_prefix=$exec_prefix
2501 for f in $gcc_cv_libgloss_srcdir/mips/idt.ld $test_prefix/$target_alias/lib/idt.ld
2503 if grep '^STARTUP' $f > /dev/null 2>&1; then
2504 gcc_cv_mips_libgloss_startup=yes
2508 if test x"$gcc_cv_mips_libgloss_startup" = xyes; then
2509 AC_DEFINE(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES, 1,
2510 [Define if your MIPS libgloss linker scripts consistently include STARTUP directives.])
2512 AC_MSG_RESULT($gcc_cv_mips_libgloss_startup)
2516 if test x$with_sysroot = x && test x$host = x$target \
2517 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
2518 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
2521 # Figure out what language subdirectories are present.
2522 # Look if the user specified --enable-languages="..."; if not, use
2523 # the environment variable $LANGUAGES if defined. $LANGUAGES might
2525 # NB: embedded tabs in this IF block -- do not untabify
2526 if test x"${enable_languages+set}" != xset; then
2527 if test x"${LANGUAGES+set}" = xset; then
2528 enable_languages="${LANGUAGES}"
2529 AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
2532 enable_languages=all
2535 if test x"${enable_languages}" = x \
2536 || test x"${enable_languages}" = xyes;
2538 AC_MSG_ERROR([--enable-languages needs at least one language argument])
2541 enable_languages=`echo "${enable_languages}" | sed -e 's/[[ ,]][[ ,]]*/,/g' -e 's/,$//'`
2543 # First scan to see if an enabled language requires some other language.
2544 # We assume that a given config-lang.in will list all the language
2545 # front ends it requires, even if some are required indirectly.
2546 for lang in ${srcdir}/*/config-lang.in ..
2551 # The odd quoting in the next line works around
2552 # an apparent bug in bash 1.12 on linux.
2554 ${srcdir}/[*]/config-lang.in)
2557 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
2558 this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^ ]*\).*$,\1,p' $lang`
2559 for other in $this_lang_requires
2561 case ,${enable_languages}, in
2567 enable_languages="$enable_languages,$other"
2576 expected_languages=`echo ,${enable_languages}, | sed -e 's:,: :g' -e 's: *: :g' -e 's: *: :g' -e 's:^ ::' -e 's: $::'`
2579 for lang in ${srcdir}/*/config-lang.in ..
2583 # The odd quoting in the next line works around
2584 # an apparent bug in bash 1.12 on linux.
2586 ${srcdir}/[*]/config-lang.in) ;;
2588 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
2589 this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^ ]*\).*$,\1,p' $lang`
2590 build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^ ]*\).*$,\1,p' $lang`
2591 if test "x$lang_alias" = x
2593 echo "$lang doesn't set \$language." 1>&2
2596 case ${build_by_default},${enable_languages}, in
2597 *,$lang_alias,*) add_this_lang=yes ;;
2598 no,*) add_this_lang=no ;;
2599 *,all,*) add_this_lang=yes ;;
2600 *) add_this_lang=no ;;
2602 found_languages="${found_languages} ${lang_alias}"
2603 if test x"${add_this_lang}" = xyes; then
2605 ${srcdir}/ada/config-lang.in)
2606 if test x$have_gnat = xyes ; then
2607 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2611 subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
2621 for expected_language in ${expected_languages} ..
2623 if test "${expected_language}" != ..; then
2624 missing_language="${expected_language}"
2625 if test "${expected_language}" = "c" \
2626 || test "${expected_language}" = "all"; then
2629 for found_language in ${found_languages} ..
2631 if test "${found_language}" != ..; then
2632 if test "${expected_language}" = "${found_language}"; then
2637 if test "x${missing_language}" != x; then
2638 missing_languages="${missing_languages} ${missing_language}"
2643 if test "x$missing_languages" != x; then
2645 The following requested languages were not found:${missing_languages}
2646 The following languages were available: c${found_languages}])
2649 # Make gthr-default.h if we have a thread file.
2651 if test $thread_file != single; then
2652 rm -f gthr-default.h
2653 echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
2654 gthread_flags=-DHAVE_GTHR_DEFAULT
2656 AC_SUBST(gthread_flags)
2658 # Find out what GC implementation we want, or may, use.
2660 [ --with-gc={simple,page} choose the garbage collection mechanism to use
2667 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
2672 echo "Using $GGC for garbage collection."
2674 # Use the system's zlib library.
2676 zlibinc="-I\$(srcdir)/../zlib"
2677 AC_ARG_WITH(system-zlib,
2678 [ --with-system-zlib use installed libz],
2685 dnl Very limited version of automake's enable-maintainer-mode
2687 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
2688 dnl maintainer-mode is disabled by default
2689 AC_ARG_ENABLE(maintainer-mode,
2690 [ --enable-maintainer-mode
2691 enable make rules and dependencies not useful
2692 (and sometimes confusing) to the casual installer],
2693 maintainer_mode=$enableval,
2696 AC_MSG_RESULT($maintainer_mode)
2698 if test "$maintainer_mode" = "yes"; then
2705 # Make empty files to contain the specs and options for each language.
2706 # Then add #include lines to for a compiler that has specs and/or options.
2711 for subdir in . $subdirs
2713 if test -f $srcdir/$subdir/lang-specs.h; then
2714 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
2716 if test -f $srcdir/$subdir/lang-options.h; then
2717 lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
2719 if test -f $srcdir/$subdir/$subdir-tree.def; then
2720 lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
2724 # These (without "all_") are set in each config-lang.in.
2725 # `language' must be a single word so is spelled singularly.
2730 all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
2731 # List of language makefile fragments.
2733 # Files for gengtype
2734 all_gtfiles="$target_gtfiles"
2735 # Files for gengtype with language
2736 all_gtfiles_files_langs=
2737 all_gtfiles_files_files=
2739 # Add the language fragments.
2740 # Languages are added via two mechanisms. Some information must be
2741 # recorded in makefile variables, these are defined in config-lang.in.
2742 # We accumulate them and plug them into the main Makefile.
2743 # The other mechanism is a set of hooks for each of the main targets
2744 # like `clean', `install', etc.
2746 language_fragments="Make-lang"
2747 language_hooks="Make-hooks"
2749 for s in .. $subdirs
2759 . ${srcdir}/$s/config-lang.in
2760 if test "x$language" = x
2762 echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
2765 all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
2766 if test -f ${srcdir}/$s/Makefile.in
2767 then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
2769 all_languages="$all_languages $language"
2770 if test "x$boot_language" = xyes
2772 all_boot_languages="$all_boot_languages $language"
2774 all_compilers="$all_compilers $compilers"
2775 all_stagestuff="$all_stagestuff $stagestuff"
2776 all_outputs="$all_outputs $outputs"
2777 all_gtfiles="$all_gtfiles $gtfiles"
2778 for f in .. $gtfiles
2782 all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2783 all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2789 # Pick up gtfiles for c
2792 . ${srcdir}/c-config-lang.in
2793 all_gtfiles="$all_gtfiles $gtfiles"
2794 for f in .. $gtfiles
2798 all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
2799 all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
2804 for language in .. $all_languages
2806 if test $language != ".."
2808 check_languages="$check_languages check-$language"
2812 # Since we can't use `::' targets, we link each language in
2813 # with a set of hooks, reached indirectly via lang.${target}.
2817 target_list="all.build all.cross start.encap rest.encap tags \
2818 info dvi generated-manpages \
2819 install-normal install-common install-info install-man \
2821 mostlyclean clean distclean extraclean maintainer-clean \
2822 stage1 stage2 stage3 stage4"
2823 for t in $target_list
2826 for lang in .. $all_languages
2828 if test $lang != ".."; then
2832 echo "lang.$t: $x" >> Make-hooks
2837 echo "dir ." > .gdbinit
2838 echo "dir ${srcdir}" >> .gdbinit
2839 if test x$gdb_needs_out_file_path = xyes
2841 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
2843 if test "x$subdirs" != x; then
2846 echo "dir ${srcdir}/$s" >> .gdbinit
2849 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
2851 # Define variables host_canonical and build_canonical
2852 # because some Cygnus local changes in the Makefile depend on them.
2853 build_canonical=${build}
2854 host_canonical=${host}
2856 if test "${host}" != "${target}" ; then
2857 target_subdir=${target_alias}/
2859 AC_SUBST(build_canonical)
2860 AC_SUBST(host_canonical)
2861 AC_SUBST(target_subdir)
2863 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
2864 # absolute path for gcc_tooldir based on inserting the number of up-directory
2865 # movements required to get from $(exec_prefix) to $(prefix) into the basic
2866 # $(libsubdir)/@(unlibsubdir) based path.
2867 # Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
2868 # make and thus we'd get different behavior depending on where we built the
2870 if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
2871 gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
2873 changequote(<<, >>)dnl
2874 # An explanation of the sed strings:
2875 # -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix'
2876 # -e 's|/$||' match a trailing forward slash and eliminates it
2877 # -e 's|^[^/]|/|' forces the string to start with a forward slash (*)
2878 # -e 's|/[^/]*|../|g' replaces each occurrence of /<directory> with ../
2880 # (*) Note this pattern overwrites the first character of the string
2881 # with a forward slash if one is not already present. This is not a
2882 # problem because the exact names of the sub-directories concerned is
2883 # unimportant, just the number of them matters.
2885 # The practical upshot of these patterns is like this:
2887 # prefix exec_prefix result
2888 # ------ ----------- ------
2890 # /foo/ /foo/bar ../
2891 # /foo /foo/bar/ ../
2892 # /foo/ /foo/bar/ ../
2893 # /foo /foo/bar/ugg ../../
2896 gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
2897 changequote([, ])dnl
2899 AC_SUBST(gcc_tooldir)
2902 # Find a directory in which to install a shared libgcc.
2904 AC_ARG_ENABLE(version-specific-runtime-libs,
2905 [ --enable-version-specific-runtime-libs
2906 specify that runtime libraries should be
2907 installed in a compiler-specific directory])
2909 AC_ARG_WITH(slibdir,
2910 [ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
2911 slibdir="$with_slibdir",
2912 if test "${enable_version_specific_runtime_libs+set}" = set; then
2913 slibdir='$(libsubdir)'
2914 elif test "$host" != "$target"; then
2915 slibdir='$(build_tooldir)/lib'
2921 objdir=`${PWDCMD-pwd}`
2924 # Process the language and host/target makefile fragments.
2925 ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
2927 # Substitute configuration variables
2930 AC_SUBST(all_boot_languages)
2931 AC_SUBST(all_compilers)
2932 AC_SUBST(all_gtfiles)
2933 AC_SUBST(all_gtfiles_files_langs)
2934 AC_SUBST(all_gtfiles_files_files)
2935 AC_SUBST(all_lang_makefiles)
2936 AC_SUBST(all_languages)
2937 AC_SUBST(all_stagestuff)
2938 AC_SUBST(build_exeext)
2939 AC_SUBST(build_install_headers_dir)
2940 AC_SUBST(build_xm_file_list)
2941 AC_SUBST(build_xm_file)
2942 AC_SUBST(build_xm_defines)
2943 AC_SUBST(check_languages)
2944 AC_SUBST(cc_set_by_configure)
2945 AC_SUBST(quoted_cc_set_by_configure)
2946 AC_SUBST(cpp_install_dir)
2947 AC_SUBST(dep_host_xmake_file)
2948 AC_SUBST(dep_tmake_file)
2949 AC_SUBST(extra_headers_list)
2950 AC_SUBST(extra_objs)
2951 AC_SUBST(extra_parts)
2952 AC_SUBST(extra_passes)
2953 AC_SUBST(extra_programs)
2954 AC_SUBST(float_h_file)
2955 AC_SUBST(gcc_config_arguments)
2956 AC_SUBST(gcc_gxx_include_dir)
2957 AC_SUBST(libstdcxx_incdir)
2958 AC_SUBST(gcc_version)
2959 AC_SUBST(gcc_version_full)
2960 AC_SUBST(gcc_version_trigger)
2961 AC_SUBST(host_exeext)
2962 AC_SUBST(host_extra_gcc_objs)
2963 AC_SUBST(host_xm_file_list)
2964 AC_SUBST(host_xm_file)
2965 AC_SUBST(host_xm_defines)
2966 AC_SUBST(out_host_hook_obj)
2968 AC_SUBST(lang_options_files)
2969 AC_SUBST(lang_specs_files)
2970 AC_SUBST(lang_tree_files)
2971 AC_SUBST(local_prefix)
2973 AC_SUBST(objc_boehm_gc)
2975 AC_SUBST(out_object_file)
2976 AC_SUBST(stage_prefix_set_by_configure)
2977 AC_SUBST(quoted_stage_prefix_set_by_configure)
2978 AC_SUBST(symbolic_link)
2979 AC_SUBST(thread_file)
2980 AC_SUBST(tm_file_list)
2982 AC_SUBST(tm_defines)
2983 AC_SUBST(tm_p_file_list)
2986 AC_SUBST(xm_defines)
2987 AC_SUBST(target_alias)
2988 AC_SUBST(c_target_objs)
2989 AC_SUBST(cxx_target_objs)
2990 AC_SUBST(target_cpu_default)
2992 AC_SUBST_FILE(target_overrides)
2993 AC_SUBST_FILE(host_overrides)
2994 AC_SUBST_FILE(language_fragments)
2995 AC_SUBST_FILE(language_hooks)
2997 # Echo that links are built
2998 if test x$host = x$target
3006 if test x$host != x$build
3008 str3=" on a $build system"
3011 if test "x$str2" != x || test "x$str3" != x
3016 echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
3018 if test "x$str2" != x || test "x$str3" != x
3020 echo " ${str2}${str3}." 1>&2
3023 # Truncate the target if necessary
3024 if test x$host_truncate_target != x; then
3025 target=`echo $target | sed -e 's/\(..............\).*/\1/'`
3028 # Configure the subdirectories
3029 # AC_CONFIG_SUBDIRS($subdirs)
3031 # Create the Makefile
3032 # and configure language subdirectories
3033 AC_OUTPUT($all_outputs,
3035 case x$CONFIG_HEADERS in
3036 xauto-host.h:config.in)
3039 # If the host supports symlinks, point stage[1234] at ../stage[1234] so
3040 # bootstrapping and the installation procedure can still use
3041 # CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks,
3042 # FLAGS_TO_PASS has been modified to solve the problem there.
3043 # This is virtually a duplicate of what happens in configure.lang; we do
3044 # an extra check to make sure this only happens if ln -s can be used.
3045 if test "$symbolic_link" = "ln -s"; then
3046 for d in .. ${subdirs} fixinc ; do
3047 if test $d != ..; then
3048 STARTDIR=`${PWDCMD-pwd}`
3050 for t in stage1 stage2 stage3 stage4 include
3053 $symbolic_link ../$t $t 2>/dev/null
3059 # Avoid having to add intl to our include paths.
3060 if test -f intl/libintl.h; then
3061 echo creating libintl.h
3062 echo '#include "intl/libintl.h"' >libintl.h
3066 symbolic_link='$symbolic_link'