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