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