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