diff options
Diffstat (limited to 'gcc_arm/configure.in')
-rwxr-xr-x | gcc_arm/configure.in | 1656 |
1 files changed, 1656 insertions, 0 deletions
diff --git a/gcc_arm/configure.in b/gcc_arm/configure.in new file mode 100755 index 0000000..5d801fa --- /dev/null +++ b/gcc_arm/configure.in @@ -0,0 +1,1656 @@ +# configure.in for GNU CC +# Process this file with autoconf to generate a configuration script. + +# Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + +#This file is part of GNU CC. + +#GNU CC is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 2, or (at your option) +#any later version. + +#GNU CC is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with GNU CC; see the file COPYING. If not, write to +#the Free Software Foundation, 59 Temple Place - Suite 330, +#Boston, MA 02111-1307, USA. + +# Initialization and defaults +AC_PREREQ(2.12.1) +AC_INIT(tree.c) +AC_CONFIG_HEADER(auto-host.h:config.in) + +remove=rm +hard_link=ln +symbolic_link='ln -s' +copy=cp + +# Check for bogus environment variables. +# Test if LIBRARY_PATH contains the notation for the current directory +# since this would lead to problems installing/building glibc. +# LIBRARY_PATH contains the current directory if one of the following +# is true: +# - one of the terminals (":" and ";") is the first or last sign +# - two terminals occur directly after each other +# - the path contains an element with a dot in it +AC_MSG_CHECKING(LIBRARY_PATH variable) +changequote(,)dnl +case ${LIBRARY_PATH} in + [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) + library_path_setting="contains current directory" + ;; + *) + library_path_setting="ok" + ;; +esac +changequote([,])dnl +AC_MSG_RESULT($library_path_setting) +if test "$library_path_setting" != "ok"; then +AC_MSG_ERROR([ +*** LIBRARY_PATH shouldn't contain the current directory when +*** building egcs. Please change the environment variable +*** and run configure again.]) +fi + +# Test if GCC_EXEC_PREFIX contains the notation for the current directory +# since this would lead to problems installing/building glibc. +# GCC_EXEC_PREFIX contains the current directory if one of the following +# is true: +# - one of the terminals (":" and ";") is the first or last sign +# - two terminals occur directly after each other +# - the path contains an element with a dot in it +AC_MSG_CHECKING(GCC_EXEC_PREFIX variable) +changequote(,)dnl +case ${GCC_EXEC_PREFIX} in + [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) + gcc_exec_prefix_setting="contains current directory" + ;; + *) + gcc_exec_prefix_setting="ok" + ;; +esac +changequote([,])dnl +AC_MSG_RESULT($gcc_exec_prefix_setting) +if test "$gcc_exec_prefix_setting" != "ok"; then +AC_MSG_ERROR([ +*** GCC_EXEC_PREFIX shouldn't contain the current directory when +*** building egcs. Please change the environment variable +*** and run configure again.]) +fi + +# Check for additional parameters + +# With GNU ld +AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld arrange to work with GNU ld.], +gnu_ld_flag="$with_gnu_ld", +gnu_ld_flag=no) + +# With pre-defined ld +AC_ARG_WITH(ld, +[ --with-ld arrange to use the specified ld (full pathname).], +DEFAULT_LINKER="$with_ld") +if test x"${DEFAULT_LINKER+set}" = x"set"; then + if test ! -x "$DEFAULT_LINKER"; then + AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER]) + elif test "GNU" = `$DEFAULT_LINKER -v </dev/null 2>&1 | sed '1s/^GNU.*/GNU/;q'`; then + gnu_ld_flag=yes + fi + AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER") +fi + +# With GNU as +AC_ARG_WITH(gnu-as, +[ --with-gnu-as arrange to work with GNU as.], +gas_flag="$with_gnu_as", +gas_flag=no) + +AC_ARG_WITH(as, +[ --with-as arrange to use the specified as (full pathname).], +DEFAULT_ASSEMBLER="$with_as") +if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then + if test ! -x "$DEFAULT_ASSEMBLER"; then + AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER]) + elif test "GNU" = `$DEFAULT_ASSEMBLER -v </dev/null 2>&1 | sed '1s/^GNU.*/GNU/;q'`; then + gas_flag=yes + fi + AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER") +fi + +# With stabs +AC_ARG_WITH(stabs, +[ --with-stabs arrange to use stabs instead of host debug format.], +stabs="$with_stabs", +stabs=no) + +# With ELF +AC_ARG_WITH(elf, +[ --with-elf arrange to use ELF instead of host debug format.], +elf="$with_elf", +elf=no) + +# CYGNUS LOCAL: local_prefix +#local_prefix= +#AC_ARG_WITH(local-prefix, +#[ --with-local-prefix=DIR specifies directory to put local include.], +#[case "${withval}" in +#yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;; +#no) ;; +#*) local_prefix=$with_local_prefix ;; +#esac]) +local_prefix='$(prefix)' +# END CYGNUS LOCAL + +# Default local prefix if it is empty +if test x$local_prefix = x; then + local_prefix=/usr/local +fi + +# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only +# passed in by the toplevel make and thus we'd get different behavior +# depending on where we built the sources. +gcc_gxx_include_dir= +# Specify the g++ header file directory +AC_ARG_WITH(gxx-include-dir, +[ --with-gxx-include-dir=DIR + specifies directory to put g++ header files.], +[case "${withval}" in +yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;; +no) ;; +*) gcc_gxx_include_dir=$with_gxx_include_dir ;; +esac]) + +if test x${gcc_gxx_include_dir} = x; then + if test x${enable_version_specific_runtime_libs} = xyes; then + gcc_gxx_include_dir='${libsubdir}/include/g++' + else + topsrcdir=${srcdir}/.. . ${srcdir}/../config.if +changequote(<<, >>)dnl + gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/g++"-${libstdcxx_interface} +changequote([, ])dnl + fi +fi + +# Enable expensive internal checks +AC_ARG_ENABLE(checking, +[ --enable-checking enable expensive run-time checks.], +[case "${enableval}" in +yes) AC_DEFINE(ENABLE_CHECKING) ;; +no) ;; +*) AC_MSG_ERROR(bad value ${enableval} given for checking option) ;; +esac]) + +# Use cpplib+cppmain for the preprocessor, but don't link it with the compiler. +cpp_main=cccp +AC_ARG_ENABLE(cpplib, +[ --enable-cpplib use cpplib for the C preprocessor.], +if test x$enable_cpplib != xno; then + cpp_main=cppmain +fi) + +# Link cpplib into the compiler proper, for C/C++/ObjC. +AC_ARG_ENABLE(c-cpplib, +[ --enable-c-cpplib link cpplib directly into C and C++ compilers + (implies --enable-cpplib).], +if test x$enable_c_cpplib != xno; then + extra_c_objs="${extra_c_objs} libcpp.a" + extra_cxx_objs="${extra_cxx_objs} ../libcpp.a" + extra_c_flags="${extra_c_flags} -DUSE_CPPLIB=1" + cpp_main=cppmain +fi) + +# CYGNUS LOCAL mbchar +# Enable Multibyte Characters for C/C++ +AC_ARG_ENABLE(c-mbchar, +[ --enable-c-mbchar enable multibyte characters for C and C++. + --disable-c-mbchar disable multibyte characters for C and C++. ], +if test x$enable_c_mbchar != xno; then + extra_c_flags="${extra_c_flags} -DMULTIBYTE_CHARS=1" +fi, +extra_c_flags="${extra_c_flags} -DMULTIBYTE_CHARS=1" +) +# END CYGNUS LOCAL + +# Enable Haifa scheduler. +AC_ARG_ENABLE(haifa, +[ --enable-haifa use the experimental scheduler. + --disable-haifa don't use the experimental scheduler for the + targets which normally enable it.]) +# Fast fixincludes +# +# This is a work in progress... +AC_ARG_WITH(fast-fixincludes, +[ --with-fast-fixincludes use a faster fixinclude program (experimental)], +fast_fixinc="$with_fast_fixincludes", +fast_fixinc=no) + +# Enable init_priority. +AC_ARG_ENABLE(init-priority, +[ --enable-init-priority use attributes to assign initialization order + for static objects. + --disable-init-priority conform to ISO C++ rules for ordering static objects + (i.e. initialized in order of declaration). ], +if test x$enable_init_priority != xno; then + extra_c_flags="${extra_c_flags} -DUSE_INIT_PRIORITY" +fi) + +# Enable threads +# Pass with no value to take the default +# Pass with a value to specify a thread package +AC_ARG_ENABLE(threads, +[ --enable-threads enable thread usage for target GCC. + --enable-threads=LIB use LIB thread package for target GCC.], +if test x$enable_threads = xno; then + enable_threads='' +fi, +enable_threads='') + +enable_threads_flag=$enable_threads +# Check if a valid thread package +case x${enable_threads_flag} in + x | xno) + # No threads + target_thread_file='single' + ;; + xyes) + # default + target_thread_file='' + ;; + # CYGNUS LOCAL java + xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \ + xsolaris | xwin32 | xdce | xvxworks | xqt) + target_thread_file=$enable_threads_flag + ;; + *) + echo "$enable_threads is an unknown thread package" 1>&2 + exit 1 + ;; +esac + +AC_ARG_ENABLE(objc-gc, +[ --enable-objc-gc enable the use of Boehm's garbage collector with + the GNU Objective-C runtime.], +if [[[ x$enable_objc_gc = xno ]]]; then + objc_boehm_gc='' +else + objc_boehm_gc=1 +fi, +objc_boehm_gc='') + +AC_ARG_ENABLE(java-gc, +changequote(<<,>>)dnl +<< --enable-java-gc=TYPE choose garbage collector [boehm]>>, +changequote([,]) + JAVAGC=$enableval, + JAVAGC=boehm) + +AC_ARG_WITH(dwarf2, +[ --enable-dwarf2 enable DWARF2 debugging as default.], +dwarf2="$with_dwarf2", +dwarf2=no) + +# Determine the host, build, and target systems +AC_CANONICAL_SYSTEM + +# Find the native compiler +AC_PROG_CC + +# If the native compiler is GCC, we can enable warnings even in stage1. +# That's useful for people building cross-compilers, or just running a +# quick `make'. +if test "x$GCC" = "xyes"; then + stage1_warn_cflags='$(WARN_CFLAGS)' +else + stage1_warn_cflags="" +fi +AC_SUBST(stage1_warn_cflags) + +AC_PROG_MAKE_SET + +AC_MSG_CHECKING([whether a default assembler was specified]) +if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then + if test x"$with_gas" = x"no"; then + AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)]) + else + AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)]) + fi +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([whether a default linker was specified]) +if test x"${DEFAULT_LINKER+set}" = x"set"; then + if test x"$with_gnu_ld" = x"no"; then + AC_MSG_RESULT([yes ($DEFAULT_LINKER)]) + else + AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)]) + fi +else + AC_MSG_RESULT(no) +fi + +# Find some useful tools +AC_PROG_AWK +AC_PROG_LEX +GCC_PROG_LN +GCC_PROG_LN_S +GCC_C_VOLATILE +AC_PROG_RANLIB +AC_PROG_YACC +EGCS_PROG_INSTALL + +AC_HEADER_STDC +AC_HEADER_TIME +GCC_HEADER_STRING +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h fcntl.h unistd.h stab.h sys/file.h sys/time.h sys/resource.h sys/param.h sys/times.h sys/stat.h) + +# Check for thread headers. +AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=]) +AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=]) + +# See if GNAT has been installed +AC_CHECK_PROG(gnat, gnatbind, yes, no) + +# See if the system preprocessor understands the ANSI C preprocessor +# stringification operator. +AC_MSG_CHECKING(whether cpp understands the stringify operator) +AC_CACHE_VAL(gcc_cv_c_have_stringify, +[AC_TRY_COMPILE(, +[#define S(x) #x +char *test = S(foo);], +gcc_cv_c_have_stringify=yes, gcc_cv_c_have_stringify=no)]) +AC_MSG_RESULT($gcc_cv_c_have_stringify) +if test $gcc_cv_c_have_stringify = yes; then + AC_DEFINE(HAVE_CPP_STRINGIFY) +fi + +# Use <inttypes.h> only if it exists, +# doesn't clash with <sys/types.h>, and declares intmax_t. +AC_MSG_CHECKING(for inttypes.h) +AC_CACHE_VAL(gcc_cv_header_inttypes_h, +[AC_TRY_COMPILE( + [#include <sys/types.h> +#include <inttypes.h>], + [intmax_t i = -1;], + [gcc_cv_header_inttypes_h=yes], + gcc_cv_header_inttypes_h=no)]) +AC_MSG_RESULT($gcc_cv_header_inttypes_h) +if test $gcc_cv_header_inttypes_h = yes; then + AC_DEFINE(HAVE_INTTYPES_H) +fi + +AC_CHECK_FUNCS(strtoul bsearch strerror putenv popen bcopy bzero bcmp \ + index rindex strchr strrchr kill getrlimit setrlimit atoll atoq \ + sysconf isascii gettimeofday strsignal putc_unlocked fputc_unlocked \ + fputs_unlocked) + +# Make sure wchar_t is available +#AC_CHECK_TYPE(wchar_t, unsigned int) + +GCC_FUNC_VFPRINTF_DOPRNT +GCC_FUNC_PRINTF_PTR +AC_FUNC_VFORK + +GCC_NEED_DECLARATIONS(malloc realloc calloc free bcopy bzero bcmp \ + index rindex getenv atol sbrk abort atof strerror getcwd getwd \ + strsignal) + +GCC_NEED_DECLARATIONS(getrlimit setrlimit, [ +#include <sys/types.h> +#ifdef HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif +]) + +AC_DECL_SYS_SIGLIST + +# File extensions +manext='.1' +objext='.o' +AC_SUBST(manext) +AC_SUBST(objext) + +build_xm_file= +build_xm_defines= +build_install_headers_dir=install-headers-tar +build_exeext= +host_xm_file= +host_xm_defines= +host_xmake_file= +host_truncate_target= +host_exeext= + +# Decode the host machine, then the target machine. +# For the host machine, we save the xm_file variable as host_xm_file; +# then we decode the target machine and forget everything else +# that came from the host machine. +for machine in $build $host $target; do + + out_file= + xmake_file= + tmake_file= + extra_headers= + extra_passes= + extra_parts= + extra_programs= + extra_objs= + extra_host_objs= + extra_gcc_objs= + xm_defines= + float_format= + # Set this to override the default target model. + target_cpu_default= + # Set this to control which fixincludes program to use. + if test x$fast_fixinc != xyes; then + fixincludes=fixincludes + else fixincludes=fixinc.sh ; fi + # Set this to control how the header file directory is installed. + install_headers_dir=install-headers-tar + # Set this to a non-empty list of args to pass to cpp if the target + # wants its .md file passed through cpp. + md_cppflags= + # Set this if directory names should be truncated to 14 characters. + truncate_target= + # Set this if gdb needs a dir command with `dirname $out_file` + gdb_needs_out_file_path= + # Set this if the build machine requires executables to have a + # file name suffix. + exeext= + # Set this to control which thread package will be used. + thread_file= + # Reinitialize these from the flag values every loop pass, since some + # configure entries modify them. + gas="$gas_flag" + gnu_ld="$gnu_ld_flag" + enable_threads=$enable_threads_flag + + # Set default cpu_type, tm_file and xm_file so it can be updated in + # each machine entry. + cpu_type=`echo $machine | sed 's/-.*$//'` + case $machine in + alpha*-*-*) + cpu_type=alpha + ;; + arm*-*-*) + cpu_type=arm + ;; + c*-convex-*) + cpu_type=convex + ;; +changequote(,)dnl + i[34567]86-*-*) +changequote([,])dnl + cpu_type=i386 + ;; + hppa*-*-*) + cpu_type=pa + ;; + m68000-*-*) + cpu_type=m68k + ;; + mips*-*-*) + cpu_type=mips + ;; + powerpc*-*-*) + cpu_type=rs6000 + ;; + pyramid-*-*) + cpu_type=pyr + ;; + sparc*-*-*) + cpu_type=sparc + ;; + esac + + tm_file=${cpu_type}/${cpu_type}.h + xm_file=${cpu_type}/xm-${cpu_type}.h + + # Set the default macros to define for GNU/Linux systems. + case $machine in + *-*-linux-gnu*) + xm_defines="HAVE_ATEXIT POSIX BSTRING" + ;; + esac + + case $machine in + # Support site-specific machine types. + arm*-*-elf) + tm_file=arm/unknown-elf.h + tmake_file=arm/t-arm-elf + ;; + + thumb-*-elf) + tm_file=arm/telf.h + out_file=arm/thumb.c + xm_file=arm/xm-thumb.h + md_file=arm/thumb.md + tmake_file=arm/t-thumb-elf + fixincludes=Makefile.in # There is nothing to fix + ;; + + *) + echo "Configuration $machine not supported" 1>&2 + exit 1 + ;; + esac + + case $machine in + *-*-linux-gnu*) + ;; # Existing GNU/Linux systems do not use the GNU setup. + *-*-gnu*) + # On the GNU system, the setup is just about the same on + # each different CPU. The specific machines that GNU + # supports are matched above and just set $cpu_type. + xm_file="xm-gnu.h ${xm_file}" + tm_file=${cpu_type}/gnu.h + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + # GNU always uses ELF. + elf=yes + # GNU tools are the only tools. + gnu_ld=yes + gas=yes + # On GNU, the headers are already okay. + fixincludes=Makefile.in + xmake_file=x-linux # These details are the same as Linux. + tmake_file=t-gnu # These are not. + ;; + *-*-sysv4*) + fixincludes=fixinc.svr4 + xmake_try_sysv=x-sysv + install_headers_dir=install-headers-cpio + ;; + *-*-sysv*) + install_headers_dir=install-headers-cpio + ;; + esac + + # Distinguish i[34567]86 + # Also, do not run mips-tfile on MIPS if using gas. + # Process --with-cpu= for PowerPC/rs6000 + target_cpu_default2= + case $machine in + i486-*-*) + target_cpu_default2=1 + ;; + i586-*-*) + target_cpu_default2=2 + ;; + i686-*-* | i786-*-*) + target_cpu_default2=3 + ;; + alpha*-*-*) + case $machine in + alphaev6*) + target_cpu_default2="MASK_CPU_EV6|MASK_BWX|MASK_CIX|MASK_MAX" + ;; + alphapca56*) + target_cpu_default2="MASK_CPU_EV5|MASK_BWX|MASK_MAX" + ;; + alphaev56*) + target_cpu_default2="MASK_CPU_EV5|MASK_BWX" + ;; + alphaev5*) + target_cpu_default2="MASK_CPU_EV5" + ;; + esac + + if test x$gas = xyes + then + if test "$target_cpu_default2" = "" + then + target_cpu_default2="MASK_GAS" + else + target_cpu_default2="${target_cpu_default2}|MASK_GAS" + fi + fi + ;; + # CYGNUS LOCAL m68k embedded + m68*-*-*) + target_cpu_default2=M68K_CPU_"`echo $machine | sed 's/-.*$//'`" + ;; + # END CYGNUS LOCAL + arm*-*-*) + case "x$with_cpu" in + x) + # The most generic + target_cpu_default2="TARGET_CPU_generic" + ;; + + # Distinguish cores, and major variants + # arm7m doesn't exist, but D & I don't affect code + xarm[[23678]] | xarm250 | xarm[[67]][[01]]0 \ + | xarm7m | xarm7dm | xarm7dmi | xarm7tdmi \ + | xarm7100 | xarm7500 | xarm7500fe | xarm810 \ + | xstrongarm | xstrongarm110) + target_cpu_default2="TARGET_CPU_$with_cpu" + ;; + + xyes | xno) + echo "--with-cpu must be passed a value" 1>&2 + exit 1 + ;; + + *) + if test x$pass2done = xyes + then + echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2 + exit 1 + fi + ;; + esac + ;; + + mips*-*-ecoff* | mips*-*-elf*) + if test x$gas = xyes + then + if test x$gnu_ld = xyes + then + target_cpu_default2=20 + else + target_cpu_default2=16 + fi + fi + ;; + mips*-*-*) + if test x$gas = xyes + then + target_cpu_default2=16 + fi + ;; + powerpc*-*-* | rs6000-*-*) + case "x$with_cpu" in + x) + ;; + + xcommon | xpower | xpower2 | xpowerpc | xrios \ + | xrios1 | xrios2 | xrsc | xrsc1 \ + | x601 | x602 | x603 | x603e | x604 | x604e | x620 \ + | x403 | x505 | x801 | x821 | x823 | x860) + target_cpu_default2="\"$with_cpu\"" + ;; + + xyes | xno) + echo "--with-cpu must be passed a value" 1>&2 + exit 1 + ;; + + *) + if test x$pass2done = xyes + then + echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2 + exit 1 + fi + ;; + esac + ;; + sparc*-*-*) + case ".$with_cpu" in + .) + target_cpu_default2=TARGET_CPU_"`echo $machine | sed 's/-.*$//'`" + ;; + # CYGNUS LOCAL sp86 + .supersparc | .hypersparc | .ultrasparc \ + | .sparclite | .sparc86x | .v7 | .v8 | .v9) + target_cpu_default2="TARGET_CPU_$with_cpu" + ;; + *) + if test x$pass2done = xyes + then + echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2 + exit 1 + fi + ;; + esac + ;; + esac + + if test "$target_cpu_default2" != "" + then + if test "$target_cpu_default" != "" + then + target_cpu_default="(${target_cpu_default}|${target_cpu_default2})" + else + target_cpu_default=$target_cpu_default2 + fi + fi + +# Save data on machine being used to compile GCC in build_xm_file. +# Save data on host machine in vars host_xm_file and host_xmake_file. + if test x$pass1done = x + then + if test x"$xm_file" = x + then build_xm_file=$cpu_type/xm-$cpu_type.h + else build_xm_file=$xm_file + fi + build_xm_defines=$xm_defines + build_install_headers_dir=$install_headers_dir + build_exeext=$exeext + pass1done=yes + else + if test x$pass2done = x + then + if test x"$xm_file" = x + then host_xm_file=$cpu_type/xm-$cpu_type.h + else host_xm_file=$xm_file + fi + host_xm_defines=$xm_defines + if test x"$xmake_file" = x + then xmake_file=$cpu_type/x-$cpu_type + fi + host_xmake_file="$xmake_file" + host_truncate_target=$truncate_target + host_extra_gcc_objs=$extra_gcc_objs + host_extra_objs=$extra_host_objs + host_exeext=$exeext + pass2done=yes + fi + fi +done + +extra_objs="${host_extra_objs} ${extra_objs}" + +# Default the target-machine variables that were not explicitly set. +if test x"$tm_file" = x +then tm_file=$cpu_type/$cpu_type.h; fi + +if test x$extra_headers = x +then extra_headers=; fi + +if test x"$xm_file" = x +then xm_file=$cpu_type/xm-$cpu_type.h; fi + +if test x$md_file = x +then md_file=$cpu_type/$cpu_type.md; fi + +if test x$out_file = x +then out_file=$cpu_type/$cpu_type.c; fi + +if test x"$tmake_file" = x +then tmake_file=$cpu_type/t-$cpu_type +fi + +if test x"$dwarf2" = xyes +then tm_file="tm-dwarf2.h $tm_file" +fi + +if test x$float_format = x +then float_format=i64 +fi + +if test $float_format = none +then float_h_file=Makefile.in +else float_h_file=float-$float_format.h +fi + +if test x$enable_haifa = x +then + case $target in + alpha*-* | hppa*-* | powerpc*-* | rs6000-* | *sparc*-* | m32r*-*) + enable_haifa=yes;; + esac +fi + +# Say what files are being used for the output code and MD file. +echo "Using \`$srcdir/config/$out_file' to output insns." +echo "Using \`$srcdir/config/$md_file' as machine description file." + +count=a +for f in $tm_file; do + count=${count}x +done +if test $count = ax; then + echo "Using \`$srcdir/config/$tm_file' as target machine macro file." +else + echo "Using the following target machine macro files:" + for f in $tm_file; do + echo " $srcdir/config/$f" + done +fi + +count=a +for f in $host_xm_file; do + count=${count}x +done +if test $count = ax; then + echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file." +else + echo "Using the following host machine macro files:" + for f in $host_xm_file; do + echo " $srcdir/config/$f" + done +fi + +if test "$host_xm_file" != "$build_xm_file"; then + count=a + for f in $build_xm_file; do + count=${count}x + done + if test $count = ax; then + echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file." + else + echo "Using the following build machine macro files:" + for f in $build_xm_file; do + echo " $srcdir/config/$f" + done + fi +fi + +if test x$thread_file = x; then + if test x$target_thread_file != x; then + thread_file=$target_thread_file + else + thread_file='single' + fi +fi + +# Set up the header files. +# $links is the list of header files to create. +# $vars is the list of shell variables with file names to include. +# auto-host.h is the file containing items generated by autoconf and is +# the first file included by config.h. +null_defines= +host_xm_file="auto-host.h gansidecl.h ${host_xm_file}" + +# If host=build, it is correct to have hconfig include auto-host.h +# as well. If host!=build, we are in error and need to do more +# work to find out the build config parameters. +if test x$host = x$build +then + build_xm_file="auto-host.h gansidecl.h ${build_xm_file}" +else + # We create a subdir, then run autoconf in the subdir. + # To prevent recursion we set host and build for the new + # invocation of configure to the build for this invocation + # of configure. + tempdir=build.$$ + rm -rf $tempdir + mkdir $tempdir + cd $tempdir + case ${srcdir} in + /*) realsrcdir=${srcdir};; + *) realsrcdir=../${srcdir};; + esac + CC=${CC_FOR_BUILD} ${realsrcdir}/configure \ + --target=$target --host=$build --build=$build + + # We just finished tests for the build machine, so rename + # the file auto-build.h in the gcc directory. + mv auto-host.h ../auto-build.h + cd .. + rm -rf $tempdir + build_xm_file="auto-build.h gansidecl.h ${build_xm_file}" +fi + + +xm_file="gansidecl.h ${xm_file}" +tm_file="gansidecl.h ${tm_file}" + +vars="host_xm_file tm_file xm_file build_xm_file" +links="config.h tm.h tconfig.h hconfig.h" +defines="host_xm_defines null_defines xm_defines build_xm_defines" + +rm -f config.bak +if test -f config.status; then mv -f config.status config.bak; fi + +# Make the links. +while test -n "$vars" +do + set $vars; var=$1; shift; vars=$* + set $links; link=$1; shift; links=$* + set $defines; define=$1; shift; defines=$* + + rm -f $link + + # Define TARGET_CPU_DEFAULT if the system wants one. + # This substitutes for lots of *.h files. + if test "$target_cpu_default" != "" -a $link = tm.h + then + echo "#define TARGET_CPU_DEFAULT ($target_cpu_default)" >>$link + fi + + for file in `eval echo '$'$var`; do + echo "#include \"$file\"" >>$link + done + + for def in `eval echo '$'$define`; do + echo "#ifndef $def" >>$link + echo "#define $def" >>$link + echo "#endif" >>$link + done +done + +# Truncate the target if necessary +if test x$host_truncate_target != x; then + target=`echo $target | sed -e 's/\(..............\).*/\1/'` +fi + +# Get the version trigger filename from the toplevel +if test "${with_gcc_version_trigger+set}" = set; then + gcc_version_trigger=$with_gcc_version_trigger +else + gcc_version_trigger=${srcdir}/version.c +fi +changequote(,)dnl +gcc_version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < ${gcc_version_trigger}` +changequote([,])dnl + +# Get an absolute path to the GCC top-level source directory +holddir=`pwd` +cd $srcdir +topdir=`pwd` +cd $holddir + +# Conditionalize the makefile for this host machine. +# Make-host contains the concatenation of all host makefile fragments +# [there can be more than one]. This file is built by configure.frag. +host_overrides=Make-host +dep_host_xmake_file= +for f in .. ${host_xmake_file} +do + if test -f ${srcdir}/config/$f + then + dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f" + fi +done + +# Conditionalize the makefile for this target machine. +# Make-target contains the concatenation of all host makefile fragments +# [there can be more than one]. This file is built by configure.frag. +target_overrides=Make-target +dep_tmake_file= +for f in .. ${tmake_file} +do + if test -f ${srcdir}/config/$f + then + dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f" + fi +done + +# If the host doesn't support symlinks, modify CC in +# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works. +# Otherwise, we can use "CC=$(CC)". +rm -f symtest.tem +if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null +then + cc_set_by_configure="\$(CC)" + stage_prefix_set_by_configure="\$(STAGE_PREFIX)" +else + rm -f symtest.tem + if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null + then + symbolic_link="cp -p" + else + symbolic_link="cp" + fi + cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`" + stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`" +fi +rm -f symtest.tem + +out_object_file=`basename $out_file .c`.o + +tm_file_list= +for f in $tm_file; do + if test $f != "gansidecl.h" ; then + tm_file_list="${tm_file_list} \$(srcdir)/config/$f" + else + tm_file_list="${tm_file_list} $f" + fi +done + +host_xm_file_list= +for f in $host_xm_file; do + if test $f != "auto-host.h" -a $f != "gansidecl.h" ; then + host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" + else + host_xm_file_list="${host_xm_file_list} $f" + fi +done + +build_xm_file_list= +for f in $build_xm_file; do + if test $f != "auto-build.h" -a $f != "auto-host.h" -a $f != "gansidecl.h" ; then + build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" + else + build_xm_file_list="${build_xm_file_list} $f" + fi +done + +# Define macro CROSS_COMPILE in compilation +# if this is a cross-compiler. +# Also use all.cross instead of all.internal +# and add cross-make to Makefile. +cross_overrides="/dev/null" +if test x$host != x$target +then + cross_defines="CROSS=-DCROSS_COMPILE" + cross_overrides="${topdir}/cross-make" +fi + +# When building gcc with a cross-compiler, we need to fix a few things. +# This must come after cross-make as we want all.build to override +# all.cross. +build_overrides="/dev/null" +if test x$build != x$host +then + build_overrides="${topdir}/build-make" +fi + +# Expand extra_headers to include complete path. +# This substitutes for lots of t-* files. +extra_headers_list= +if test "x$extra_headers" = x +then true +else + # Prepend ${srcdir}/ginclude/ to every entry in extra_headers. + for file in $extra_headers; + do + extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/${file}" + done +fi + +# NEED TO CONVERT +# Set MD_DEPS if the real md file is in md.pre-cpp. +# Set MD_CPP to the cpp to pass the md file through. Md files use ';' +# for line oriented comments, so we must always use a GNU cpp. If +# building gcc with a cross compiler, use the cross compiler just +# built. Otherwise, we can use the cpp just built. +md_file_sub= +if test "x$md_cppflags" = x +then + md_file_sub=$srcdir/config/$md_file +else + md_file=md +fi + +# If we have gas in the build tree, make a link to it. +if test -f ../gas/Makefile; then + rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null +fi + +# If we have nm in the build tree, make a link to it. +if test -f ../binutils/Makefile; then + rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null +fi + +# If we have ld in the build tree, make a link to it. +if test -f ../ld/Makefile; then +# rm -f ld; $symbolic_link ../ld/ld-new$host_exeext ld$host_exeext 2>/dev/null +fi + +# Figure out what assembler alignment features are present. +AC_MSG_CHECKING(assembler alignment features) +gcc_cv_as= +gcc_cv_as_alignment_features= +gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas +if test -x "$DEFAULT_ASSEMBLER"; then + gcc_cv_as="$DEFAULT_ASSEMBLER" +elif test -x "$AS"; then + gcc_cv_as="$AS" +elif test -x as$host_exeext; then + # Build using assembler in the current directory. + gcc_cv_as=./as$host_exeext +elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then + # Single tree build which includes gas. + for f in $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in + do +changequote(,)dnl + gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f` +changequote([,])dnl + if test x$gcc_cv_gas_version != x; then + break + fi + done +changequote(,)dnl + gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"` + gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"` +changequote([,])dnl + if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then + # Gas version 2.6 and later support for .balign and .p2align. + # bytes to skip when using .p2align. + 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 + gcc_cv_as_alignment_features=".balign and .p2align" + AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN) + fi + # Gas version 2.8 and later support specifying the maximum + # bytes to skip when using .p2align. + 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 + gcc_cv_as_alignment_features=".p2align including maximum skip" + AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN) + fi + fi +elif test x$host = x$target; then + # Native build. + gcc_cv_as=as$host_exeext +fi +if test x$gcc_cv_as != x; then + # Check if we have .balign and .p2align + echo ".balign 4" > conftest.s + echo ".p2align 2" >> conftest.s + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then + gcc_cv_as_alignment_features=".balign and .p2align" + AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN) + fi + rm -f conftest.s conftest.o + # Check if specifying the maximum bytes to skip when + # using .p2align is supported. + echo ".p2align 4,,7" > conftest.s + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then + gcc_cv_as_alignment_features=".p2align including maximum skip" + AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN) + fi + rm -f conftest.s conftest.o +fi +AC_MSG_RESULT($gcc_cv_as_alignment_features) + +AC_MSG_CHECKING(assembler subsection support) +gcc_cv_as_subsections= +if test x$gcc_cv_as != x; then + # Check if we have .subsection + echo ".subsection 1" > conftest.s + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then + gcc_cv_as_subsections=".subsection" + if test -x nm$host_exeext; then + gcc_cv_nm=./nm$host_exeext + elif test x$host = x$target; then + # Native build. + gcc_cv_nm=nm$host_exeext + fi + if test x$gcc_cv_nm != x; then + cat > conftest.s <<EOF +conftest_label1: .word 0 +.subsection -1 +conftest_label2: .word 0 +.previous +EOF + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then + $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 + $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 + if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then + : + else + gcc_cv_as_subsections="working .subsection -1" + AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING) + fi + fi + fi + fi + rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 +fi +AC_MSG_RESULT($gcc_cv_as_subsections) + +# Figure out what language subdirectories are present. +# Look if the user specified --enable-languages="..."; if not, use +# the environment variable $LANGUAGES if defined. $LANGUAGES might +# go away some day. +if test x"${enable_languages+set}" != xset; then + if test x"${LANGUAGES+set}" = xset; then + enable_languages="`echo ${LANGUAGES} | tr ' ' ','`" + else + enable_languages=all + fi +fi +subdirs= +for lang in ${srcdir}/*/config-lang.in .. +do + case $lang in + ..) ;; + # The odd quoting in the next line works around + # an apparent bug in bash 1.12 on linux. + ${srcdir}/[[*]]/config-lang.in) ;; + # CYGNUS LOCAL nofortran/law + ${srcdir}/f/config-lang.in) + if [[ x$enable_fortran = xyes ]]; then + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([[^/]]*\)/config-lang.in$,\1,'`" + fi + ;; + ${srcdir}/objc/config-lang.in) + if [[ x$enable_objc = xyes ]]; then + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([[^/]]*\)/config-lang.in$,\1,'`" + fi + ;; + ${srcdir}/ch/config-lang.in) + if [[ x$enable_chill = xyes ]]; then + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([[^/]]*\)/config-lang.in$,\1,'`" + fi + ;; + # END CYGNUS LOCAL +changequote(,)dnl + ${srcdir}/ada/config-lang.in) + if test x$gnat = xyes ; then + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" + fi + ;; +changequote(,)dnl + *) + lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang` + if test "x$lang_alias" = x + then + echo "$lang doesn't set \$language." 1>&2 + exit 1 + fi + if test x"${enable_languages}" = xall; then + add_this_lang=yes + else + case "${enable_languages}" in + ${lang_alias} | "${lang_alias},"* | *",${lang_alias},"* | *",${lang_alias}" ) + add_this_lang=yes + ;; + * ) + add_this_lang=no + ;; + esac + fi + if test x"${add_this_lang}" = xyes; then + case $lang in + ${srcdir}/ada/config-lang.in) + if test x$gnat = xyes ; then + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" + fi + ;; + *) + subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" + ;; + esac + fi + ;; +changequote([,])dnl + esac +done + +# Make gthr-default.h if we have a thread file. +gthread_flags= +if test $thread_file != single; then + rm -f gthr-default.h + echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h + gthread_flags=-DHAVE_GTHR_DEFAULT +fi +# CYGNUS LOCAL java quickthreads +# qt is a library we build. So if we're using for it, and it is in +# our source tree, then we must look there for includes. +if test $thread_file = qt && test -d $srcdir/../qthreads; then + gthread_flags="$gthread_flags -I\$(srcdir)/../qthreads" +fi +# END CYGNUS LOCAL +AC_SUBST(gthread_flags) + +# Make empty files to contain the specs and options for each language. +# Then add #include lines to for a compiler that has specs and/or options. + +lang_specs_files= +lang_options_files= +lang_tree_files= +rm -f specs.h options.h gencheck.h +touch specs.h options.h gencheck.h +for subdir in . $subdirs +do + if test -f $srcdir/$subdir/lang-specs.h; then + echo "#include \"$subdir/lang-specs.h\"" >>specs.h + lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h" + fi + if test -f $srcdir/$subdir/lang-options.h; then + echo "#include \"$subdir/lang-options.h\"" >>options.h + lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h" + fi + if test -f $srcdir/$subdir/$subdir-tree.def; then + echo "#include \"$subdir/$subdir-tree.def\"" >>gencheck.h + lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def" + fi +done + +# These (without "all_") are set in each config-lang.in. +# `language' must be a single word so is spelled singularly. +all_languages= +all_boot_languages= +all_compilers= +all_stagestuff= +all_diff_excludes= +all_outputs=Makefile +# List of language makefile fragments. +all_lang_makefiles= +all_headers= +all_lib2funcs= + +# Add the language fragments. +# Languages are added via two mechanisms. Some information must be +# recorded in makefile variables, these are defined in config-lang.in. +# We accumulate them and plug them into the main Makefile. +# The other mechanism is a set of hooks for each of the main targets +# like `clean', `install', etc. + +language_fragments="Make-lang" +language_hooks="Make-hooks" +oldstyle_subdirs= + +for s in .. $subdirs +do + if test $s != ".." + then + language= + boot_language= + compilers= + stagestuff= + diff_excludes= + headers= + outputs= + lib2funcs= + . ${srcdir}/$s/config-lang.in + if test "x$language" = x + then + echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2 + exit 1 + fi + all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in ${srcdir}/$s/Makefile.in" + all_languages="$all_languages $language" + if test "x$boot_language" = xyes + then + all_boot_languages="$all_boot_languages $language" + fi + all_compilers="$all_compilers $compilers" + all_stagestuff="$all_stagestuff $stagestuff" + all_diff_excludes="$all_diff_excludes $diff_excludes" + all_headers="$all_headers $headers" + all_outputs="$all_outputs $outputs" + if test x$outputs = x + then + oldstyle_subdirs="$oldstyle_subdirs $s" + fi + all_lib2funcs="$all_lib2funcs $lib2funcs" + fi +done + +# Since we can't use `::' targets, we link each language in +# with a set of hooks, reached indirectly via lang.${target}. + +rm -f Make-hooks +touch Make-hooks +target_list="all.build all.cross start.encap rest.encap \ + info dvi \ + install-normal install-common install-info install-man \ + uninstall distdir \ + mostlyclean clean distclean extraclean maintainer-clean \ + stage1 stage2 stage3 stage4" +for t in $target_list +do + x= + for l in .. $all_languages + do + if test $l != ".."; then + x="$x $l.$t" + fi + done + echo "lang.$t: $x" >> Make-hooks +done + +# If we're not building in srcdir, create .gdbinit. + +if test ! -f Makefile.in; then + echo "dir ." > .gdbinit + echo "dir ${srcdir}" >> .gdbinit + if test x$gdb_needs_out_file_path = xyes + then + echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit + fi + if test "x$subdirs" != x; then + for s in $subdirs + do + echo "dir ${srcdir}/$s" >> .gdbinit + done + fi + echo "source ${srcdir}/.gdbinit" >> .gdbinit +fi + +# Define variables host_canonical and build_canonical +# because some Cygnus local changes in the Makefile depend on them. +build_canonical=${build} +host_canonical=${host} +target_subdir= +if test "${host}" != "${target}" ; then + target_subdir=${target}/ +fi +AC_SUBST(build_canonical) +AC_SUBST(host_canonical) +AC_SUBST(target_subdir) + +# If this is using newlib, then define inhibit_libc in +# LIBGCC2_CFLAGS. This will cause __eprintf to be left out of +# libgcc.a, but that's OK because newib should have its own version of +# assert.h. +inhibit_libc= +if test x$with_newlib = xyes; then + inhibit_libc=-Dinhibit_libc +fi +AC_SUBST(inhibit_libc) + +# Override SCHED_OBJ and SCHED_CFLAGS to enable the Haifa scheduler. +sched_prefix= +sched_cflags= +if test x$enable_haifa = xyes; then + echo "Using the Haifa scheduler." + sched_prefix=haifa- + sched_cflags=-DHAIFA +fi +AC_SUBST(sched_prefix) +AC_SUBST(sched_cflags) +if test x$enable_haifa != x; then + # Explicitly remove files that need to be recompiled for the Haifa scheduler. + for x in genattrtab.o toplev.o loop.o unroll.o *sched.o; do + if test -f $x; then + echo "Removing $x" + rm -f $x + fi + done +fi + +# If $(exec_prefix) exists and is not the same as $(prefix), then compute an +# absolute path for gcc_tooldir based on inserting the number of up-directory +# movements required to get from $(exec_prefix) to $(prefix) into the basic +# $(libsubdir)/@(unlibsubdir) based path. +# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel +# make and thus we'd get different behavior depending on where we built the +# sources. +if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then + gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)' +else +changequote(<<, >>)dnl +# An explanation of the sed strings: +# -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix' +# -e 's|/$||' match a trailing forward slash and eliminates it +# -e 's|^[^/]|/|' forces the string to start with a forward slash (*) +# -e 's|/[^/]*|../|g' replaces each occurance of /<directory> with ../ +# +# (*) Note this pattern overwrites the first character of the string +# with a forward slash if one is not already present. This is not a +# problem because the exact names of the sub-directories concerned is +# unimportant, just the number of them matters. +# +# The practical upshot of these patterns is like this: +# +# prefix exec_prefix result +# ------ ----------- ------ +# /foo /foo/bar ../ +# /foo/ /foo/bar ../ +# /foo /foo/bar/ ../ +# /foo/ /foo/bar/ ../ +# /foo /foo/bar/ugg ../../ +# + dollar='$$' + gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)" +changequote([, ])dnl +fi +AC_SUBST(gcc_tooldir) +AC_SUBST(dollar) + +# Warn if using init_priority. +AC_MSG_CHECKING(whether to enable init_priority by default) +if test x$enable_init_priority != xyes; then + enable_init_priority=no +fi +AC_MSG_RESULT($enable_init_priority) + +# Nothing to do for FLOAT_H, float_format already handled. +objdir=`pwd` +AC_SUBST(objdir) + +# Process the language and host/target makefile fragments. +${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file" + +# Substitute configuration variables +AC_SUBST(subdirs) +AC_SUBST(all_languages) +AC_SUBST(all_boot_languages) +AC_SUBST(all_compilers) +AC_SUBST(all_lang_makefiles) +AC_SUBST(all_stagestuff) +AC_SUBST(all_diff_excludes) +AC_SUBST(all_lib2funcs) +AC_SUBST(all_headers) +AC_SUBST(cpp_main) +AC_SUBST(extra_passes) +AC_SUBST(extra_programs) +AC_SUBST(extra_parts) +AC_SUBST(extra_c_objs) +AC_SUBST(extra_cxx_objs) +AC_SUBST(extra_cpp_objs) +AC_SUBST(extra_c_flags) +AC_SUBST(extra_objs) +AC_SUBST(host_extra_gcc_objs) +AC_SUBST(extra_headers_list) +AC_SUBST(dep_host_xmake_file) +AC_SUBST(dep_tmake_file) +AC_SUBST(out_file) +AC_SUBST(out_object_file) +AC_SUBST(md_file) +AC_SUBST(tm_file_list) +AC_SUBST(build_xm_file_list) +AC_SUBST(host_xm_file_list) +AC_SUBST(lang_specs_files) +AC_SUBST(lang_options_files) +AC_SUBST(lang_tree_files) +AC_SUBST(thread_file) +AC_SUBST(objc_boehm_gc) +AC_SUBST(JAVAGC) +AC_SUBST(gcc_version) +AC_SUBST(gcc_version_trigger) +AC_SUBST(local_prefix) +AC_SUBST(gcc_gxx_include_dir) +AC_SUBST(fixincludes) +AC_SUBST(build_install_headers_dir) +AC_SUBST(build_exeext) +AC_SUBST(host_exeext) +AC_SUBST(float_h_file) +AC_SUBST(cc_set_by_configure) +AC_SUBST(stage_prefix_set_by_configure) +AC_SUBST(install) +AC_SUBST(symbolic_link) + +AC_SUBST_FILE(target_overrides) +AC_SUBST_FILE(host_overrides) +AC_SUBST(cross_defines) +AC_SUBST_FILE(cross_overrides) +AC_SUBST_FILE(build_overrides) +AC_SUBST_FILE(language_fragments) +AC_SUBST_FILE(language_hooks) + +# Echo that links are built +if test x$host = x$target +then + str1="native " +else + str1="cross-" + str2=" from $host" +fi + +if test x$host != x$build +then + str3=" on a $build system" +fi + +if test "x$str2" != x || test "x$str3" != x +then + str4= +fi + +echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2 + +if test "x$str2" != x || test "x$str3" != x +then + echo " ${str2}${str3}." 1>&2 +fi + +# Truncate the target if necessary +if test x$host_truncate_target != x; then + target=`echo $target | sed -e 's/\(..............\).*/\1/'` +fi + +# Configure the subdirectories +# AC_CONFIG_SUBDIRS($subdirs) + +# Create the Makefile +# and configure language subdirectories +AC_OUTPUT($all_outputs, +[ +. $srcdir/configure.lang +case x$CONFIG_HEADERS in +xauto-host.h:config.in) +echo > cstamp-h ;; +esac +# If the host supports symlinks, point stage[1234] at ../stage[1234] so +# bootstrapping and the installation procedure can still use +# CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks, +# FLAGS_TO_PASS has been modified to solve the problem there. +# This is virtually a duplicate of what happens in configure.lang; we do +# an extra check to make sure this only happens if ln -s can be used. +if test "$symbolic_link" = "ln -s"; then + for d in .. ${subdirs} ; do + if test $d != ..; then + STARTDIR=`pwd` + cd $d + for t in stage1 stage2 stage3 stage4 include + do + rm -f $t + $symbolic_link ../$t $t 2>/dev/null + done + cd $STARTDIR + fi + done +else true ; fi +], +[ +host='${host}' +build='${build}' +target='${target}' +target_alias='${target_alias}' +srcdir='${srcdir}' +subdirs='${subdirs}' +oldstyle_subdirs='${oldstyle_subdirs}' +symbolic_link='${symbolic_link}' +program_transform_set='${program_transform_set}' +program_transform_name='${program_transform_name}' +dep_host_xmake_file='${dep_host_xmake_file}' +host_xmake_file='${host_xmake_file}' +dep_tmake_file='${dep_tmake_file}' +tmake_file='${tmake_file}' +thread_file='${thread_file}' +gcc_version='${gcc_version}' +gcc_version_trigger='${gcc_version_trigger}' +local_prefix='${local_prefix}' +build_install_headers_dir='${build_install_headers_dir}' +build_exeext='${build_exeext}' +host_exeext='${host_exeext}' +out_file='${out_file}' +gdb_needs_out_file_path='${gdb_needs_out_file_path}' +SET_MAKE='${SET_MAKE}' +target_list='${target_list}' +target_overrides='${target_overrides}' +host_overrides='${host_overrides}' +cross_defines='${cross_defines}' +cross_overrides='${cross_overrides}' +build_overrides='${build_overrides}' +]) |