1132718Skan# configure.ac for GCC 2132718Skan# Process this file with autoconf to generate a configuration script. 3132718Skan 4169689Skan# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 5132718Skan# Free Software Foundation, Inc. 6132718Skan 7132718Skan#This file is part of GCC. 8132718Skan 9132718Skan#GCC is free software; you can redistribute it and/or modify it under 10132718Skan#the terms of the GNU General Public License as published by the Free 11132718Skan#Software Foundation; either version 2, or (at your option) any later 12132718Skan#version. 13132718Skan 14132718Skan#GCC is distributed in the hope that it will be useful, but WITHOUT 15132718Skan#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 16132718Skan#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17132718Skan#for more details. 18132718Skan 19132718Skan#You should have received a copy of the GNU General Public License 20132718Skan#along with GCC; see the file COPYING. If not, write to the Free 21169689Skan#Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 22169689Skan#02110-1301, USA. 23132718Skan 24132718Skan# -------------------------------- 25132718Skan# Initialization and sanity checks 26132718Skan# -------------------------------- 27132718Skan 28169689SkanAC_PREREQ(2.59) 29132718SkanAC_INIT 30132718SkanAC_CONFIG_SRCDIR(tree.c) 31132718SkanAC_CONFIG_HEADER(auto-host.h:config.in) 32132718Skan 33169689Skangcc_version=`cat $srcdir/BASE-VER` 34169689Skan 35132718Skan# Determine the host, build, and target systems 36132718SkanAC_CANONICAL_BUILD 37132718SkanAC_CANONICAL_HOST 38132718SkanAC_CANONICAL_TARGET 39132718Skan 40132718Skan# Determine the noncanonical target name, for directory use. 41169689SkanACX_NONCANONICAL_TARGET 42132718Skan 43132718Skan# Determine the target- and build-specific subdirectories 44132718SkanGCC_TOPLEV_SUBDIRS 45132718Skan 46132718Skan# Set program_transform_name 47132718SkanAC_ARG_PROGRAM 48132718Skan 49132718Skan# Check for bogus environment variables. 50132718Skan# Test if LIBRARY_PATH contains the notation for the current directory 51132718Skan# since this would lead to problems installing/building glibc. 52132718Skan# LIBRARY_PATH contains the current directory if one of the following 53132718Skan# is true: 54132718Skan# - one of the terminals (":" and ";") is the first or last sign 55132718Skan# - two terminals occur directly after each other 56132718Skan# - the path contains an element with a dot in it 57132718SkanAC_MSG_CHECKING(LIBRARY_PATH variable) 58132718Skanchangequote(,)dnl 59132718Skancase ${LIBRARY_PATH} in 60132718Skan [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) 61132718Skan library_path_setting="contains current directory" 62132718Skan ;; 63132718Skan *) 64132718Skan library_path_setting="ok" 65132718Skan ;; 66132718Skanesac 67132718Skanchangequote([,])dnl 68132718SkanAC_MSG_RESULT($library_path_setting) 69132718Skanif test "$library_path_setting" != "ok"; then 70132718SkanAC_MSG_ERROR([ 71132718Skan*** LIBRARY_PATH shouldn't contain the current directory when 72132718Skan*** building gcc. Please change the environment variable 73132718Skan*** and run configure again.]) 74132718Skanfi 75132718Skan 76132718Skan# Test if GCC_EXEC_PREFIX contains the notation for the current directory 77132718Skan# since this would lead to problems installing/building glibc. 78132718Skan# GCC_EXEC_PREFIX contains the current directory if one of the following 79132718Skan# is true: 80132718Skan# - one of the terminals (":" and ";") is the first or last sign 81132718Skan# - two terminals occur directly after each other 82132718Skan# - the path contains an element with a dot in it 83132718SkanAC_MSG_CHECKING(GCC_EXEC_PREFIX variable) 84132718Skanchangequote(,)dnl 85132718Skancase ${GCC_EXEC_PREFIX} in 86132718Skan [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) 87132718Skan gcc_exec_prefix_setting="contains current directory" 88132718Skan ;; 89132718Skan *) 90132718Skan gcc_exec_prefix_setting="ok" 91132718Skan ;; 92132718Skanesac 93132718Skanchangequote([,])dnl 94132718SkanAC_MSG_RESULT($gcc_exec_prefix_setting) 95132718Skanif test "$gcc_exec_prefix_setting" != "ok"; then 96132718SkanAC_MSG_ERROR([ 97132718Skan*** GCC_EXEC_PREFIX shouldn't contain the current directory when 98132718Skan*** building gcc. Please change the environment variable 99132718Skan*** and run configure again.]) 100132718Skanfi 101132718Skan 102132718Skan# ----------- 103132718Skan# Directories 104132718Skan# ----------- 105132718Skan 106132718Skan# Specify the local prefix 107132718Skanlocal_prefix= 108132718SkanAC_ARG_WITH(local-prefix, 109132718Skan[ --with-local-prefix=DIR specifies directory to put local include], 110132718Skan[case "${withval}" in 111132718Skanyes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;; 112132718Skanno) ;; 113132718Skan*) local_prefix=$with_local_prefix ;; 114132718Skanesac]) 115132718Skan 116132718Skan# Default local prefix if it is empty 117132718Skanif test x$local_prefix = x; then 118132718Skan local_prefix=/usr/local 119132718Skanfi 120132718Skan 121132718Skan# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only 122132718Skan# passed in by the toplevel make and thus we'd get different behavior 123132718Skan# depending on where we built the sources. 124132718Skangcc_gxx_include_dir= 125132718Skan# Specify the g++ header file directory 126132718SkanAC_ARG_WITH(gxx-include-dir, 127132718Skan[ --with-gxx-include-dir=DIR 128132718Skan specifies directory to put g++ header files], 129132718Skan[case "${withval}" in 130132718Skanyes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;; 131132718Skanno) ;; 132132718Skan*) gcc_gxx_include_dir=$with_gxx_include_dir ;; 133132718Skanesac]) 134132718Skan 135169689Skan# This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO. 136132718Skanif test x${gcc_gxx_include_dir} = x; then 137132718Skan if test x${enable_version_specific_runtime_libs} = xyes; then 138132718Skan gcc_gxx_include_dir='${libsubdir}/include/c++' 139132718Skan else 140169689Skan libstdcxx_incdir='include/c++/$(version)' 141169689Skan if test x$host != x$target; then 142169689Skan libstdcxx_incdir="$target_alias/$libstdcxx_incdir" 143169689Skan fi 144132718Skanchangequote(<<, >>)dnl 145169689Skan gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/$libstdcxx_incdir" 146132718Skanchangequote([, ])dnl 147132718Skan fi 148132718Skanfi 149132718Skan 150132718SkanAC_ARG_WITH(cpp_install_dir, 151132718Skan[ --with-cpp-install-dir=DIR 152132718Skan install the user visible C preprocessor in DIR 153132718Skan (relative to PREFIX) as well as PREFIX/bin], 154132718Skan[if test x$withval = xyes; then 155132718Skan AC_MSG_ERROR([option --with-cpp-install-dir requires an argument]) 156132718Skanelif test x$withval != xno; then 157132718Skan cpp_install_dir=$withval 158132718Skanfi]) 159132718Skan 160132718Skan# We would like to our source tree to be readonly. However when releases or 161132718Skan# pre-releases are generated, the flex/bison generated files as well as the 162132718Skan# various formats of manuals need to be included along with the rest of the 163132718Skan# sources. Therefore we have --enable-generated-files-in-srcdir to do 164132718Skan# just that. 165132718Skan 166132718SkanAC_MSG_CHECKING([whether to place generated files in the source directory]) 167132718Skan dnl generated-files-in-srcdir is disabled by default 168132718Skan AC_ARG_ENABLE(generated-files-in-srcdir, 169132718Skan[ --enable-generated-files-in-srcdir 170132718Skan put copies of generated files in source dir 171132718Skan intended for creating source tarballs for users 172132718Skan without texinfo bison or flex.], 173132718Skan generated_files_in_srcdir=$enableval, 174132718Skan generated_files_in_srcdir=no) 175132718Skan 176132718SkanAC_MSG_RESULT($generated_files_in_srcdir) 177132718Skan 178132718Skanif test "$generated_files_in_srcdir" = "yes"; then 179132718Skan GENINSRC='' 180132718Skanelse 181132718Skan GENINSRC='#' 182132718Skanfi 183132718SkanAC_SUBST(GENINSRC) 184132718Skan 185132718Skan# ------------------- 186132718Skan# Find default linker 187132718Skan# ------------------- 188132718Skan 189132718Skan# With GNU ld 190132718SkanAC_ARG_WITH(gnu-ld, 191132718Skan[ --with-gnu-ld arrange to work with GNU ld.], 192132718Skangnu_ld_flag="$with_gnu_ld", 193132718Skangnu_ld_flag=no) 194132718Skan 195132718Skan# With pre-defined ld 196132718SkanAC_ARG_WITH(ld, 197132718Skan[ --with-ld arrange to use the specified ld (full pathname)], 198132718SkanDEFAULT_LINKER="$with_ld") 199132718Skanif test x"${DEFAULT_LINKER+set}" = x"set"; then 200132718Skan if test ! -x "$DEFAULT_LINKER"; then 201169689Skan AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER]) 202132718Skan elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then 203132718Skan gnu_ld_flag=yes 204132718Skan fi 205132718Skan AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER", 206132718Skan [Define to enable the use of a default linker.]) 207132718Skanfi 208132718Skan 209132718SkanAC_MSG_CHECKING([whether a default linker was specified]) 210132718Skanif test x"${DEFAULT_LINKER+set}" = x"set"; then 211132718Skan if test x"$gnu_ld_flag" = x"no"; then 212132718Skan AC_MSG_RESULT([yes ($DEFAULT_LINKER)]) 213132718Skan else 214132718Skan AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)]) 215132718Skan fi 216132718Skanelse 217132718Skan AC_MSG_RESULT(no) 218132718Skanfi 219132718Skan 220169689Skan# With demangler in GNU ld 221169689SkanAC_ARG_WITH(demangler-in-ld, 222169689Skan[ --with-demangler-in-ld try to use demangler in GNU ld.], 223169689Skandemangler_in_ld="$with_demangler_in_ld", 224169689Skandemangler_in_ld=no) 225169689Skan 226132718Skan# ---------------------- 227132718Skan# Find default assembler 228132718Skan# ---------------------- 229132718Skan 230132718Skan# With GNU as 231132718SkanAC_ARG_WITH(gnu-as, 232132718Skan[ --with-gnu-as arrange to work with GNU as], 233132718Skangas_flag="$with_gnu_as", 234132718Skangas_flag=no) 235132718Skan 236132718SkanAC_ARG_WITH(as, 237132718Skan[ --with-as arrange to use the specified as (full pathname)], 238132718SkanDEFAULT_ASSEMBLER="$with_as") 239132718Skanif test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then 240132718Skan if test ! -x "$DEFAULT_ASSEMBLER"; then 241169689Skan AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER]) 242132718Skan elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then 243132718Skan gas_flag=yes 244132718Skan fi 245132718Skan AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER", 246132718Skan [Define to enable the use of a default assembler.]) 247132718Skanfi 248132718Skan 249132718SkanAC_MSG_CHECKING([whether a default assembler was specified]) 250132718Skanif test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then 251132718Skan if test x"$gas_flag" = x"no"; then 252132718Skan AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)]) 253132718Skan else 254132718Skan AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)]) 255132718Skan fi 256132718Skanelse 257132718Skan AC_MSG_RESULT(no) 258132718Skanfi 259132718Skan 260132718Skan# --------------- 261132718Skan# Find C compiler 262132718Skan# --------------- 263132718Skan 264132718Skan# If a non-executable a.out is present (e.g. created by GNU as above even if 265132718Skan# invoked with -v only), the IRIX 6 native ld just overwrites the existing 266132718Skan# file, even when creating an executable, so an execution test fails. 267132718Skan# Remove possible default executable files to avoid this. 268132718Skan# 269132718Skan# FIXME: This really belongs into AC_PROG_CC and can be removed once 270132718Skan# Autoconf includes it. 271132718Skanrm -f a.out a.exe b.out 272132718Skan 273132718Skan# Find the native compiler 274132718SkanAC_PROG_CC 275169689SkanAM_PROG_CC_C_O 276132718Skan# autoconf is lame and doesn't give us any substitution variable for this. 277132718Skanif eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then 278132718Skan NO_MINUS_C_MINUS_O=yes 279132718Skanelse 280132718Skan OUTPUT_OPTION='-o $@' 281132718Skanfi 282132718SkanAC_SUBST(NO_MINUS_C_MINUS_O) 283132718SkanAC_SUBST(OUTPUT_OPTION) 284132718Skan 285169689Skan# Remove the -O2: for historical reasons, unless bootstrapping we prefer 286169689Skan# optimizations to be activated explicitly by the toplevel. 287169689Skancase "$CC" in 288169689Skan */prev-gcc/xgcc*) ;; 289169689Skan *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;; 290169689Skanesac 291169689SkanAC_SUBST(CFLAGS) 292169689Skan 293132718Skan# ------------------------- 294132718Skan# Check C compiler features 295132718Skan# ------------------------- 296132718Skan 297132718SkanAC_PROG_CPP 298132718SkanAC_C_INLINE 299132718Skan 300132718Skan# sizeof(char) is 1 by definition. 301169689SkanAC_CHECK_SIZEOF(void *) 302169689SkanAC_CHECK_SIZEOF(short) 303169689SkanAC_CHECK_SIZEOF(int) 304169689SkanAC_CHECK_SIZEOF(long) 305169689SkanAC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)]) 306169689SkanAC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)]) 307132718Skan 308132718Skan# --------------------- 309132718Skan# Warnings and checking 310132718Skan# --------------------- 311132718Skan 312169689Skan# Check $CC warning features (if it's GCC). 313169689Skan# We want to use -pedantic, but we don't want warnings about 314169689Skan# * 'long long' 315169689Skan# * variadic macros 316169689Skan# * overlong strings 317169689Skan# So, we only use -pedantic if we can disable those warnings. 318169689Skan 319169689SkanAC_CACHE_CHECK( 320169689Skan [whether ${CC} accepts -Wno-long-long], 321169689Skan [ac_cv_prog_cc_w_no_long_long], 322169689Skan [save_CFLAGS="$CFLAGS" 323169689Skan CFLAGS="-Wno-long-long" 324169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 325169689Skan [ac_cv_prog_cc_w_no_long_long=yes], 326169689Skan [ac_cv_prog_cc_w_no_long_long=no]) 327169689Skan CFLAGS="$save_CFLAGS" 328169689Skan ]) 329169689Skan 330169689SkanAC_CACHE_CHECK( 331169689Skan [whether ${CC} accepts -Wno-variadic-macros], 332169689Skan [ac_cv_prog_cc_w_no_variadic_macros], 333169689Skan [save_CFLAGS="$CFLAGS" 334169689Skan CFLAGS="-Wno-variadic-macros" 335169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 336169689Skan [ac_cv_prog_cc_w_no_variadic_macros=yes], 337169689Skan [ac_cv_prog_cc_w_no_variadic_macros=no]) 338169689Skan CFLAGS="$save_CFLAGS" 339169689Skan ]) 340169689Skan 341169689SkanAC_CACHE_CHECK( 342169689Skan [whether ${CC} accepts -Wno-overlength-strings], 343169689Skan [ac_cv_prog_cc_w_no_overlength_strings], 344169689Skan [save_CFLAGS="$CFLAGS" 345169689Skan CFLAGS="-Wno-overlength-strings" 346169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 347169689Skan [ac_cv_prog_cc_w_no_overlength_strings=yes], 348169689Skan [ac_cv_prog_cc_w_no_overlength_strings=no]) 349169689Skan CFLAGS="$save_CFLAGS" 350169689Skan ]) 351169689Skan 352132718Skanstrict1_warn= 353169689Skanif test $ac_cv_prog_cc_w_no_long_long = yes \ 354169689Skan && test $ac_cv_prog_cc_w_no_variadic_macros = yes \ 355169689Skan && test $ac_cv_prog_cc_w_no_overlength_strings = yes ; then 356169689Skan strict1_warn="-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings" 357132718Skanfi 358169689Skan 359169689Skan# Add -Wold-style-definition if it's accepted 360169689SkanAC_CACHE_CHECK( 361169689Skan [whether ${CC} accepts -Wold-style-definition], 362169689Skan [ac_cv_prog_cc_w_old_style_definition], 363169689Skan [save_CFLAGS="$CFLAGS" 364169689Skan CFLAGS="-Wold-style-definition" 365169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 366169689Skan [ac_cv_prog_cc_w_old_style_definition=yes], 367169689Skan [ac_cv_prog_cc_w_old_style_definition=no]) 368169689Skan CFLAGS="$save_CFLAGS" 369169689Skan ]) 370169689Skanif test $ac_cv_prog_cc_w_old_style_definition = yes ; then 371169689Skan strict1_warn="${strict1_warn} -Wold-style-definition" 372169689Skanfi 373169689Skan 374169689Skan# Add -Wmissing-format-attribute if it's accepted 375169689SkanAC_CACHE_CHECK( 376169689Skan [whether ${CC} accepts -Wmissing-format-attribute], 377169689Skan [ac_cv_prog_cc_w_missing_format_attribute], 378169689Skan [save_CFLAGS="$CFLAGS" 379169689Skan CFLAGS="-Wmissing-format-attribute" 380169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 381169689Skan [ac_cv_prog_cc_w_missing_format_attribute=yes], 382169689Skan [ac_cv_prog_cc_w_missing_format_attribute=no]) 383169689Skan CFLAGS="$save_CFLAGS" 384169689Skan ]) 385169689Skanif test $ac_cv_prog_cc_w_missing_format_attribute = yes ; then 386169689Skan strict1_warn="${strict1_warn} -Wmissing-format-attribute" 387169689Skanfi 388169689Skan 389169689Skan# Enable -Werror, period. 390169689SkanAC_ARG_ENABLE(werror_always, 391169689Skan[ --enable-werror-always enable -Werror always], [], 392169689Skan[enable_werror_always=no]) 393169689Skanif test x${enable_werror_always} = xyes ; then 394169689Skan strict1_warn="${strict1_warn} -Werror" 395169689Skan WERROR=-Werror 396169689Skanfi 397169689Skan 398132718SkanAC_SUBST(strict1_warn) 399132718Skan 400169689Skan# Get C++ compatibility warning flag, if supported. 401169689SkanAC_CACHE_CHECK( 402169689Skan [whether ${CC} accepts -Wc++-compat], 403169689Skan [ac_cv_prog_cc_w_cxx_compat], 404169689Skan [save_CFLAGS="$CFLAGS" 405169689Skan CFLAGS="-Wc++-compat" 406169689Skan AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], 407169689Skan [ac_cv_prog_cc_w_cxx_compat=yes], 408169689Skan [ac_cv_prog_cc_w_cxx_compat=no]) 409169689Skan CFLAGS="$save_CFLAGS" 410169689Skan ]) 411169689Skanif test x${ac_cv_prog_cc_w_cxx_compat} = xyes; then 412169689Skan cxx_compat_warn="-Wc++-compat" 413169689Skanfi 414169689SkanAC_SUBST(cxx_compat_warn) 415169689Skan 416169689Skan 417132718Skan# If the native compiler is GCC, we can enable warnings even in stage1. 418132718Skan# That's useful for people building cross-compilers, or just running a 419132718Skan# quick `make'. 420132718Skanwarn_cflags= 421132718Skanif test "x$GCC" = "xyes"; then 422132718Skan warn_cflags='$(GCC_WARN_CFLAGS)' 423132718Skanfi 424132718SkanAC_SUBST(warn_cflags) 425132718Skan 426132718Skan# Enable -Werror in bootstrap stage2 and later. 427169689Skanis_release= 428169689Skanif test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then 429169689Skan is_release=yes 430169689Skanfi 431132718SkanAC_ARG_ENABLE(werror, 432132718Skan[ --enable-werror enable -Werror in bootstrap stage2 and later], [], 433169689Skan[if test x$is_release = x ; then 434169689Skan # Default to "yes" on development branches. 435169689Skan enable_werror=yes 436169689Skanelse 437169689Skan # Default to "no" on release branches. 438169689Skan enable_werror=no 439169689Skanfi]) 440132718Skanif test x$enable_werror = xyes ; then 441132718Skan WERROR=-Werror 442132718Skanfi 443132718SkanAC_SUBST(WERROR) 444132718Skan 445132718Skan# Enable expensive internal checks 446132718SkanAC_ARG_ENABLE(checking, 447132718Skan[ --enable-checking[=LIST] 448132718Skan enable expensive run-time checks. With LIST, 449132718Skan enable only specific categories of checks. 450169689Skan Categories are: yes,no,all,none,release. 451169689Skan Flags are: assert,fold,gc,gcac,misc, 452169689Skan rtlflag,rtl,runtime,tree,valgrind.], 453169689Skan[ac_checking_flags="${enableval}"],[ 454169689Skan# Determine the default checks. 455169689Skanif test x$is_release = x ; then 456169689Skan ac_checking_flags=yes 457169689Skanelse 458169689Skan ac_checking_flags=release 459169689Skanfi]) 460169689Skanac_assert_checking=1 461169689Skanac_checking= 462169689Skanac_fold_checking= 463169689Skanac_gc_checking= 464169689Skanac_gc_always_collect= 465132718Skanac_rtl_checking= 466132718Skanac_rtlflag_checking= 467169689Skanac_runtime_checking=1 468169689Skanac_tree_checking= 469169689Skanac_valgrind_checking= 470169689SkanIFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," 471169689Skanfor check in $ac_checking_flags 472169689Skando 473169689Skan case $check in 474169689Skan # these set all the flags to specific states 475169689Skan yes) ac_assert_checking=1 ; ac_checking=1 ; 476169689Skan ac_fold_checking= ; ac_gc_checking=1 ; 477169689Skan ac_gc_always_collect= ; ac_rtl_checking= ; 478169689Skan ac_rtlflag_checking=1 ; ac_runtime_checking=1 ; 479169689Skan ac_tree_checking=1 ; ac_valgrind_checking= ;; 480169689Skan no|none) ac_assert_checking= ; ac_checking= ; 481169689Skan ac_fold_checking= ; ac_gc_checking= ; 482169689Skan ac_gc_always_collect= ; ac_rtl_checking= ; 483169689Skan ac_rtlflag_checking= ; ac_runtime_checking= ; 484169689Skan ac_tree_checking= ; ac_valgrind_checking= ;; 485169689Skan all) ac_assert_checking=1 ; ac_checking=1 ; 486169689Skan ac_fold_checking=1 ; ac_gc_checking=1 ; 487169689Skan ac_gc_always_collect=1 ; ac_rtl_checking=1 ; 488169689Skan ac_rtlflag_checking=1 ; ac_runtime_checking=1 ; 489169689Skan ac_tree_checking=1 ; ac_valgrind_checking= ;; 490169689Skan release) ac_assert_checking=1 ; ac_checking= ; 491169689Skan ac_fold_checking= ; ac_gc_checking= ; 492169689Skan ac_gc_always_collect= ; ac_rtl_checking= ; 493169689Skan ac_rtlflag_checking= ; ac_runtime_checking=1 ; 494169689Skan ac_tree_checking= ; ac_valgrind_checking= ;; 495169689Skan # these enable particular checks 496169689Skan assert) ac_assert_checking=1 ;; 497169689Skan fold) ac_fold_checking=1 ;; 498169689Skan gc) ac_gc_checking=1 ;; 499169689Skan gcac) ac_gc_always_collect=1 ;; 500169689Skan misc) ac_checking=1 ;; 501169689Skan rtl) ac_rtl_checking=1 ;; 502169689Skan rtlflag) ac_rtlflag_checking=1 ;; 503169689Skan runtime) ac_runtime_checking=1 ;; 504169689Skan tree) ac_tree_checking=1 ;; 505169689Skan valgrind) ac_valgrind_checking=1 ;; 506169689Skan *) AC_MSG_ERROR(unknown check category $check) ;; 507169689Skan esac 508169689Skandone 509169689SkanIFS="$ac_save_IFS" 510169689Skan 511132718Skannocommon_flag="" 512132718Skanif test x$ac_checking != x ; then 513132718Skan AC_DEFINE(ENABLE_CHECKING, 1, 514132718Skan[Define if you want more run-time sanity checks. This one gets a grab 515132718Skan bag of miscellaneous but relatively cheap checks.]) 516132718Skan nocommon_flag=-fno-common 517132718Skanfi 518132718SkanAC_SUBST(nocommon_flag) 519169689Skanif test x$ac_assert_checking != x ; then 520169689Skan AC_DEFINE(ENABLE_ASSERT_CHECKING, 1, 521169689Skan[Define if you want assertions enabled. This is a cheap check.]) 522169689Skanfi 523169689SkanGCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING) 524169689Skanif test x$ac_runtime_checking != x ; then 525169689Skan AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1, 526169689Skan[Define if you want runtime assertions enabled. This is a cheap check.]) 527169689Skanfi 528132718Skanif test x$ac_tree_checking != x ; then 529132718Skan AC_DEFINE(ENABLE_TREE_CHECKING, 1, 530132718Skan[Define if you want all operations on trees (the basic data 531132718Skan structure of the front ends) to be checked for dynamic type safety 532169689Skan at runtime. This is moderately expensive. The tree browser debugging 533169689Skan routines will also be enabled by this option. 534169689Skan ]) 535169689Skan TREEBROWSER=tree-browser.o 536132718Skanfi 537169689SkanAC_SUBST(TREEBROWSER) 538132718Skanif test x$ac_rtl_checking != x ; then 539132718Skan AC_DEFINE(ENABLE_RTL_CHECKING, 1, 540132718Skan[Define if you want all operations on RTL (the basic data structure 541132718Skan of the optimizer and back end) to be checked for dynamic type safety 542132718Skan at runtime. This is quite expensive.]) 543132718Skanfi 544132718Skanif test x$ac_rtlflag_checking != x ; then 545132718Skan AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1, 546132718Skan[Define if you want RTL flag accesses to be checked against the RTL 547132718Skan codes that are supported for each access macro. This is relatively 548132718Skan cheap.]) 549132718Skanfi 550132718Skanif test x$ac_gc_checking != x ; then 551132718Skan AC_DEFINE(ENABLE_GC_CHECKING, 1, 552132718Skan[Define if you want the garbage collector to do object poisoning and 553132718Skan other memory allocation checks. This is quite expensive.]) 554132718Skanfi 555132718Skanif test x$ac_gc_always_collect != x ; then 556132718Skan AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1, 557132718Skan[Define if you want the garbage collector to operate in maximally 558132718Skan paranoid mode, validating the entire heap and collecting garbage at 559132718Skan every opportunity. This is extremely expensive.]) 560132718Skanfi 561132718Skanif test x$ac_fold_checking != x ; then 562132718Skan AC_DEFINE(ENABLE_FOLD_CHECKING, 1, 563132718Skan[Define if you want fold checked that it never destructs its argument. 564132718Skan This is quite expensive.]) 565132718Skanfi 566132718Skanvalgrind_path_defines= 567132718Skanvalgrind_command= 568132718Skan 569132718Skandnl # This check AC_REQUIREs various stuff, so it *must not* be inside 570132718Skandnl # an if statement. This was the source of very frustrating bugs 571132718Skandnl # in converting to autoconf 2.5x! 572132718SkanAC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no) 573132718Skan 574169689Skanif test x$ac_valgrind_checking != x ; then 575132718Skan # It is certainly possible that there's valgrind but no valgrind.h. 576132718Skan # GCC relies on making annotations so we must have both. 577132718Skan AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>) 578169689Skan AC_PREPROC_IFELSE([AC_LANG_SOURCE( 579169689Skan [[#include <valgrind/memcheck.h> 580132718Skan#ifndef VALGRIND_DISCARD 581132718Skan#error VALGRIND_DISCARD not defined 582169689Skan#endif]])], 583132718Skan [gcc_cv_header_valgrind_memcheck_h=yes], 584132718Skan [gcc_cv_header_valgrind_memcheck_h=no]) 585132718Skan AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h) 586132718Skan AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>) 587169689Skan AC_PREPROC_IFELSE([AC_LANG_SOURCE( 588169689Skan [[#include <memcheck.h> 589132718Skan#ifndef VALGRIND_DISCARD 590132718Skan#error VALGRIND_DISCARD not defined 591169689Skan#endif]])], 592169689Skan [gcc_cv_header_memcheck_h=yes], 593169689Skan [gcc_cv_header_memcheck_h=no]) 594132718Skan AC_MSG_RESULT($gcc_cv_header_memcheck_h) 595132718Skan AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind, 596132718Skan [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1]) 597132718Skan if test "x$valgrind_path" = "x" \ 598132718Skan || (test $have_valgrind_h = no \ 599132718Skan && test $gcc_cv_header_memcheck_h = no \ 600132718Skan && test $gcc_cv_header_valgrind_memcheck_h = no); then 601132718Skan AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h]) 602132718Skan fi 603132718Skan valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"' 604132718Skan valgrind_command="$valgrind_path -q" 605132718Skan AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1, 606132718Skan[Define if you want to run subprograms and generated programs 607132718Skan through valgrind (a memory checker). This is extremely expensive.]) 608132718Skan if test $gcc_cv_header_valgrind_memcheck_h = yes; then 609132718Skan AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1, 610132718Skan [Define if valgrind's valgrind/memcheck.h header is installed.]) 611132718Skan fi 612132718Skan if test $gcc_cv_header_memcheck_h = yes; then 613132718Skan AC_DEFINE(HAVE_MEMCHECK_H, 1, 614132718Skan [Define if valgrind's memcheck.h header is installed.]) 615132718Skan fi 616132718Skanfi 617132718SkanAC_SUBST(valgrind_path_defines) 618132718SkanAC_SUBST(valgrind_command) 619132718Skan 620169689SkanAC_ARG_ENABLE(mapped-location, 621169689Skan[ --enable-mapped-location location_t is fileline integer cookie],, 622169689Skanenable_mapped_location=no) 623169689Skan 624169689Skanif test "$enable_mapped_location" = yes ; then 625169689Skan AC_DEFINE(USE_MAPPED_LOCATION, 1, 626169689Skan[Define if location_t is fileline integer cookie.]) 627169689Skanfi 628169689Skan 629132718Skan# Enable code coverage collection 630132718SkanAC_ARG_ENABLE(coverage, 631132718Skan[ --enable-coverage[=LEVEL] 632169689Skan enable compiler's code coverage collection. 633132718Skan Use to measure compiler performance and locate 634132718Skan unused parts of the compiler. With LEVEL, specify 635132718Skan optimization. Values are opt, noopt, 636132718Skan default is noopt], 637132718Skan[case "${enableval}" in 638169689Skan yes|noopt) 639169689Skan coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0" 640169689Skan ;; 641169689Skan opt) 642169689Skan coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2" 643169689Skan ;; 644169689Skan no) 645169689Skan # a.k.a. --disable-coverage 646169689Skan coverage_flags="" 647169689Skan ;; 648169689Skan *) 649169689Skan AC_MSG_ERROR(unknown coverage setting $enableval) 650169689Skan ;; 651132718Skanesac], 652132718Skan[coverage_flags=""]) 653132718SkanAC_SUBST(coverage_flags) 654132718Skan 655132718SkanAC_ARG_ENABLE(gather-detailed-mem-stats, 656132718Skan[ --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering], [], 657132718Skan[enable_gather_detailed_mem_stats=no]) 658132718Skanif test x$enable_gather_detailed_mem_stats = xyes ; then 659132718Skan AC_DEFINE(GATHER_STATISTICS, 1, 660132718Skan [Define to enable detailed memory allocation stats gathering.]) 661132718Skanfi 662132718Skan 663132718Skan# ------------------------------- 664132718Skan# Miscenalleous configure options 665132718Skan# ------------------------------- 666132718Skan 667132718Skan# With stabs 668132718SkanAC_ARG_WITH(stabs, 669132718Skan[ --with-stabs arrange to use stabs instead of host debug format], 670132718Skanstabs="$with_stabs", 671132718Skanstabs=no) 672132718Skan 673132718Skan# Determine whether or not multilibs are enabled. 674132718SkanAC_ARG_ENABLE(multilib, 675132718Skan[ --enable-multilib enable library support for multiple ABIs], 676132718Skan[], [enable_multilib=yes]) 677132718SkanAC_SUBST(enable_multilib) 678132718Skan 679132718Skan# Enable __cxa_atexit for C++. 680132718SkanAC_ARG_ENABLE(__cxa_atexit, 681132718Skan[ --enable-__cxa_atexit enable __cxa_atexit for C++], 682132718Skan[], []) 683132718Skan 684169689Skan# Enable C extension for decimal float if target supports it. 685169689SkanAC_ARG_ENABLE(decimal-float, 686169689Skan[ --enable-decimal-float enable decimal float extension to C], 687169689Skan[ 688169689Skan if test x$enablevar = xyes ; then 689169689Skan case $target in 690169689Skan powerpc*-*-linux* | i?86*-*-linux*) 691169689Skan enable_decimal_float=yes 692169689Skan ;; 693169689Skan *) 694169689Skan AC_MSG_WARN(decimal float is not supported for this target, ignored) 695169689Skan enable_decimal_float=no 696169689Skan ;; 697169689Skan esac 698169689Skan fi 699169689Skan], [enable_decimal_float=no]) 700169689Skan 701169689SkanAC_SUBST(enable_decimal_float) 702169689Skan 703169689Skandfp=`if test $enable_decimal_float = yes; then echo 1; else echo 0; fi` 704169689SkanAC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp, 705169689Skan[Define to 1 to enable decimal float extension to C.]) 706169689Skan 707132718Skan# Enable threads 708132718Skan# Pass with no value to take the default 709132718Skan# Pass with a value to specify a thread package 710132718SkanAC_ARG_ENABLE(threads, 711132718Skan[ --enable-threads enable thread usage for target GCC 712132718Skan --enable-threads=LIB use LIB thread package for target GCC],, 713169689Skan[enable_threads='']) 714132718Skan 715169689SkanAC_ARG_ENABLE(tls, 716169689Skan[ --enable-tls enable or disable generation of tls code 717169689Skan overriding the assembler check for tls support], 718169689Skan[ 719169689Skan case $enable_tls in 720169689Skan yes | no) ;; 721169689Skan *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls. 722169689SkanValid choices are 'yes' and 'no'.]) ;; 723169689Skan esac 724169689Skan], [enable_tls='']) 725169689Skan 726132718SkanAC_ARG_ENABLE(objc-gc, 727132718Skan[ --enable-objc-gc enable the use of Boehm's garbage collector with 728132718Skan the GNU Objective-C runtime], 729132718Skanif test x$enable_objc_gc = xno; then 730132718Skan objc_boehm_gc='' 731132718Skanelse 732132718Skan objc_boehm_gc=1 733132718Skanfi, 734132718Skanobjc_boehm_gc='') 735132718Skan 736132718SkanAC_ARG_WITH(dwarf2, 737132718Skan[ --with-dwarf2 force the default debug format to be DWARF 2], 738132718Skandwarf2="$with_dwarf2", 739132718Skandwarf2=no) 740132718Skan 741132718SkanAC_ARG_ENABLE(shared, 742132718Skan[ --disable-shared don't provide a shared libgcc], 743132718Skan[ 744132718Skan case $enable_shared in 745132718Skan yes | no) ;; 746132718Skan *) 747132718Skan enable_shared=no 748132718Skan IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," 749132718Skan for pkg in $enableval; do 750132718Skan if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then 751132718Skan enable_shared=yes 752132718Skan fi 753132718Skan done 754132718Skan IFS="$ac_save_ifs" 755132718Skan ;; 756132718Skan esac 757132718Skan], [enable_shared=yes]) 758132718SkanAC_SUBST(enable_shared) 759132718Skan 760169689SkanAC_ARG_WITH(build-sysroot, 761169689Skan [ --with-build-sysroot=sysroot 762169689Skan use sysroot as the system root during the build]) 763169689Skan 764132718SkanAC_ARG_WITH(sysroot, 765132718Skan[ --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.], 766132718Skan[ 767132718Skan case ${with_sysroot} in 768132718Skan yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;; 769132718Skan *) TARGET_SYSTEM_ROOT=$with_sysroot ;; 770132718Skan esac 771132718Skan 772132718Skan TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' 773132718Skan CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR)' 774169689Skan 775132718Skan if test "x$exec_prefix" = xNONE; then 776132718Skan if test "x$prefix" = xNONE; then 777132718Skan test_prefix=/usr/local 778132718Skan else 779132718Skan test_prefix=$prefix 780132718Skan fi 781132718Skan else 782132718Skan test_prefix=$exec_prefix 783132718Skan fi 784132718Skan case ${TARGET_SYSTEM_ROOT} in 785132718Skan "${test_prefix}"|"${test_prefix}/"*|\ 786132718Skan '${exec_prefix}'|'${exec_prefix}/'*) 787132718Skan t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE" 788132718Skan TARGET_SYSTEM_ROOT_DEFINE="$t" 789132718Skan ;; 790132718Skan esac 791132718Skan], [ 792132718Skan TARGET_SYSTEM_ROOT= 793132718Skan TARGET_SYSTEM_ROOT_DEFINE= 794132718Skan CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' 795132718Skan]) 796132718SkanAC_SUBST(TARGET_SYSTEM_ROOT) 797132718SkanAC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) 798132718SkanAC_SUBST(CROSS_SYSTEM_HEADER_DIR) 799132718Skan 800132718Skan# Build with intermodule optimisations 801132718SkanAC_ARG_ENABLE(intermodule, 802132718Skan[ --enable-intermodule build the compiler in one step], 803132718Skan[case ${enable_intermodule} in 804132718Skan yes) onestep="-onestep";; 805132718Skan *) onestep="";; 806132718Skanesac], 807132718Skan[onestep=""]) 808132718SkanAC_SUBST(onestep) 809132718Skan 810169689Skan# Sanity check enable_languages in case someone does not run the toplevel 811169689Skan# configure # script. 812169689SkanAC_ARG_ENABLE(languages, 813169689Skan[ --enable-languages=LIST specify which front-ends to build], 814169689Skan[case ,${enable_languages}, in 815169689Skan ,,|,yes,) 816169689Skan # go safe -- we cannot be much sure without the toplevel 817169689Skan # configure's 818169689Skan # analysis of which target libs are present and usable 819169689Skan enable_languages=c 820169689Skan ;; 821169689Skan *,all,*) 822169689Skan AC_MSG_ERROR([only the toplevel supports --enable-languages=all]) 823169689Skan ;; 824169689Skan *,c,*) 825169689Skan ;; 826169689Skan *) 827169689Skan enable_languages=c,${enable_languages} 828169689Skan ;; 829169689Skanesac], 830169689Skan[enable_languages=c]) 831169689Skan 832169689Skan# Used by documentation targets 833169689SkanAC_SUBST(datarootdir) 834169689SkanAC_SUBST(docdir) 835169689SkanAC_SUBST(htmldir) 836169689Skan 837132718Skan# ------------------------- 838132718Skan# Checks for other programs 839132718Skan# ------------------------- 840132718Skan 841132718SkanAC_PROG_MAKE_SET 842132718Skan 843132718Skan# Find some useful tools 844132718SkanAC_PROG_AWK 845169689Skan# We need awk to create options.c and options.h. 846132718Skan# Bail out if it's missing. 847132718Skancase ${AWK} in 848132718Skan "") AC_MSG_ERROR([can't build without awk, bailing out]) ;; 849132718Skanesac 850132718Skan 851132718Skangcc_AC_PROG_LN_S 852169689SkanACX_PROG_LN($LN_S) 853132718SkanAC_PROG_RANLIB 854169689Skancase "${host}" in 855169689Skan*-*-darwin*) 856169689Skan # By default, the Darwin ranlib will not treat common symbols as 857169689Skan # definitions when building the archive table of contents. Other 858169689Skan # ranlibs do that; pass an option to the Darwin ranlib that makes 859169689Skan # it behave similarly. 860169689Skan ranlib_flags="-c" 861169689Skan ;; 862169689Skan*) 863169689Skan ranlib_flags="" 864169689Skanesac 865169689SkanAC_SUBST(ranlib_flags) 866169689Skan 867132718Skangcc_AC_PROG_INSTALL 868132718Skan 869132718Skan# See if cmp has --ignore-initial. 870132718Skangcc_AC_PROG_CMP_IGNORE_INITIAL 871132718Skan 872132718Skan# See if we have the mktemp command. 873132718SkanAC_CHECK_PROG(have_mktemp_command, mktemp, yes, no) 874132718Skan 875169689SkanMISSING="${CONFIG_SHELL-/bin/sh} $srcdir/../missing" 876169689Skan 877169689Skan# See if makeinfo has been installed and is modern enough 878169689Skan# that we can use it. 879169689Skangcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version, 880132718Skan [GNU texinfo.* \([0-9][0-9.]*\)], 881169689Skan [4.[4-9]*]) 882132718Skanif test $gcc_cv_prog_makeinfo_modern = no; then 883169689Skan MAKEINFO="$MISSING makeinfo" 884132718Skan AC_MSG_WARN([ 885132718Skan*** Makeinfo is missing or too old. 886132718Skan*** Info documentation will not be built.]) 887132718Skan BUILD_INFO= 888132718Skanelse 889169689Skan BUILD_INFO=info 890132718Skanfi 891169689SkanAC_SUBST(BUILD_INFO) 892132718Skan 893132718Skan# Is pod2man recent enough to regenerate manpages? 894132718SkanAC_MSG_CHECKING([for recent Pod::Man]) 895132718Skanif (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then 896132718Skan AC_MSG_RESULT(yes) 897169689Skan GENERATED_MANPAGES=generated-manpages 898132718Skanelse 899132718Skan AC_MSG_RESULT(no) 900132718Skan GENERATED_MANPAGES= 901132718Skanfi 902169689SkanAC_SUBST(GENERATED_MANPAGES) 903132718Skan 904132718Skan# How about lex? 905132718Skandnl Don't use AC_PROG_LEX; we insist on flex. 906132718Skandnl LEXLIB is not useful in gcc. 907169689SkanAC_CHECK_PROGS([FLEX], flex, [$MISSING flex]) 908169689Skan 909169689Skan# Bison? 910169689SkanAC_CHECK_PROGS([BISON], bison, [$MISSING bison]) 911169689Skan 912169689Skan# Binutils are not build modules, unlike bison/flex/makeinfo. So we 913169689Skan# check for build == host before using them. 914169689Skan 915169689Skan# NM 916169689Skanif test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \ 917169689Skan && test -d ../binutils ; then 918169689Skan NM='$(objdir)/../binutils/nm-new' 919132718Skanelse 920169689Skan AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm) 921132718Skanfi 922132718Skan 923169689Skan# AR 924169689Skanif test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \ 925169689Skan && test -d ../binutils ; then 926169689Skan AR='$(objdir)/../binutils/ar' 927132718Skanelse 928169689Skan AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar) 929132718Skanfi 930132718Skan 931169689Skan 932132718Skan# -------------------- 933132718Skan# Checks for C headers 934132718Skan# -------------------- 935132718Skan 936132718SkanAC_MSG_CHECKING(for GNU C library) 937132718SkanAC_CACHE_VAL(gcc_cv_glibc, 938169689Skan[AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 939169689Skan [[#include <features.h>]], [[ 940132718Skan#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__) 941132718Skan#error Not a GNU C library system 942169689Skan#endif]])], 943169689Skan [gcc_cv_glibc=yes], 944169689Skan [gcc_cv_glibc=no])]) 945132718SkanAC_MSG_RESULT($gcc_cv_glibc) 946132718Skanif test $gcc_cv_glibc = yes; then 947132718Skan AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library]) 948132718Skanfi 949132718Skan 950132718Skan# Need to reject headers which give warnings, so that the -Werror bootstrap 951132718Skan# works later. *sigh* This needs to come before all header checks. 952132718SkanAC_PROG_CPP_WERROR 953132718Skan 954132718SkanAC_HEADER_STDC 955132718SkanAC_HEADER_TIME 956169689SkanACX_HEADER_STRING 957132718SkanAC_HEADER_SYS_WAIT 958169689SkanAC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ 959132718Skan fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \ 960132718Skan sys/resource.h sys/param.h sys/times.h sys/stat.h \ 961132718Skan direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h) 962132718Skan 963132718Skan# Check for thread headers. 964132718SkanAC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=]) 965132718SkanAC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=]) 966132718Skan 967132718Skan# These tests can't be done till we know if we have limits.h. 968132718Skangcc_AC_C_CHAR_BIT 969169689SkanAC_C_BIGENDIAN 970132718Skan 971132718Skan# -------- 972132718Skan# UNSORTED 973132718Skan# -------- 974132718Skan 975132718Skan# Stage specific cflags for build. 976132718Skanstage1_cflags= 977132718Skancase $build in 978132718Skanvax-*-*) 979132718Skan if test x$GCC = xyes 980132718Skan then 981132718Skan stage1_cflags="-Wa,-J" 982132718Skan else 983132718Skan stage1_cflags="-J" 984132718Skan fi 985132718Skan ;; 986132718Skanesac 987132718SkanAC_SUBST(stage1_cflags) 988132718Skan 989132718Skan# These libraries may be used by collect2. 990132718Skan# We may need a special search path to get them linked. 991132718SkanAC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs, 992132718Skan[save_LIBS="$LIBS" 993132718Skanfor libs in '' -lld -lmld \ 994132718Skan '-L/usr/lib/cmplrs/cc2.11 -lmld' \ 995132718Skan '-L/usr/lib/cmplrs/cc3.11 -lmld' 996132718Skando 997132718Skan LIBS="$libs" 998132718Skan AC_TRY_LINK_FUNC(ldopen, 999132718Skan [gcc_cv_collect2_libs="$libs"; break]) 1000132718Skandone 1001132718SkanLIBS="$save_LIBS" 1002132718Skantest -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required']) 1003132718Skancase $gcc_cv_collect2_libs in 1004132718Skan "none required") ;; 1005132718Skan *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;; 1006132718Skanesac 1007132718SkanAC_SUBST(COLLECT2_LIBS) 1008132718Skan 1009132718Skan# When building Ada code on Alpha, we need exc_resume which is usually in 1010132718Skan# -lexc. So test for it. 1011132718Skansave_LIBS="$LIBS" 1012132718SkanLIBS= 1013132718SkanAC_SEARCH_LIBS(exc_resume, exc) 1014132718SkanGNAT_LIBEXC="$LIBS" 1015132718SkanLIBS="$save_LIBS" 1016132718SkanAC_SUBST(GNAT_LIBEXC) 1017132718Skan 1018132718Skan# Some systems put ldexp and frexp in libm instead of libc; assume 1019132718Skan# they're both in the same place. jcf-dump needs them. 1020132718Skansave_LIBS="$LIBS" 1021132718SkanLIBS= 1022132718SkanAC_SEARCH_LIBS(ldexp, m) 1023132718SkanLDEXP_LIB="$LIBS" 1024132718SkanLIBS="$save_LIBS" 1025132718SkanAC_SUBST(LDEXP_LIB) 1026132718Skan 1027132718Skan# Use <inttypes.h> only if it exists, 1028132718Skan# doesn't clash with <sys/types.h>, and declares intmax_t. 1029132718SkanAC_MSG_CHECKING(for inttypes.h) 1030132718SkanAC_CACHE_VAL(gcc_cv_header_inttypes_h, 1031169689Skan[AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 1032169689Skan[[#include <sys/types.h> 1033169689Skan#include <inttypes.h>]], 1034169689Skan [[intmax_t i = -1;]])], 1035132718Skan [gcc_cv_header_inttypes_h=yes], 1036169689Skan [gcc_cv_header_inttypes_h=no])]) 1037132718SkanAC_MSG_RESULT($gcc_cv_header_inttypes_h) 1038132718Skanif test $gcc_cv_header_inttypes_h = yes; then 1039132718Skan AC_DEFINE(HAVE_INTTYPES_H, 1, 1040132718Skan [Define if you have a working <inttypes.h> header file.]) 1041132718Skanfi 1042132718Skan 1043132718Skandnl Disabled until we have a complete test for buggy enum bitfields. 1044132718Skandnl gcc_AC_C_ENUM_BF_UNSIGNED 1045132718Skan 1046169689Skandefine(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl 1047169689Skan ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl 1048169689Skan fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl 1049169689Skan fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl 1050169689Skan putchar_unlocked putc_unlocked) 1051169689SkanAC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \ 1052169689Skan sysconf strsignal getrusage nl_langinfo scandir alphasort \ 1053169689Skan gettimeofday mbstowcs wcswidth mmap mincore setlocale \ 1054169689Skan gcc_UNLOCKED_FUNCS) 1055132718Skan 1056132718Skanif test x$ac_cv_func_mbstowcs = xyes; then 1057132718Skan AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works, 1058169689Skan[ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h> 1059132718Skanint main() 1060132718Skan{ 1061132718Skan mbstowcs(0, "", 0); 1062132718Skan return 0; 1063169689Skan}]])], 1064169689Skan [gcc_cv_func_mbstowcs_works=yes], 1065169689Skan [gcc_cv_func_mbstowcs_works=no], 1066169689Skan [gcc_cv_func_mbstowcs_works=yes])]) 1067132718Skan if test x$gcc_cv_func_mbstowcs_works = xyes; then 1068132718Skan AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1, 1069132718Skan [Define this macro if mbstowcs does not crash when its 1070132718Skan first argument is NULL.]) 1071132718Skan fi 1072132718Skanfi 1073132718Skan 1074132718SkanAC_CHECK_TYPE(ssize_t, int) 1075132718Skan 1076132718Skan# Try to determine the array type of the second argument of getgroups 1077132718Skan# for the target system (int or gid_t). 1078132718SkanAC_TYPE_GETGROUPS 1079132718Skanif test "${target}" = "${build}"; then 1080132718Skan TARGET_GETGROUPS_T=$ac_cv_type_getgroups 1081132718Skanelse 1082132718Skan case "${target}" in 1083132718Skan # This condition may need some tweaking. It should include all 1084132718Skan # targets where the array type of the second argument of getgroups 1085132718Skan # is int and the type of gid_t is not equivalent to int. 1086132718Skan *-*-sunos* | *-*-ultrix*) 1087132718Skan TARGET_GETGROUPS_T=int 1088132718Skan ;; 1089132718Skan *) 1090132718Skan TARGET_GETGROUPS_T=gid_t 1091132718Skan ;; 1092132718Skan esac 1093132718Skanfi 1094132718SkanAC_SUBST(TARGET_GETGROUPS_T) 1095132718Skan 1096132718Skangcc_AC_FUNC_MMAP_BLACKLIST 1097132718Skan 1098132718Skancase "${host}" in 1099132718Skan*-*-*vms*) 1100132718Skan # Under VMS, vfork works very differently than on Unix. The standard test 1101132718Skan # won't work, and it isn't easily adaptable. It makes more sense to 1102132718Skan # just force it. 1103132718Skan ac_cv_func_vfork_works=yes 1104132718Skan ;; 1105132718Skanesac 1106169689SkanAC_FUNC_FORK 1107132718Skan 1108132718SkanAM_ICONV 1109132718Skan# Until we have in-tree GNU iconv: 1110132718SkanLIBICONV_DEP= 1111132718SkanAC_SUBST(LIBICONV_DEP) 1112132718Skan 1113132718SkanAM_LC_MESSAGES 1114132718Skan 1115169689SkanAM_LANGINFO_CODESET 1116169689Skan 1117132718Skan# We will need to find libiberty.h and ansidecl.h 1118132718Skansaved_CFLAGS="$CFLAGS" 1119132718SkanCFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include" 1120169689Skangcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ 1121169689Skan strsignal strstr strverscmp \ 1122169689Skan errno snprintf vsnprintf vasprintf malloc realloc calloc \ 1123169689Skan free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[ 1124132718Skan#include "ansidecl.h" 1125132718Skan#include "system.h"]) 1126132718Skan 1127132718Skangcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[ 1128132718Skan#include "ansidecl.h" 1129132718Skan#include "system.h" 1130132718Skan#ifdef HAVE_SYS_RESOURCE_H 1131132718Skan#include <sys/resource.h> 1132132718Skan#endif 1133132718Skan]) 1134132718Skan 1135169689SkanAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 1136132718Skan#include "ansidecl.h" 1137132718Skan#include "system.h" 1138132718Skan#ifdef HAVE_SYS_RESOURCE_H 1139132718Skan#include <sys/resource.h> 1140132718Skan#endif 1141169689Skan]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long], 1142132718Skan[Define to \`long' if <sys/resource.h> doesn't define.])]) 1143132718Skan 1144169689Skan# On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible 1145169689Skan# FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname 1146169689Skan# in collect2.c, <fcntl.h> isn't visible, but the configure test below needs 1147169689Skan# to undef these macros to get the correct value for HAVE_DECL_LDGETNAME. 1148132718Skangcc_AC_CHECK_DECLS(ldgetname, , ,[ 1149132718Skan#include "ansidecl.h" 1150132718Skan#include "system.h" 1151132718Skan#ifdef HAVE_LDFCN_H 1152169689Skan#undef FREAD 1153169689Skan#undef FWRITE 1154132718Skan#include <ldfcn.h> 1155132718Skan#endif 1156132718Skan]) 1157132718Skan 1158132718Skangcc_AC_CHECK_DECLS(times, , ,[ 1159132718Skan#include "ansidecl.h" 1160132718Skan#include "system.h" 1161132718Skan#ifdef HAVE_SYS_TIMES_H 1162132718Skan#include <sys/times.h> 1163132718Skan#endif 1164132718Skan]) 1165132718Skan 1166169689Skangcc_AC_CHECK_DECLS(sigaltstack, , ,[ 1167169689Skan#include "ansidecl.h" 1168169689Skan#include "system.h" 1169169689Skan#include <signal.h> 1170169689Skan]) 1171169689Skan 1172132718Skan# More time-related stuff. 1173132718SkanAC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [ 1174169689SkanAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 1175132718Skan#include "ansidecl.h" 1176132718Skan#include "system.h" 1177132718Skan#ifdef HAVE_SYS_TIMES_H 1178132718Skan#include <sys/times.h> 1179132718Skan#endif 1180169689Skan]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])]) 1181132718Skanif test $ac_cv_struct_tms = yes; then 1182132718Skan AC_DEFINE(HAVE_STRUCT_TMS, 1, 1183132718Skan [Define if <sys/times.h> defines struct tms.]) 1184132718Skanfi 1185132718Skan 1186132718Skan# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE. 1187132718Skan# revisit after autoconf 2.50. 1188132718SkanAC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [ 1189169689SkanAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 1190132718Skan#include "ansidecl.h" 1191132718Skan#include "system.h" 1192169689Skan]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])]) 1193132718Skanif test $gcc_cv_type_clock_t = yes; then 1194132718Skan AC_DEFINE(HAVE_CLOCK_T, 1, 1195132718Skan [Define if <time.h> defines clock_t.]) 1196132718Skanfi 1197132718Skan 1198132718Skan# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests. 1199132718SkanCFLAGS="$saved_CFLAGS" 1200132718Skan 1201132718Skangcc_AC_INITFINI_ARRAY 1202132718Skan 1203132718Skan# mkdir takes a single argument on some systems. 1204132718Skangcc_AC_FUNC_MKDIR_TAKES_ONE_ARG 1205132718Skan 1206132718Skan# File extensions 1207132718Skanmanext='.1' 1208132718Skanobjext='.o' 1209132718SkanAC_SUBST(manext) 1210132718SkanAC_SUBST(objext) 1211132718Skan 1212132718Skan# With Setjmp/Longjmp based exception handling. 1213132718SkanAC_ARG_ENABLE(sjlj-exceptions, 1214132718Skan[ --enable-sjlj-exceptions 1215132718Skan arrange to use setjmp/longjmp exception handling], 1216132718Skan[sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi` 1217132718SkanAC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj, 1218132718Skan [Define 0/1 to force the choice for exception handling model.])]) 1219132718Skan 1220146895Skan# For platforms with the unwind ABI which includes an unwind library, 1221146895Skan# libunwind, we can choose to use the system libunwind. 1222146895SkanAC_ARG_WITH(system-libunwind, 1223146895Skan[ --with-system-libunwind use installed libunwind]) 1224132718Skan 1225169689Skan# config.gcc also contains tests of with_system_libunwind. 1226169689Skanif test x$with_system_libunwind = xyes; then 1227169689Skan AC_DEFINE(HAVE_GETIPINFO, 1, 1228169689Skan[Define to 1 if system unwind library has _Unwind_GetIPInfo.]) 1229169689Skanfi 1230169689Skan 1231132718Skan# -------------------------------------------------------- 1232132718Skan# Build, host, and target specific configuration fragments 1233132718Skan# -------------------------------------------------------- 1234132718Skan 1235132718Skan# Collect build-machine-specific information. 1236132718Skan. ${srcdir}/config.build 1237132718Skan 1238132718Skan# Collect host-machine-specific information. 1239132718Skan. ${srcdir}/config.host 1240132718Skan 1241132718Skantarget_gtfiles= 1242132718Skan 1243132718Skan# Collect target-machine-specific information. 1244132718Skan. ${srcdir}/config.gcc 1245132718Skan 1246132718Skanextra_objs="${host_extra_objs} ${extra_objs}" 1247132718Skanextra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}" 1248132718Skan 1249132718Skan# Default the target-machine variables that were not explicitly set. 1250132718Skanif test x"$tm_file" = x 1251132718Skanthen tm_file=$cpu_type/$cpu_type.h; fi 1252132718Skan 1253132718Skanif test x"$extra_headers" = x 1254132718Skanthen extra_headers=; fi 1255132718Skan 1256132718Skanif test x$md_file = x 1257132718Skanthen md_file=$cpu_type/$cpu_type.md; fi 1258132718Skan 1259132718Skanif test x$out_file = x 1260132718Skanthen out_file=$cpu_type/$cpu_type.c; fi 1261132718Skan 1262132718Skanif test x"$tmake_file" = x 1263132718Skanthen tmake_file=$cpu_type/t-$cpu_type 1264132718Skanfi 1265132718Skan 1266132718Skanif test x"$dwarf2" = xyes 1267132718Skanthen tm_file="$tm_file tm-dwarf2.h" 1268132718Skanfi 1269132718Skan 1270132718Skan# Say what files are being used for the output code and MD file. 1271132718Skanecho "Using \`$srcdir/config/$out_file' for machine-specific logic." 1272132718Skanecho "Using \`$srcdir/config/$md_file' as machine description file." 1273132718Skan 1274132718Skan# If any of the xm_file variables contain nonexistent files, warn 1275132718Skan# about them and drop them. 1276132718Skan 1277132718Skanbx= 1278132718Skanfor x in $build_xm_file; do 1279132718Skan if test -f $srcdir/config/$x 1280132718Skan then bx="$bx $x" 1281132718Skan else AC_MSG_WARN($srcdir/config/$x does not exist.) 1282132718Skan fi 1283132718Skandone 1284132718Skanbuild_xm_file="$bx" 1285132718Skan 1286132718Skanhx= 1287132718Skanfor x in $host_xm_file; do 1288132718Skan if test -f $srcdir/config/$x 1289132718Skan then hx="$hx $x" 1290132718Skan else AC_MSG_WARN($srcdir/config/$x does not exist.) 1291132718Skan fi 1292132718Skandone 1293132718Skanhost_xm_file="$hx" 1294132718Skan 1295132718Skantx= 1296132718Skanfor x in $xm_file; do 1297132718Skan if test -f $srcdir/config/$x 1298132718Skan then tx="$tx $x" 1299132718Skan else AC_MSG_WARN($srcdir/config/$x does not exist.) 1300132718Skan fi 1301132718Skandone 1302132718Skanxm_file="$tx" 1303132718Skan 1304132718Skancount=a 1305132718Skanfor f in $tm_file; do 1306132718Skan count=${count}x 1307132718Skandone 1308132718Skanif test $count = ax; then 1309132718Skan echo "Using \`$srcdir/config/$tm_file' as target machine macro file." 1310132718Skanelse 1311132718Skan echo "Using the following target machine macro files:" 1312132718Skan for f in $tm_file; do 1313132718Skan echo " $srcdir/config/$f" 1314132718Skan done 1315132718Skanfi 1316132718Skan 1317132718Skanif test x$need_64bit_hwint = xyes; then 1318132718Skan AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1, 1319132718Skan[Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).]) 1320132718Skanfi 1321132718Skan 1322169689Skanif test x$use_long_long_for_widest_fast_int = xyes; then 1323169689Skan AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1, 1324169689Skan[Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still 1325169689Skanefficiently supported by the host hardware.]) 1326169689Skanfi 1327169689Skan 1328132718Skancount=a 1329132718Skanfor f in $host_xm_file; do 1330132718Skan count=${count}x 1331132718Skandone 1332132718Skanif test $count = a; then 1333132718Skan : 1334132718Skanelif test $count = ax; then 1335132718Skan echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file." 1336132718Skanelse 1337132718Skan echo "Using the following host machine macro files:" 1338132718Skan for f in $host_xm_file; do 1339132718Skan echo " $srcdir/config/$f" 1340132718Skan done 1341132718Skanfi 1342132718Skanecho "Using ${out_host_hook_obj} for host machine hooks." 1343132718Skan 1344132718Skanif test "$host_xm_file" != "$build_xm_file"; then 1345132718Skan count=a 1346132718Skan for f in $build_xm_file; do 1347132718Skan count=${count}x 1348132718Skan done 1349132718Skan if test $count = a; then 1350132718Skan : 1351132718Skan elif test $count = ax; then 1352132718Skan echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file." 1353132718Skan else 1354132718Skan echo "Using the following build machine macro files:" 1355132718Skan for f in $build_xm_file; do 1356132718Skan echo " $srcdir/config/$f" 1357132718Skan done 1358132718Skan fi 1359132718Skanfi 1360132718Skan 1361169689Skancase ${host} in 1362169689Skan powerpc*-*-darwin*) 1363169689Skan AC_CACHE_CHECK([whether mcontext_t fields have underscores], 1364169689Skan gcc_cv_mcontext_underscores, 1365169689Skan AC_COMPILE_IFELSE([ 1366169689Skan#include <sys/signal.h> 1367169689Skan#include <ucontext.h> 1368169689Skanint main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; } 1369169689Skan], 1370169689Skan gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes)) 1371169689Skan if test $gcc_cv_mcontext_underscores = yes; then 1372169689Skan AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl 1373169689Skan [mcontext_t fields start with __]) 1374169689Skan fi 1375169689Skan ;; 1376169689Skanesac 1377169689Skan 1378169689Skan# --------- 1379169689Skan# Threading 1380169689Skan# --------- 1381169689Skan 1382132718Skan# Check if a valid thread package 1383169689Skancase ${enable_threads} in 1384132718Skan "" | no) 1385132718Skan # No threads 1386132718Skan target_thread_file='single' 1387132718Skan ;; 1388132718Skan yes) 1389132718Skan # default 1390132718Skan target_thread_file='single' 1391132718Skan ;; 1392169689Skan aix | dce | gnat | irix | posix | posix95 | rtems | \ 1393132718Skan single | solaris | vxworks | win32 ) 1394169689Skan target_thread_file=${enable_threads} 1395132718Skan ;; 1396132718Skan *) 1397169689Skan echo "${enable_threads} is an unknown thread package" 1>&2 1398132718Skan exit 1 1399132718Skan ;; 1400132718Skanesac 1401132718Skan 1402132718Skanif test x${thread_file} = x; then 1403132718Skan # No thread file set by target-specific clauses in config.gcc, 1404132718Skan # so use file chosen by default logic above 1405132718Skan thread_file=${target_thread_file} 1406132718Skanfi 1407132718Skan 1408169689Skan# Make gthr-default.h if we have a thread file. 1409169689Skangthread_flags= 1410169689Skanif test $thread_file != single; then 1411169689Skan rm -f gthr-default.h 1412169689Skan echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h 1413169689Skan gthread_flags=-DHAVE_GTHR_DEFAULT 1414169689Skanfi 1415169689SkanAC_SUBST(gthread_flags) 1416169689Skan 1417169689Skan# -------- 1418169689Skan# UNSORTED 1419169689Skan# -------- 1420169689Skan 1421169689Skanuse_cxa_atexit=no 1422132718Skanif test x$enable___cxa_atexit = xyes || \ 1423132718Skan test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then 1424169689Skan if test x$host = x$target; then 1425169689Skan AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes], 1426169689Skan [echo "__cxa_atexit can't be enabled on this target"]) 1427169689Skan else 1428169689Skan # We can't check for __cxa_atexit when building a cross, so assume 1429169689Skan # it is available 1430169689Skan use_cxa_atexit=yes 1431169689Skan fi 1432169689Skan if test x$use_cxa_atexit = xyes; then 1433169689Skan AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2, 1434169689Skan [Define if you want to use __cxa_atexit, rather than atexit, to 1435169689Skan register C++ destructors for local statics and global objects. 1436169689Skan This is essential for fully standards-compliant handling of 1437169689Skan destructors, but requires __cxa_atexit in libc.]) 1438169689Skan fi 1439132718Skanfi 1440132718Skan 1441169689Skanuse_getipinfo=yes 1442169689Skanif test x$with_system_libunwind = xyes; then 1443169689Skan if test x$host = x$target; then 1444169689Skan AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no]) 1445169689Skan fi 1446169689Skanfi 1447169689SkanGCC_TARGET_TEMPLATE(HAVE_GETIPINFO) 1448169689Skanif test x$use_getipinfo = xyes; then 1449169689Skan AC_DEFINE(HAVE_GETIPINFO, 1, 1450169689Skan [Define to 1 if system unwind library has _Unwind_GetIPInfo.]) 1451169689Skanelse 1452169689Skan echo "The system unwind library does not support _Unwind_GetIPInfo." 1453169689Skanfi 1454169689Skan 1455132718Skan# Look for a file containing extra machine modes. 1456132718Skanif test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then 1457132718Skan extra_modes_file='$(srcdir)'/config/${extra_modes} 1458132718Skan AC_SUBST(extra_modes_file) 1459132718Skan AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes", 1460132718Skan [Define to the name of a file containing a list of extra machine modes 1461132718Skan for this architecture.]) 1462132718Skanfi 1463132718Skan 1464169689Skan# Convert extra_options into a form suitable for Makefile use. 1465169689Skanextra_opt_files= 1466169689Skanfor f in $extra_options; do 1467169689Skan extra_opt_files="$extra_opt_files \$(srcdir)/config/$f" 1468169689Skandone 1469169689SkanAC_SUBST(extra_opt_files) 1470169689Skan 1471132718Skan# auto-host.h is the file containing items generated by autoconf and is 1472132718Skan# the first file included by config.h. 1473132718Skan# If host=build, it is correct to have bconfig include auto-host.h 1474132718Skan# as well. If host!=build, we are in error and need to do more 1475132718Skan# work to find out the build config parameters. 1476132718Skanif test x$host = x$build 1477132718Skanthen 1478132718Skan build_auto=auto-host.h 1479132718Skanelse 1480132718Skan # We create a subdir, then run autoconf in the subdir. 1481132718Skan # To prevent recursion we set host and build for the new 1482132718Skan # invocation of configure to the build for this invocation 1483132718Skan # of configure. 1484132718Skan tempdir=build.$$ 1485132718Skan rm -rf $tempdir 1486132718Skan mkdir $tempdir 1487132718Skan cd $tempdir 1488132718Skan case ${srcdir} in 1489132718Skan /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};; 1490132718Skan *) realsrcdir=../${srcdir};; 1491132718Skan esac 1492132718Skan saved_CFLAGS="${CFLAGS}" 1493132718Skan CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ 1494132718Skan ${realsrcdir}/configure \ 1495169689Skan --enable-languages=${enable_languages-all} \ 1496132718Skan --target=$target_alias --host=$build_alias --build=$build_alias 1497132718Skan CFLAGS="${saved_CFLAGS}" 1498132718Skan 1499132718Skan # We just finished tests for the build machine, so rename 1500132718Skan # the file auto-build.h in the gcc directory. 1501132718Skan mv auto-host.h ../auto-build.h 1502132718Skan cd .. 1503132718Skan rm -rf $tempdir 1504132718Skan build_auto=auto-build.h 1505132718Skanfi 1506169689SkanAC_SUBST(build_subdir) 1507132718Skan 1508132718Skantm_file="${tm_file} defaults.h" 1509132718Skantm_p_file="${tm_p_file} tm-preds.h" 1510132718Skanhost_xm_file="auto-host.h ansidecl.h ${host_xm_file}" 1511132718Skanbuild_xm_file="${build_auto} ansidecl.h ${build_xm_file}" 1512132718Skan# We don't want ansidecl.h in target files, write code there in ISO/GNU C. 1513132718Skan# put this back in temporarily. 1514169689Skanxm_file="auto-host.h ansidecl.h ${xm_file}" 1515132718Skan 1516132718Skan# -------- 1517132718Skan# UNSORTED 1518132718Skan# -------- 1519132718Skan 1520132718Skanchangequote(,)dnl 1521132718Skan# Compile in configure arguments. 1522132718Skanif test -f configargs.h ; then 1523132718Skan # Being re-configured. 1524132718Skan gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'` 1525132718Skan gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" 1526132718Skanelse 1527132718Skan gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS" 1528132718Skanfi 1529132718Skan 1530132718Skan# Double all backslashes and backslash all quotes to turn 1531132718Skan# gcc_config_arguments into a C string. 1532132718Skansed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out 1533132718Skan$gcc_config_arguments 1534132718SkanEOF 1535132718Skangcc_config_arguments_str=`cat conftest.out` 1536132718Skanrm -f conftest.out 1537132718Skan 1538132718Skancat > configargs.h <<EOF 1539132718Skan/* Generated automatically. */ 1540132718Skanstatic const char configuration_arguments[] = "$gcc_config_arguments_str"; 1541132718Skanstatic const char thread_model[] = "$thread_file"; 1542132718Skan 1543132718Skanstatic const struct { 1544132718Skan const char *name, *value; 1545132718Skan} configure_default_options[] = $configure_default_options; 1546132718SkanEOF 1547132718Skanchangequote([,])dnl 1548132718Skan 1549132718Skan# Internationalization 1550132718SkanZW_GNU_GETTEXT_SISTER_DIR 1551132718Skan 1552132718Skan# If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get 1553132718Skan# -liconv on the link line twice. 1554132718Skancase "$LIBINTL" in *$LIBICONV*) 1555132718Skan LIBICONV= ;; 1556132718Skanesac 1557132718Skan 1558169689SkanAC_ARG_ENABLE(secureplt, 1559169689Skan[ --enable-secureplt enable -msecure-plt by default for PowerPC], 1560169689Skan[], []) 1561169689Skan 1562132718Skan# Windows32 Registry support for specifying GCC installation paths. 1563132718SkanAC_ARG_ENABLE(win32-registry, 1564132718Skan[ --disable-win32-registry 1565132718Skan disable lookup of installation paths in the 1566132718Skan Registry on Windows hosts 1567132718Skan --enable-win32-registry enable registry lookup (default) 1568132718Skan --enable-win32-registry=KEY 1569132718Skan use KEY instead of GCC version as the last portion 1570132718Skan of the registry key],,) 1571169689Skan 1572132718Skancase $host_os in 1573169689Skan win32 | pe | cygwin* | mingw32* | uwin*) 1574169689Skan if test "x$enable_win32_registry" != xno; then 1575169689Skan AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no]) 1576169689Skan fi 1577132718Skan 1578169689Skan if test "x$enable_win32_registry" != xno; then 1579169689Skan AC_DEFINE(ENABLE_WIN32_REGISTRY, 1, 1580169689Skan [Define to 1 if installation paths should be looked up in the Windows 1581169689Skan Registry. Ignored on non-Windows hosts.]) 1582169689Skan 1583169689Skan if test "x$enable_win32_registry" != xyes \ 1584169689Skan && test "x$enable_win32_registry" != x; then 1585169689Skan AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry", 1586169689Skan [Define to be the last component of the Windows registry key under which 1587169689Skan to look for installation paths. The full key used will be 1588169689Skan HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}. 1589169689Skan The default is the GCC version number.]) 1590169689Skan fi 1591169689Skan fi 1592132718Skan ;; 1593132718Skanesac 1594132718Skan 1595132718Skan# Get an absolute path to the GCC top-level source directory 1596132718Skanholddir=`${PWDCMD-pwd}` 1597132718Skancd $srcdir 1598132718Skantopdir=`${PWDCMD-pwd}` 1599132718Skancd $holddir 1600132718Skan 1601132718Skan# Conditionalize the makefile for this host machine. 1602132718Skanxmake_file= 1603132718Skanfor f in ${host_xmake_file} 1604132718Skando 1605132718Skan if test -f ${srcdir}/config/$f 1606132718Skan then 1607132718Skan xmake_file="${xmake_file} \$(srcdir)/config/$f" 1608132718Skan fi 1609132718Skandone 1610132718Skan 1611132718Skan# Conditionalize the makefile for this target machine. 1612132718Skantmake_file_= 1613132718Skanfor f in ${tmake_file} 1614132718Skando 1615132718Skan if test -f ${srcdir}/config/$f 1616132718Skan then 1617132718Skan tmake_file_="${tmake_file_} \$(srcdir)/config/$f" 1618132718Skan fi 1619132718Skandone 1620132718Skantmake_file="${tmake_file_}" 1621132718Skan 1622132718Skan# If the host doesn't support symlinks, modify CC in 1623132718Skan# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works. 1624132718Skan# Otherwise, we can use "CC=$(CC)". 1625132718Skanrm -f symtest.tem 1626169689Skancase "$LN_S" in 1627169689Skan *-s*) 1628169689Skan cc_set_by_configure="\$(CC)" 1629169689Skan quoted_cc_set_by_configure="\$(CC)" 1630169689Skan stage_prefix_set_by_configure="\$(STAGE_PREFIX)" 1631169689Skan quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)" 1632169689Skan ;; 1633169689Skan *) 1634169689Skan cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`" 1635169689Skan quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`" 1636169689Skan stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`" 1637169689Skan quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`" 1638169689Skan ;; 1639169689Skanesac 1640132718Skan 1641169689Skan# This is a terrible hack which will go away some day. 1642169689Skanhost_cc_for_libada=${CC} 1643169689SkanAC_SUBST(host_cc_for_libada) 1644169689Skan 1645132718Skanout_object_file=`basename $out_file .c`.o 1646132718Skan 1647169689Skantm_file_list="options.h" 1648169689Skantm_include_list="options.h" 1649132718Skanfor f in $tm_file; do 1650132718Skan case $f in 1651132718Skan defaults.h ) 1652132718Skan tm_file_list="${tm_file_list} \$(srcdir)/$f" 1653132718Skan tm_include_list="${tm_include_list} $f" 1654132718Skan ;; 1655132718Skan * ) 1656132718Skan tm_file_list="${tm_file_list} \$(srcdir)/config/$f" 1657132718Skan tm_include_list="${tm_include_list} config/$f" 1658132718Skan ;; 1659132718Skan esac 1660132718Skandone 1661132718Skan 1662132718Skantm_p_file_list= 1663132718Skantm_p_include_list= 1664132718Skanfor f in $tm_p_file; do 1665132718Skan case $f in 1666132718Skan tm-preds.h ) 1667132718Skan tm_p_file_list="${tm_p_file_list} $f" 1668132718Skan tm_p_include_list="${tm_p_include_list} $f" 1669132718Skan ;; 1670132718Skan * ) 1671132718Skan tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f" 1672132718Skan tm_p_include_list="${tm_p_include_list} config/$f" 1673132718Skan esac 1674132718Skandone 1675132718Skan 1676132718Skanxm_file_list= 1677132718Skanxm_include_list= 1678132718Skanfor f in $xm_file; do 1679132718Skan case $f in 1680132718Skan ansidecl.h ) 1681132718Skan xm_file_list="${xm_file_list} \$(srcdir)/../include/$f" 1682132718Skan xm_include_list="${xm_include_list} $f" 1683132718Skan ;; 1684132718Skan auto-host.h ) 1685132718Skan xm_file_list="${xm_file_list} $f" 1686132718Skan xm_include_list="${xm_include_list} $f" 1687132718Skan ;; 1688132718Skan * ) 1689132718Skan xm_file_list="${xm_file_list} \$(srcdir)/config/$f" 1690132718Skan xm_include_list="${xm_include_list} config/$f" 1691132718Skan ;; 1692132718Skan esac 1693132718Skandone 1694132718Skan 1695132718Skanhost_xm_file_list= 1696132718Skanhost_xm_include_list= 1697132718Skanfor f in $host_xm_file; do 1698132718Skan case $f in 1699132718Skan ansidecl.h ) 1700132718Skan host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f" 1701132718Skan host_xm_include_list="${host_xm_include_list} $f" 1702132718Skan ;; 1703132718Skan auto-host.h ) 1704132718Skan host_xm_file_list="${host_xm_file_list} $f" 1705132718Skan host_xm_include_list="${host_xm_include_list} $f" 1706132718Skan ;; 1707132718Skan * ) 1708132718Skan host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" 1709132718Skan host_xm_include_list="${host_xm_include_list} config/$f" 1710132718Skan ;; 1711132718Skan esac 1712132718Skandone 1713132718Skan 1714132718Skanbuild_xm_file_list= 1715132718Skanfor f in $build_xm_file; do 1716132718Skan case $f in 1717132718Skan ansidecl.h ) 1718132718Skan build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f" 1719132718Skan build_xm_include_list="${build_xm_include_list} $f" 1720132718Skan ;; 1721132718Skan auto-build.h | auto-host.h ) 1722132718Skan build_xm_file_list="${build_xm_file_list} $f" 1723132718Skan build_xm_include_list="${build_xm_include_list} $f" 1724132718Skan ;; 1725132718Skan * ) 1726132718Skan build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" 1727132718Skan build_xm_include_list="${build_xm_include_list} config/$f" 1728132718Skan ;; 1729132718Skan esac 1730132718Skandone 1731132718Skan 1732259563Spfg# Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a 1733259563Spfg# cross-compiler which does not use the native headers and libraries. 1734132718Skan# Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR. 1735132718SkanCROSS= AC_SUBST(CROSS) 1736132718SkanALL=all.internal AC_SUBST(ALL) 1737132718SkanSYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR) 1738169689Skan 1739169689Skanif test "x$with_build_sysroot" != x; then 1740169689Skan build_system_header_dir=$with_build_sysroot'$(NATIVE_SYSTEM_HEADER_DIR)' 1741169689Skanelse 1742169689Skan # This value is used, even on a native system, because 1743169689Skan # CROSS_SYSTEM_HEADER_DIR is just 1744169689Skan # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR). 1745169689Skan build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)' 1746169689Skanfi 1747169689Skan 1748132718Skanif test x$host != x$target 1749132718Skanthen 1750259563Spfg CROSS="-DCROSS_DIRECTORY_STRUCTURE" 1751132718Skan ALL=all.cross 1752169689Skan SYSTEM_HEADER_DIR=$build_system_header_dir 1753132718Skan case "$host","$target" in 1754132718Skan # Darwin crosses can use the host system's libraries and headers, 1755132718Skan # because of the fat library support. Of course, it must be the 1756132718Skan # same version of Darwin on both sides. Allow the user to 1757132718Skan # just say --target=foo-darwin without a version number to mean 1758132718Skan # "the version on this system". 1759132718Skan *-*-darwin*,*-*-darwin*) 1760132718Skan hostos=`echo $host | sed 's/.*-darwin/darwin/'` 1761132718Skan targetos=`echo $target | sed 's/.*-darwin/darwin/'` 1762132718Skan if test $hostos = $targetos -o $targetos = darwin ; then 1763132718Skan CROSS= 1764132718Skan SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' 1765132718Skan with_headers=yes 1766132718Skan fi 1767132718Skan ;; 1768132718Skan 1769132718Skan i?86-*-*,x86_64-*-* \ 1770132718Skan | powerpc*-*-*,powerpc64*-*-*) 1771132718Skan CROSS="$CROSS -DNATIVE_CROSS" ;; 1772132718Skan esac 1773132718Skanelif test "x$TARGET_SYSTEM_ROOT" != x; then 1774169689Skan SYSTEM_HEADER_DIR=$build_system_header_dir 1775132718Skanfi 1776132718Skan 1777132718Skan# If this is a cross-compiler that does not 1778132718Skan# have its own set of headers then define 1779132718Skan# inhibit_libc 1780132718Skan 1781132718Skan# If this is using newlib, without having the headers available now, 1782132718Skan# then define inhibit_libc in LIBGCC2_CFLAGS. 1783132718Skan# This prevents libgcc2 from containing any code which requires libc 1784132718Skan# support. 1785169689Skaninhibit_libc=false 1786132718Skanif { { test x$host != x$target && test "x$with_sysroot" = x ; } || 1787132718Skan test x$with_newlib = xyes ; } && 1788132718Skan { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then 1789169689Skan inhibit_libc=true 1790132718Skanfi 1791132718SkanAC_SUBST(inhibit_libc) 1792132718Skan 1793132718Skan# When building gcc with a cross-compiler, we need to adjust things so 1794132718Skan# that the generator programs are still built with the native compiler. 1795132718Skan# Also, we cannot run fixincludes or fix-header. 1796132718Skan 1797132718Skan# These are the normal (build=host) settings: 1798132718SkanCC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD) 1799132718SkanBUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS) 1800132718SkanSTMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC) 1801132718Skan 1802132718Skan# Possibly disable fixproto, on a per-target basis. 1803132718Skancase ${use_fixproto} in 1804132718Skan no) 1805132718Skan STMP_FIXPROTO= 1806132718Skan ;; 1807132718Skan yes) 1808132718Skan STMP_FIXPROTO=stmp-fixproto 1809132718Skan ;; 1810132718Skanesac 1811132718SkanAC_SUBST(STMP_FIXPROTO) 1812132718Skan 1813132718Skan# And these apply if build != host, or we are generating coverage data 1814132718Skanif test x$build != x$host || test "x$coverage_flags" != x 1815132718Skanthen 1816132718Skan BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)' 1817132718Skan 1818132718Skan if test "x$TARGET_SYSTEM_ROOT" = x; then 1819169689Skan if test "x$STMP_FIXPROTO" != x; then 1820169689Skan STMP_FIXPROTO=stmp-install-fixproto 1821169689Skan fi 1822132718Skan fi 1823132718Skanfi 1824132718Skan 1825132718Skan# Expand extra_headers to include complete path. 1826132718Skan# This substitutes for lots of t-* files. 1827132718Skanextra_headers_list= 1828132718Skan# Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers. 1829132718Skanfor file in ${extra_headers} ; do 1830132718Skan extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}" 1831132718Skandone 1832132718Skan 1833169689Skan# Define collect2 in Makefile. 1834169689Skancase $host_can_use_collect2 in 1835169689Skan no) collect2= ;; 1836169689Skan *) collect2='collect2$(exeext)' ;; 1837169689Skanesac 1838169689SkanAC_SUBST([collect2]) 1839169689Skan 1840132718Skan# Add a definition of USE_COLLECT2 if system wants one. 1841132718Skancase $use_collect2 in 1842132718Skan no) use_collect2= ;; 1843132718Skan "") ;; 1844132718Skan *) 1845132718Skan host_xm_defines="${host_xm_defines} USE_COLLECT2" 1846132718Skan xm_defines="${xm_defines} USE_COLLECT2" 1847169689Skan case $host_can_use_collect2 in 1848169689Skan no) 1849169689Skan AC_MSG_ERROR([collect2 is required but cannot be built on this system]) 1850169689Skan ;; 1851169689Skan esac 1852132718Skan ;; 1853132718Skanesac 1854132718Skan 1855169689Skan# --------------------------- 1856169689Skan# Assembler & linker features 1857169689Skan# --------------------------- 1858169689Skan 1859132718Skan# Identify the assembler which will work hand-in-glove with the newly 1860132718Skan# built GCC, so that we can examine its features. This is the assembler 1861132718Skan# which will be driven by the driver program. 1862132718Skan# 1863132718Skan# If build != host, and we aren't building gas in-tree, we identify a 1864132718Skan# build->target assembler and hope that it will have the same features 1865132718Skan# as the host->target assembler we'll be using. 1866132718Skangcc_cv_gas_major_version= 1867132718Skangcc_cv_gas_minor_version= 1868132718Skangcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas 1869169689Skan 1870169689Skanm4_pattern_allow([AS_FOR_TARGET])dnl 1871169689SkanAS_VAR_SET_IF(gcc_cv_as,, [ 1872132718Skanif test -x "$DEFAULT_ASSEMBLER"; then 1873132718Skan gcc_cv_as="$DEFAULT_ASSEMBLER" 1874169689Skanelif test -f $gcc_cv_as_gas_srcdir/configure.in \ 1875169689Skan && test -f ../gas/Makefile \ 1876169689Skan && test x$build = x$host; then 1877169689Skan gcc_cv_as=../gas/as-new$build_exeext 1878169689Skanelif test -x as$build_exeext; then 1879132718Skan # Build using assembler in the current directory. 1880169689Skan gcc_cv_as=./as$build_exeext 1881169689Skanelif test -x $AS_FOR_TARGET; then 1882169689Skan gcc_cv_as="$AS_FOR_TARGET" 1883169689Skanelse 1884169689Skan AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET) 1885169689Skanfi]) 1886169689Skan 1887169689SkanORIGINAL_AS_FOR_TARGET=$gcc_cv_as 1888169689SkanAC_SUBST(ORIGINAL_AS_FOR_TARGET) 1889169689Skan 1890169689SkanAC_MSG_CHECKING(what assembler to use) 1891169689Skanif test "$gcc_cv_as" = ../gas/as-new$build_exeext; then 1892169689Skan # Single tree build which includes gas. We want to prefer it 1893169689Skan # over whatever linker top-level may have detected, since 1894169689Skan # we'll use what we're building after installation anyway. 1895169689Skan AC_MSG_RESULT(newly built gas) 1896132718Skan in_tree_gas=yes 1897132718Skan _gcc_COMPUTE_GAS_VERSION 1898132718Skan in_tree_gas_is_elf=no 1899132718Skan if grep 'obj_format = elf' ../gas/Makefile > /dev/null \ 1900132718Skan || (grep 'obj_format = multi' ../gas/Makefile \ 1901132718Skan && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null 1902132718Skan then 1903132718Skan in_tree_gas_is_elf=yes 1904132718Skan fi 1905169689Skanelse 1906169689Skan AC_MSG_RESULT($gcc_cv_as) 1907169689Skan in_tree_gas=no 1908132718Skanfi 1909132718Skan 1910132718Skan# Identify the linker which will work hand-in-glove with the newly 1911132718Skan# built GCC, so that we can examine its features. This is the linker 1912132718Skan# which will be driven by the driver program. 1913132718Skan# 1914132718Skan# If build != host, and we aren't building gas in-tree, we identify a 1915132718Skan# build->target linker and hope that it will have the same features 1916132718Skan# as the host->target linker we'll be using. 1917132718Skangcc_cv_gld_major_version= 1918132718Skangcc_cv_gld_minor_version= 1919132718Skangcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld 1920132718Skangcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd 1921169689Skan 1922169689SkanAS_VAR_SET_IF(gcc_cv_ld,, [ 1923132718Skanif test -x "$DEFAULT_LINKER"; then 1924132718Skan gcc_cv_ld="$DEFAULT_LINKER" 1925169689Skanelif test -f $gcc_cv_ld_gld_srcdir/configure.in \ 1926169689Skan && test -f ../ld/Makefile \ 1927169689Skan && test x$build = x$host; then 1928169689Skan gcc_cv_ld=../ld/ld-new$build_exeext 1929169689Skanelif test -x collect-ld$build_exeext; then 1930132718Skan # Build using linker in the current directory. 1931169689Skan gcc_cv_ld=./collect-ld$build_exeext 1932169689Skanelif test -x $LD_FOR_TARGET; then 1933169689Skan gcc_cv_ld="$LD_FOR_TARGET" 1934169689Skanelse 1935169689Skan AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET) 1936169689Skanfi]) 1937169689Skan 1938169689SkanORIGINAL_LD_FOR_TARGET=$gcc_cv_ld 1939169689SkanAC_SUBST(ORIGINAL_LD_FOR_TARGET) 1940169689Skan 1941169689SkanAC_MSG_CHECKING(what linker to use) 1942169689Skanif test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then 1943169689Skan # Single tree build which includes ld. We want to prefer it 1944169689Skan # over whatever linker top-level may have detected, since 1945169689Skan # we'll use what we're building after installation anyway. 1946169689Skan AC_MSG_RESULT(newly built ld) 1947132718Skan in_tree_ld=yes 1948132718Skan in_tree_ld_is_elf=no 1949132718Skan if (grep 'EMUL = .*elf' ../ld/Makefile \ 1950169689Skan || grep 'EMUL = .*linux' ../ld/Makefile \ 1951169689Skan || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then 1952132718Skan in_tree_ld_is_elf=yes 1953132718Skan fi 1954132718Skan 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 1955132718Skan do 1956132718Skanchangequote(,)dnl 1957169689Skan gcc_cv_gld_version=`sed -n -e 's/^[ ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f` 1958132718Skan if test x$gcc_cv_gld_version != x; then 1959132718Skan break 1960132718Skan fi 1961132718Skan done 1962132718Skan gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"` 1963132718Skan gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"` 1964132718Skanchangequote([,])dnl 1965169689Skanelse 1966169689Skan AC_MSG_RESULT($gcc_cv_ld) 1967169689Skan in_tree_ld=no 1968132718Skanfi 1969132718Skan 1970132718Skan# Figure out what nm we will be using. 1971132718Skangcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils 1972169689SkanAS_VAR_SET_IF(gcc_cv_nm,, [ 1973169689Skanif test -f $gcc_cv_binutils_srcdir/configure.in \ 1974169689Skan && test -f ../binutils/Makefile \ 1975169689Skan && test x$build = x$host; then 1976169689Skan gcc_cv_nm=../binutils/nm-new$build_exeext 1977169689Skanelif test -x nm$build_exeext; then 1978169689Skan gcc_cv_nm=./nm$build_exeext 1979169689Skanelif test -x $NM_FOR_TARGET; then 1980169689Skan gcc_cv_nm="$NM_FOR_TARGET" 1981169689Skanelse 1982169689Skan AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET) 1983169689Skanfi]) 1984169689Skan 1985132718SkanAC_MSG_CHECKING(what nm to use) 1986169689Skanif test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then 1987132718Skan # Single tree build which includes binutils. 1988169689Skan AC_MSG_RESULT(newly built nm) 1989132718Skan in_tree_nm=yes 1990132718Skanelse 1991169689Skan AC_MSG_RESULT($gcc_cv_nm) 1992169689Skan in_tree_nm=no 1993132718Skanfi 1994132718Skan 1995169689SkanORIGINAL_NM_FOR_TARGET=$gcc_cv_nm 1996169689SkanAC_SUBST(ORIGINAL_NM_FOR_TARGET) 1997169689Skan 1998132718Skan# Figure out what objdump we will be using. 1999169689SkanAS_VAR_SET_IF(gcc_cv_objdump,, [ 2000169689Skanif test -f $gcc_cv_binutils_srcdir/configure.in \ 2001169689Skan && test -f ../binutils/Makefile \ 2002169689Skan && test x$build = x$host; then 2003169689Skan # Single tree build which includes binutils. 2004169689Skan gcc_cv_objdump=../binutils/objdump$build_exeext 2005169689Skanelif test -x objdump$build_exeext; then 2006169689Skan gcc_cv_objdump=./objdump$build_exeext 2007169689Skanelif test -x $OBJDUMP_FOR_TARGET; then 2008169689Skan gcc_cv_objdump="$OBJDUMP_FOR_TARGET" 2009169689Skanelse 2010169689Skan AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) 2011169689Skanfi]) 2012169689Skan 2013132718SkanAC_MSG_CHECKING(what objdump to use) 2014169689Skanif test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then 2015132718Skan # Single tree build which includes binutils. 2016169689Skan AC_MSG_RESULT(newly built objdump) 2017169689Skanelif test x$gcc_cv_objdump = x; then 2018169689Skan AC_MSG_RESULT(not found) 2019132718Skanelse 2020169689Skan AC_MSG_RESULT($gcc_cv_objdump) 2021132718Skanfi 2022132718Skan 2023132718Skan# Figure out what assembler alignment features are present. 2024132718Skangcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align, 2025132718Skan [2,6,0],, 2026132718Skan[.balign 4 2027132718Skan.p2align 2],, 2028132718Skan[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1, 2029132718Skan [Define if your assembler supports .balign and .p2align.])]) 2030132718Skan 2031132718Skangcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align, 2032132718Skan [2,8,0],, 2033132718Skan [.p2align 4,,7],, 2034132718Skan[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1, 2035132718Skan [Define if your assembler supports specifying the maximum number 2036132718Skan of bytes to skip when using the GAS .p2align command.])]) 2037132718Skan 2038132718Skangcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1, 2039132718Skan [elf,2,9,0],, 2040132718Skan [conftest_label1: .word 0 2041132718Skan.subsection -1 2042132718Skanconftest_label2: .word 0 2043132718Skan.previous], 2044132718Skan [if test x$gcc_cv_nm != x; then 2045132718Skan $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 2046132718Skan $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 2047132718Skan if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1 2048132718Skan then : 2049132718Skan else gcc_cv_as_subsection_m1=yes 2050132718Skan fi 2051132718Skan rm -f conftest.nm1 conftest.nm2 2052132718Skan fi], 2053132718Skan [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1, 2054132718Skan [Define if your assembler supports .subsection and .subsection -1 starts 2055132718Skan emitting at the beginning of your section.])]) 2056132718Skan 2057132718Skangcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak, 2058132718Skan [2,2,0],, 2059132718Skan [ .weak foobar],, 2060132718Skan[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])]) 2061132718Skan 2062169689Skangcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref, 2063169689Skan [2,17,0],, 2064169689Skan [ .weakref foobar, barfnot],, 2065169689Skan[AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])]) 2066169689Skan 2067146895Skangcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat, 2068146895Skan [2,15,91],, 2069146895Skan [ .SPACE $TEXT$ 2070146895Skan .NSUBSPA $CODE$,COMDAT],, 2071146895Skan[AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])]) 2072146895Skan 2073132718Skan# .hidden needs to be supported in both the assembler and the linker, 2074132718Skan# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN. 2075132718Skan# This is irritatingly difficult to feature test for; we have to check the 2076132718Skan# date string after the version number. If we've got an in-tree 2077132718Skan# ld, we don't know its patchlevel version, so we set the baseline at 2.13 2078132718Skan# to be safe. 2079132718Skan# The gcc_GAS_CHECK_FEATURE call just sets a cache variable. 2080132718Skangcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden, 2081132718Skan [elf,2,13,0],, 2082132718Skan[ .hidden foobar 2083132718Skanfoobar:]) 2084132718Skan 2085132718SkanAC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden, 2086132718Skan[if test $in_tree_ld = yes ; then 2087132718Skan gcc_cv_ld_hidden=no 2088132718Skan 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 \ 2089132718Skan && test $in_tree_ld_is_elf = yes; then 2090132718Skan gcc_cv_ld_hidden=yes 2091132718Skan fi 2092132718Skanelse 2093132718Skan gcc_cv_ld_hidden=yes 2094132718Skan ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q` 2095132718Skan if echo "$ld_ver" | grep GNU > /dev/null; then 2096132718Skanchangequote(,)dnl 2097132718Skan ld_vers=`echo $ld_ver | sed -n \ 2098132718Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ 2099132718Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ 2100132718Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ 2101132718Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ 2102132718Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ 2103169689Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ 2104169689Skan -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ -].*$,\1,p'` 2105132718Skan 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'` 2106169689Skan ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` 2107169689Skan ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` 2108169689Skan ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'` 2109132718Skan if test 0"$ld_date" -lt 20020404; then 2110132718Skan if test -n "$ld_date"; then 2111132718Skan # If there was date string, but was earlier than 2002-04-04, fail 2112132718Skan gcc_cv_ld_hidden=no 2113132718Skan elif test -z "$ld_vers"; then 2114132718Skan # If there was no date string nor ld version number, something is wrong 2115132718Skan gcc_cv_ld_hidden=no 2116132718Skan else 2117132718Skan test -z "$ld_vers_patch" && ld_vers_patch=0 2118132718Skan if test "$ld_vers_major" -lt 2; then 2119132718Skan gcc_cv_ld_hidden=no 2120132718Skan elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then 2121132718Skan gcc_cv_ld_hidden="no" 2122132718Skan elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then 2123132718Skan gcc_cv_ld_hidden=no 2124132718Skan fi 2125132718Skan fi 2126132718Skanchangequote([,])dnl 2127132718Skan fi 2128132718Skan else 2129132718Skan case "${target}" in 2130132718Skan hppa64*-*-hpux* | ia64*-*-hpux*) 2131132718Skan gcc_cv_ld_hidden=yes 2132132718Skan ;; 2133132718Skan *) 2134132718Skan gcc_cv_ld_hidden=no 2135132718Skan ;; 2136132718Skan esac 2137132718Skan fi 2138132718Skanfi]) 2139132718Skanlibgcc_visibility=no 2140132718SkanAC_SUBST(libgcc_visibility) 2141169689SkanGCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN]) 2142132718Skanif test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then 2143132718Skan libgcc_visibility=yes 2144132718Skan AC_DEFINE(HAVE_GAS_HIDDEN, 1, 2145132718Skan [Define if your assembler and linker support .hidden.]) 2146132718Skanfi 2147132718Skan 2148132718Skan# Check if we have .[us]leb128, and support symbol arithmetic with it. 2149132718Skangcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128, 2150132718Skan [elf,2,11,0],, 2151132718Skan[ .data 2152132718Skan .uleb128 L2 - L1 2153132718SkanL1: 2154132718Skan .uleb128 1280 2155132718Skan .sleb128 -1010 2156132718SkanL2:], 2157132718Skan [# GAS versions before 2.11 do not support uleb128, 2158132718Skan # despite appearing to. 2159132718Skan # ??? There exists an elf-specific test that will crash 2160132718Skan # the assembler. Perhaps it's better to figure out whether 2161132718Skan # arbitrary sections are supported and try the test. 2162132718Skan as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q` 2163132718Skan if echo "$as_ver" | grep GNU > /dev/null; then 2164132718Skanchangequote(,)dnl 2165132718Skan as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'` 2166132718Skan as_major=`echo $as_ver | sed 's/\..*//'` 2167132718Skan as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'` 2168132718Skanchangequote([,])dnl 2169132718Skan if test $as_major -eq 2 && test $as_minor -lt 11 2170132718Skan then : 2171132718Skan else gcc_cv_as_leb128=yes 2172132718Skan fi 2173132718Skan fi], 2174132718Skan [AC_DEFINE(HAVE_AS_LEB128, 1, 2175132718Skan [Define if your assembler supports .sleb128 and .uleb128.])]) 2176132718Skan 2177132718Skan# GAS versions up to and including 2.11.0 may mis-optimize 2178132718Skan# .eh_frame data. 2179132718Skangcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame, 2180132718Skan [elf,2,12,0],, 2181132718Skan[ .text 2182132718Skan.LFB1: 2183132718Skan .4byte 0 2184132718Skan.L1: 2185132718Skan .4byte 0 2186132718Skan.LFE1: 2187132718Skan .section .eh_frame,"aw",@progbits 2188132718Skan__FRAME_BEGIN__: 2189132718Skan .4byte .LECIE1-.LSCIE1 2190132718Skan.LSCIE1: 2191132718Skan .4byte 0x0 2192132718Skan .byte 0x1 2193132718Skan .ascii "z\0" 2194132718Skan .byte 0x1 2195132718Skan .byte 0x78 2196132718Skan .byte 0x1a 2197132718Skan .byte 0x0 2198132718Skan .byte 0x4 2199132718Skan .4byte 1 2200132718Skan .p2align 1 2201132718Skan.LECIE1: 2202132718Skan.LSFDE1: 2203132718Skan .4byte .LEFDE1-.LASFDE1 2204132718Skan.LASFDE1: 2205132718Skan .4byte .LASFDE1-__FRAME_BEGIN__ 2206132718Skan .4byte .LFB1 2207132718Skan .4byte .LFE1-.LFB1 2208132718Skan .byte 0x4 2209132718Skan .4byte .LFE1-.LFB1 2210132718Skan .byte 0x4 2211132718Skan .4byte .L1-.LFB1 2212132718Skan.LEFDE1:], 2213132718Skan[ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@. 2214132718Skancat > conftest.lit <<EOF 2215132718Skan 0000 10000000 00000000 017a0001 781a0004 .........z..x... 2216132718Skan 0010 01000000 12000000 18000000 00000000 ................ 2217132718Skan 0020 08000000 04080000 0044 .........D @&t@ 2218132718SkanEOF 2219132718Skancat > conftest.big <<EOF 2220132718Skan 0000 00000010 00000000 017a0001 781a0004 .........z..x... 2221132718Skan 0010 00000001 00000012 00000018 00000000 ................ 2222132718Skan 0020 00000008 04000000 0844 .........D @&t@ 2223132718SkanEOF 2224132718Skan # If the assembler didn't choke, and we can objdump, 2225132718Skan # and we got the correct data, then succeed. 2226169689Skan # The text in the here-document typically retains its unix-style line 2227169689Skan # endings, while the output of objdump will use host line endings. 2228169689Skan # Therefore, use diff -b for the comparisons. 2229132718Skan if test x$gcc_cv_objdump != x \ 2230132718Skan && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \ 2231132718Skan | tail -3 > conftest.got \ 2232169689Skan && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \ 2233169689Skan || diff -b conftest.big conftest.got > /dev/null 2>&1; } 2234132718Skan then 2235132718Skan gcc_cv_as_eh_frame=yes 2236132718Skan elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then 2237132718Skan gcc_cv_as_eh_frame=buggy 2238132718Skan else 2239132718Skan # Uh oh, what do we do now? 2240132718Skan gcc_cv_as_eh_frame=no 2241132718Skan fi]) 2242132718Skan 2243132718Skanif test $gcc_cv_as_eh_frame = buggy; then 2244132718Skan AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1, 2245132718Skan [Define if your assembler mis-optimizes .eh_frame data.]) 2246132718Skanfi 2247132718Skan 2248132718Skangcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge, 2249132718Skan [elf,2,12,0], [--fatal-warnings], 2250132718Skan [.section .rodata.str, "aMS", @progbits, 1]) 2251169689Skanif test $gcc_cv_as_shf_merge = no; then 2252169689Skan gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge, 2253169689Skan [elf,2,12,0], [--fatal-warnings], 2254169689Skan [.section .rodata.str, "aMS", %progbits, 1]) 2255169689Skanfi 2256132718SkanAC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE, 2257132718Skan [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`], 2258132718Skan[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.]) 2259132718Skan 2260169689Skangcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group, 2261169689Skan [elf,2,16,0], [--fatal-warnings], 2262169689Skan [.section .text,"axG",@progbits,.foo,comdat]) 2263169689Skanif test $gcc_cv_as_comdat_group = yes; then 2264169689Skan gcc_cv_as_comdat_group_percent=no 2265169689Skanelse 2266169689Skan gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent, 2267169689Skan [elf,2,16,0], [--fatal-warnings], 2268169689Skan [.section .text,"axG",%progbits,.foo,comdat]) 2269169689Skanfi 2270169689Skanif test $in_tree_ld != yes && test x"$ld_vers" != x; then 2271169689Skan comdat_group=yes 2272169689Skan if test 0"$ld_date" -lt 20050308; then 2273169689Skan if test -n "$ld_date"; then 2274169689Skan # If there was date string, but was earlier than 2005-03-08, fail 2275169689Skan comdat_group=no 2276169689Skan elif test "$ld_vers_major" -lt 2; then 2277169689Skan comdat_group=no 2278169689Skan elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then 2279169689Skan comdat_group=no 2280169689Skan fi 2281169689Skan fi 2282169689Skanelse 2283169689Skan # assume linkers other than GNU ld don't support COMDAT group 2284169689Skan comdat_group=no 2285169689Skanfi 2286169689Skanif test $comdat_group = no; then 2287169689Skan gcc_cv_as_comdat_group=no 2288169689Skan gcc_cv_as_comdat_group_percent=no 2289169689Skanfi 2290169689SkanAC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP, 2291169689Skan [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`], 2292169689Skan[Define 0/1 if your assembler and linker support COMDAT groups.]) 2293169689Skan 2294132718Skan# Thread-local storage - the check is heavily parametrized. 2295132718Skanconftest_s= 2296132718Skantls_first_major= 2297132718Skantls_first_minor= 2298132718Skantls_as_opt= 2299132718Skancase "$target" in 2300132718Skanchangequote(,)dnl 2301132718Skan alpha*-*-*) 2302132718Skan conftest_s=' 2303132718Skan .section ".tdata","awT",@progbits 2304132718Skanfoo: .long 25 2305132718Skan .text 2306132718Skan ldq $27,__tls_get_addr($29) !literal!1 2307132718Skan lda $16,foo($29) !tlsgd!1 2308132718Skan jsr $26,($27),__tls_get_addr !lituse_tlsgd!1 2309132718Skan ldq $27,__tls_get_addr($29) !literal!2 2310132718Skan lda $16,foo($29) !tlsldm!2 2311132718Skan jsr $26,($27),__tls_get_addr !lituse_tlsldm!2 2312132718Skan ldq $1,foo($29) !gotdtprel 2313132718Skan ldah $2,foo($29) !dtprelhi 2314132718Skan lda $3,foo($2) !dtprello 2315132718Skan lda $4,foo($29) !dtprel 2316132718Skan ldq $1,foo($29) !gottprel 2317132718Skan ldah $2,foo($29) !tprelhi 2318132718Skan lda $3,foo($2) !tprello 2319132718Skan lda $4,foo($29) !tprel' 2320132718Skan tls_first_major=2 2321132718Skan tls_first_minor=13 2322132718Skan tls_as_opt=--fatal-warnings 2323132718Skan ;; 2324169689Skan frv*-*-*) 2325169689Skan conftest_s=' 2326169689Skan .section ".tdata","awT",@progbits 2327169689Skanx: .long 25 2328169689Skan .text 2329169689Skan call #gettlsoff(x)' 2330169689Skan tls_first_major=2 2331169689Skan tls_first_minor=14 2332169689Skan ;; 2333169689Skan hppa*-*-linux*) 2334169689Skan conftest_s=' 2335169689Skant1: .reg %r20 2336169689Skant2: .reg %r21 2337169689Skangp: .reg %r19 2338169689Skan .section ".tdata","awT",@progbits 2339169689Skanfoo: .long 25 2340169689Skan .text 2341169689Skan .align 4 2342169689Skan addil LT%foo-$tls_gdidx$,gp 2343169689Skan ldo RT%foo-$tls_gdidx$(%r1),%arg0 2344169689Skan b __tls_get_addr 2345169689Skan nop 2346169689Skan addil LT%foo-$tls_ldidx$,gp 2347169689Skan b __tls_get_addr 2348169689Skan ldo RT%foo-$tls_ldidx$(%r1),%arg0 2349169689Skan addil LR%foo-$tls_dtpoff$,%ret0 2350169689Skan ldo RR%foo-$tls_dtpoff$(%r1),%t1 2351169689Skan mfctl %cr27,%t1 2352169689Skan addil LT%foo-$tls_ieoff$,gp 2353169689Skan ldw RT%foo-$tls_ieoff$(%r1),%t2 2354169689Skan add %t1,%t2,%t3 2355169689Skan mfctl %cr27,%t1 2356169689Skan addil LR%foo-$tls_leoff$,%t1 2357169689Skan ldo RR%foo-$tls_leoff$(%r1),%t2' 2358169689Skan tls_first_major=2 2359169689Skan tls_first_minor=15 2360169689Skan tls_as_opt=--fatal-warnings 2361169689Skan ;; 2362169689Skan arm*-*-*) 2363169689Skan conftest_s=' 2364169689Skan .section ".tdata","awT",%progbits 2365169689Skanfoo: .long 25 2366169689Skan .text 2367169689Skan.word foo(gottpoff) 2368169689Skan.word foo(tpoff) 2369169689Skan.word foo(tlsgd) 2370169689Skan.word foo(tlsldm) 2371169689Skan.word foo(tlsldo)' 2372169689Skan tls_first_major=2 2373169689Skan tls_first_minor=17 2374169689Skan ;; 2375132718Skan i[34567]86-*-*) 2376132718Skan conftest_s=' 2377132718Skan .section ".tdata","awT",@progbits 2378132718Skanfoo: .long 25 2379132718Skan .text 2380132718Skan movl %gs:0, %eax 2381132718Skan leal foo@TLSGD(,%ebx,1), %eax 2382132718Skan leal foo@TLSLDM(%ebx), %eax 2383132718Skan leal foo@DTPOFF(%eax), %edx 2384132718Skan movl foo@GOTTPOFF(%ebx), %eax 2385132718Skan subl foo@GOTTPOFF(%ebx), %eax 2386132718Skan addl foo@GOTNTPOFF(%ebx), %eax 2387132718Skan movl foo@INDNTPOFF, %eax 2388132718Skan movl $foo@TPOFF, %eax 2389132718Skan subl $foo@TPOFF, %eax 2390132718Skan leal foo@NTPOFF(%ecx), %eax' 2391132718Skan tls_first_major=2 2392132718Skan tls_first_minor=14 2393132718Skan tls_as_opt=--fatal-warnings 2394132718Skan ;; 2395132718Skan x86_64-*-*) 2396132718Skan conftest_s=' 2397132718Skan .section ".tdata","awT",@progbits 2398132718Skanfoo: .long 25 2399132718Skan .text 2400132718Skan movq %fs:0, %rax 2401132718Skan leaq foo@TLSGD(%rip), %rdi 2402132718Skan leaq foo@TLSLD(%rip), %rdi 2403132718Skan leaq foo@DTPOFF(%rax), %rdx 2404132718Skan movq foo@GOTTPOFF(%rip), %rax 2405132718Skan movq $foo@TPOFF, %rax' 2406132718Skan tls_first_major=2 2407132718Skan tls_first_minor=14 2408132718Skan tls_as_opt=--fatal-warnings 2409132718Skan ;; 2410132718Skan ia64-*-*) 2411132718Skan conftest_s=' 2412132718Skan .section ".tdata","awT",@progbits 2413132718Skanfoo: data8 25 2414132718Skan .text 2415132718Skan addl r16 = @ltoff(@dtpmod(foo#)), gp 2416132718Skan addl r17 = @ltoff(@dtprel(foo#)), gp 2417132718Skan addl r18 = @ltoff(@tprel(foo#)), gp 2418132718Skan addl r19 = @dtprel(foo#), gp 2419132718Skan adds r21 = @dtprel(foo#), r13 2420132718Skan movl r23 = @dtprel(foo#) 2421132718Skan addl r20 = @tprel(foo#), gp 2422132718Skan adds r22 = @tprel(foo#), r13 2423132718Skan movl r24 = @tprel(foo#)' 2424132718Skan tls_first_major=2 2425132718Skan tls_first_minor=13 2426132718Skan tls_as_opt=--fatal-warnings 2427132718Skan ;; 2428169689Skan mips*-*-*) 2429169689Skan conftest_s=' 2430169689Skan .section .tdata,"awT",@progbits 2431169689Skanx: 2432169689Skan .word 2 2433169689Skan .text 2434169689Skan addiu $4, $28, %tlsgd(x) 2435169689Skan addiu $4, $28, %tlsldm(x) 2436169689Skan lui $4, %dtprel_hi(x) 2437169689Skan addiu $4, $4, %dtprel_lo(x) 2438169689Skan lw $4, %gottprel(x)($28) 2439169689Skan lui $4, %tprel_hi(x) 2440169689Skan addiu $4, $4, %tprel_lo(x)' 2441169689Skan tls_first_major=2 2442169689Skan tls_first_minor=16 2443169689Skan tls_as_opt='-32 --fatal-warnings' 2444169689Skan ;; 2445132718Skan powerpc-*-*) 2446132718Skan conftest_s=' 2447132718Skan .section ".tdata","awT",@progbits 2448132718Skan .align 2 2449132718Skanld0: .space 4 2450132718Skanld1: .space 4 2451132718Skanx1: .space 4 2452132718Skanx2: .space 4 2453132718Skanx3: .space 4 2454132718Skan .text 2455132718Skan addi 3,31,ld0@got@tlsgd 2456132718Skan bl __tls_get_addr 2457132718Skan addi 3,31,x1@got@tlsld 2458132718Skan bl __tls_get_addr 2459132718Skan addi 9,3,x1@dtprel 2460132718Skan addis 9,3,x2@dtprel@ha 2461132718Skan addi 9,9,x2@dtprel@l 2462132718Skan lwz 9,x3@got@tprel(31) 2463132718Skan add 9,9,x@tls 2464132718Skan addi 9,2,x1@tprel 2465132718Skan addis 9,2,x2@tprel@ha 2466132718Skan addi 9,9,x2@tprel@l' 2467132718Skan tls_first_major=2 2468132718Skan tls_first_minor=14 2469132718Skan tls_as_opt="-a32 --fatal-warnings" 2470132718Skan ;; 2471132718Skan powerpc64-*-*) 2472132718Skan conftest_s=' 2473132718Skan .section ".tdata","awT",@progbits 2474132718Skan .align 3 2475132718Skanld0: .space 8 2476132718Skanld1: .space 8 2477132718Skanx1: .space 8 2478132718Skanx2: .space 8 2479132718Skanx3: .space 8 2480132718Skan .text 2481132718Skan addi 3,2,ld0@got@tlsgd 2482132718Skan bl .__tls_get_addr 2483132718Skan nop 2484132718Skan addi 3,2,ld1@toc 2485132718Skan bl .__tls_get_addr 2486132718Skan nop 2487132718Skan addi 3,2,x1@got@tlsld 2488132718Skan bl .__tls_get_addr 2489132718Skan nop 2490132718Skan addi 9,3,x1@dtprel 2491132718Skan bl .__tls_get_addr 2492132718Skan nop 2493132718Skan addis 9,3,x2@dtprel@ha 2494132718Skan addi 9,9,x2@dtprel@l 2495132718Skan bl .__tls_get_addr 2496132718Skan nop 2497132718Skan ld 9,x3@got@dtprel(2) 2498132718Skan add 9,9,3 2499132718Skan bl .__tls_get_addr 2500132718Skan nop' 2501132718Skan tls_first_major=2 2502132718Skan tls_first_minor=14 2503132718Skan tls_as_opt="-a64 --fatal-warnings" 2504132718Skan ;; 2505132718Skan s390-*-*) 2506132718Skan conftest_s=' 2507132718Skan .section ".tdata","awT",@progbits 2508132718Skanfoo: .long 25 2509132718Skan .text 2510132718Skan .long foo@TLSGD 2511132718Skan .long foo@TLSLDM 2512132718Skan .long foo@DTPOFF 2513132718Skan .long foo@NTPOFF 2514132718Skan .long foo@GOTNTPOFF 2515132718Skan .long foo@INDNTPOFF 2516132718Skan l %r1,foo@GOTNTPOFF(%r12) 2517132718Skan l %r1,0(%r1):tls_load:foo 2518132718Skan bas %r14,0(%r1,%r13):tls_gdcall:foo 2519132718Skan bas %r14,0(%r1,%r13):tls_ldcall:foo' 2520132718Skan tls_first_major=2 2521132718Skan tls_first_minor=14 2522132718Skan tls_as_opt="-m31 --fatal-warnings" 2523132718Skan ;; 2524132718Skan s390x-*-*) 2525132718Skan conftest_s=' 2526132718Skan .section ".tdata","awT",@progbits 2527132718Skanfoo: .long 25 2528132718Skan .text 2529132718Skan .quad foo@TLSGD 2530132718Skan .quad foo@TLSLDM 2531132718Skan .quad foo@DTPOFF 2532132718Skan .quad foo@NTPOFF 2533132718Skan .quad foo@GOTNTPOFF 2534132718Skan lg %r1,foo@GOTNTPOFF(%r12) 2535132718Skan larl %r1,foo@INDNTPOFF 2536132718Skan brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo 2537132718Skan brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo' 2538132718Skan tls_first_major=2 2539132718Skan tls_first_minor=14 2540132718Skan tls_as_opt="-m64 -Aesame --fatal-warnings" 2541132718Skan ;; 2542132718Skan sh-*-* | sh[34]-*-*) 2543132718Skan conftest_s=' 2544132718Skan .section ".tdata","awT",@progbits 2545132718Skanfoo: .long 25 2546132718Skan .text 2547132718Skan .long foo@TLSGD 2548132718Skan .long foo@TLSLDM 2549132718Skan .long foo@DTPOFF 2550132718Skan .long foo@GOTTPOFF 2551132718Skan .long foo@TPOFF' 2552132718Skan tls_first_major=2 2553132718Skan tls_first_minor=13 2554132718Skan tls_as_opt=--fatal-warnings 2555132718Skan ;; 2556132718Skan sparc*-*-*) 2557132718Skan case "$target" in 2558169689Skan sparc*-sun-solaris2.[56789]*) 2559169689Skan # TLS was introduced in the Solaris 9 4/04 release but 2560169689Skan # we do not enable it by default on Solaris 9 either. 2561169689Skan if test "x$enable_tls" = xyes ; then 2562169689Skan on_solaris=yes 2563169689Skan else 2564169689Skan enable_tls=no; 2565169689Skan fi 2566169689Skan ;; 2567132718Skan sparc*-sun-solaris2.*) 2568132718Skan on_solaris=yes 2569132718Skan ;; 2570132718Skan *) 2571132718Skan on_solaris=no 2572132718Skan ;; 2573132718Skan esac 2574132718Skan if test x$on_solaris = xyes && test x$gas_flag = xno; then 2575132718Skan conftest_s=' 2576132718Skan .section ".tdata",#alloc,#write,#tls 2577132718Skanfoo: .long 25 2578132718Skan .text 2579132718Skan sethi %tgd_hi22(foo), %o0 2580132718Skan add %o0, %tgd_lo10(foo), %o1 2581132718Skan add %l7, %o1, %o0, %tgd_add(foo) 2582132718Skan call __tls_get_addr, %tgd_call(foo) 2583132718Skan sethi %tldm_hi22(foo), %l1 2584132718Skan add %l1, %tldm_lo10(foo), %l2 2585132718Skan add %l7, %l2, %o0, %tldm_add(foo) 2586132718Skan call __tls_get_addr, %tldm_call(foo) 2587132718Skan sethi %tldo_hix22(foo), %l3 2588132718Skan xor %l3, %tldo_lox10(foo), %l4 2589132718Skan add %o0, %l4, %l5, %tldo_add(foo) 2590132718Skan sethi %tie_hi22(foo), %o3 2591132718Skan add %o3, %tie_lo10(foo), %o3 2592132718Skan ld [%l7 + %o3], %o2, %tie_ld(foo) 2593132718Skan add %g7, %o2, %o4, %tie_add(foo) 2594132718Skan sethi %tle_hix22(foo), %l1 2595132718Skan xor %l1, %tle_lox10(foo), %o5 2596132718Skan ld [%g7 + %o5], %o1' 2597132718Skan tls_first_major=0 2598132718Skan tls_first_minor=0 2599132718Skan else 2600132718Skan conftest_s=' 2601132718Skan .section ".tdata","awT",@progbits 2602132718Skanfoo: .long 25 2603132718Skan .text 2604132718Skan sethi %tgd_hi22(foo), %o0 2605132718Skan add %o0, %tgd_lo10(foo), %o1 2606132718Skan add %l7, %o1, %o0, %tgd_add(foo) 2607132718Skan call __tls_get_addr, %tgd_call(foo) 2608132718Skan sethi %tldm_hi22(foo), %l1 2609132718Skan add %l1, %tldm_lo10(foo), %l2 2610132718Skan add %l7, %l2, %o0, %tldm_add(foo) 2611132718Skan call __tls_get_addr, %tldm_call(foo) 2612132718Skan sethi %tldo_hix22(foo), %l3 2613132718Skan xor %l3, %tldo_lox10(foo), %l4 2614132718Skan add %o0, %l4, %l5, %tldo_add(foo) 2615132718Skan sethi %tie_hi22(foo), %o3 2616132718Skan add %o3, %tie_lo10(foo), %o3 2617132718Skan ld [%l7 + %o3], %o2, %tie_ld(foo) 2618132718Skan add %g7, %o2, %o4, %tie_add(foo) 2619132718Skan sethi %tle_hix22(foo), %l1 2620132718Skan xor %l1, %tle_lox10(foo), %o5 2621132718Skan ld [%g7 + %o5], %o1' 2622132718Skan tls_first_major=2 2623132718Skan tls_first_minor=14 2624132718Skan tls_as_opt="-32 --fatal-warnings" 2625132718Skan fi 2626132718Skan ;; 2627132718Skanchangequote([,])dnl 2628132718Skanesac 2629169689Skanset_have_as_tls=no 2630169689Skanif test "x$enable_tls" = xno ; then 2631169689Skan : # TLS explicitly disabled. 2632169689Skanelif test "x$enable_tls" = xyes ; then 2633169689Skan set_have_as_tls=yes # TLS explicitly enabled. 2634169689Skanelif test -z "$tls_first_major"; then 2635132718Skan : # If we don't have a check, assume no support. 2636132718Skanelse 2637132718Skan gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls, 2638132718Skan [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],, 2639169689Skan [set_have_as_tls=yes]) 2640132718Skanfi 2641169689Skanif test $set_have_as_tls = yes ; then 2642169689Skan AC_DEFINE(HAVE_AS_TLS, 1, 2643169689Skan [Define if your assembler supports thread-local storage.]) 2644169689Skanfi 2645132718Skan 2646132718Skan# Target-specific assembler checks. 2647132718Skan 2648169689SkanAC_MSG_CHECKING(linker -Bstatic/-Bdynamic option) 2649169689Skangcc_cv_ld_static_dynamic=no 2650169689Skanif test $in_tree_ld = yes ; then 2651169689Skan if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then 2652169689Skan gcc_cv_ld_static_dynamic=yes 2653169689Skan fi 2654169689Skanelif test x$gcc_cv_ld != x; then 2655169689Skan # Check if linker supports -Bstatic/-Bdynamic option 2656169689Skan if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \ 2657169689Skan && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then 2658169689Skan gcc_cv_ld_static_dynamic=yes 2659169689Skan fi 2660169689Skanfi 2661169689Skanif test x"$gcc_cv_ld_static_dynamic" = xyes; then 2662169689Skan AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1, 2663169689Skan[Define if your linker supports -Bstatic/-Bdynamic option.]) 2664169689Skanfi 2665169689SkanAC_MSG_RESULT($gcc_cv_ld_static_dynamic) 2666169689Skan 2667169689Skanif test x"$demangler_in_ld" = xyes; then 2668169689Skan AC_MSG_CHECKING(linker --demangle support) 2669169689Skan gcc_cv_ld_demangle=no 2670169689Skan if test $in_tree_ld = yes; then 2671169689Skan 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 \ 2672169689Skan gcc_cv_ld_demangle=yes 2673169689Skan fi 2674169689Skan elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then 2675169689Skan # Check if the GNU linker supports --demangle option 2676169689Skan if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then 2677169689Skan gcc_cv_ld_demangle=yes 2678169689Skan fi 2679169689Skan fi 2680169689Skan if test x"$gcc_cv_ld_demangle" = xyes; then 2681169689Skan AC_DEFINE(HAVE_LD_DEMANGLE, 1, 2682169689Skan[Define if your linker supports --demangle option.]) 2683169689Skan fi 2684169689Skan AC_MSG_RESULT($gcc_cv_ld_demangle) 2685169689Skanfi 2686169689Skan 2687132718Skancase "$target" in 2688132718Skan # All TARGET_ABI_OSF targets. 2689132718Skan alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*) 2690132718Skan gcc_GAS_CHECK_FEATURE([explicit relocation support], 2691132718Skan gcc_cv_as_alpha_explicit_relocs, [2,12,0],, 2692132718Skan[ .set nomacro 2693132718Skan .text 2694132718Skan extbl $3, $2, $3 !lituse_bytoff!1 2695132718Skan ldq $2, a($29) !literal!1 2696132718Skan ldq $4, b($29) !literal!2 2697132718Skan ldq_u $3, 0($2) !lituse_base!1 2698132718Skan ldq $27, f($29) !literal!5 2699132718Skan jsr $26, ($27), f !lituse_jsr!5 2700132718Skan ldah $29, 0($26) !gpdisp!3 2701132718Skan lda $0, c($29) !gprel 2702132718Skan ldah $1, d($29) !gprelhigh 2703132718Skan lda $1, d($1) !gprellow 2704132718Skan lda $29, 0($29) !gpdisp!3],, 2705132718Skan [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1, 2706132718Skan [Define if your assembler supports explicit relocations.])]) 2707161651Skan gcc_GAS_CHECK_FEATURE([jsrdirect relocation support], 2708161651Skan gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],, 2709161651Skan[ .set nomacro 2710161651Skan .text 2711161651Skan ldq $27, a($29) !literal!1 2712161651Skan jsr $26, ($27), a !lituse_jsrdirect!1],, 2713161651Skan [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1, 2714161651Skan [Define if your assembler supports the lituse_jsrdirect relocation.])]) 2715132718Skan ;; 2716132718Skan 2717132718Skan cris-*-*) 2718132718Skan gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option], 2719132718Skan gcc_cv_as_cris_no_mul_bug,[2,15,91], 2720132718Skan [-no-mul-bug-abort], [.text],, 2721132718Skan [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1, 2722132718Skan [Define if your assembler supports the -no-mul-bug-abort option.])]) 2723132718Skan ;; 2724132718Skan 2725132718Skan sparc*-*-*) 2726132718Skan gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,, 2727132718Skan [.register %g2, #scratch],, 2728132718Skan [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1, 2729132718Skan [Define if your assembler supports .register.])]) 2730132718Skan 2731132718Skan gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,, 2732132718Skan [-relax], [.text],, 2733132718Skan [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1, 2734132718Skan [Define if your assembler supports -relax option.])]) 2735132718Skan 2736132718Skan gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs], 2737132718Skan gcc_cv_as_sparc_ua_pcrel,, 2738132718Skan [-K PIC], 2739132718Skan[.text 2740132718Skanfoo: 2741132718Skan nop 2742132718Skan.data 2743132718Skan.align 4 2744132718Skan.byte 0 2745132718Skan.uaword %r_disp32(foo)], 2746132718Skan [if test x$gcc_cv_ld != x \ 2747132718Skan && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then 2748132718Skan gcc_cv_as_sparc_ua_pcrel=yes 2749132718Skan fi 2750132718Skan rm -f conftest], 2751132718Skan [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1, 2752132718Skan [Define if your assembler and linker support unaligned PC relative relocs.]) 2753132718Skan 2754132718Skan gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols], 2755132718Skan gcc_cv_as_sparc_ua_pcrel_hidden,, 2756132718Skan [-K PIC], 2757132718Skan[.data 2758132718Skan.align 4 2759132718Skan.byte 0x31 2760132718Skan.uaword %r_disp32(foo) 2761132718Skan.byte 0x32, 0x33, 0x34 2762132718Skan.global foo 2763132718Skan.hidden foo 2764132718Skanfoo: 2765132718Skan.skip 4], 2766132718Skan [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \ 2767132718Skan && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \ 2768132718Skan && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \ 2769132718Skan | grep ' 31000000 07323334' > /dev/null 2>&1; then 2770132718Skan if $gcc_cv_objdump -R conftest 2> /dev/null \ 2771132718Skan | grep 'DISP32' > /dev/null 2>&1; then 2772132718Skan : 2773132718Skan else 2774132718Skan gcc_cv_as_sparc_ua_pcrel_hidden=yes 2775132718Skan fi 2776132718Skan fi 2777132718Skan rm -f conftest], 2778132718Skan [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1, 2779132718Skan [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])]) 2780132718Skan ]) # unaligned pcrel relocs 2781132718Skan 2782132718Skan gcc_GAS_CHECK_FEATURE([offsetable %lo()], 2783132718Skan gcc_cv_as_sparc_offsetable_lo10,, 2784132718Skan [-xarch=v9], 2785132718Skan[.text 2786132718Skan or %g1, %lo(ab) + 12, %g1 2787132718Skan or %g1, %lo(ab + 12), %g1], 2788132718Skan [if test x$gcc_cv_objdump != x \ 2789132718Skan && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \ 2790132718Skan | grep ' 82106000 82106000' > /dev/null 2>&1; then 2791146895Skan gcc_cv_as_sparc_offsetable_lo10=yes 2792132718Skan fi], 2793132718Skan [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1, 2794132718Skan [Define if your assembler supports offsetable %lo().])]) 2795132718Skan ;; 2796132718Skan 2797132718Skanchangequote(,)dnl 2798132718Skan i[34567]86-*-* | x86_64-*-*) 2799132718Skanchangequote([,])dnl 2800169689Skan case $target_os in 2801169689Skan cygwin* | pe | mingw32*) 2802169689Skan # Used for DWARF 2 in PE 2803169689Skan gcc_GAS_CHECK_FEATURE([.secrel32 relocs], 2804169689Skan gcc_cv_as_ix86_pe_secrel32, 2805169689Skan [2,15,91],, 2806169689Skan[.text 2807169689Skanfoo: nop 2808169689Skan.data 2809169689Skan .secrel32 foo], 2810169689Skan [if test x$gcc_cv_ld != x \ 2811169689Skan && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then 2812169689Skan gcc_cv_as_ix86_pe_secrel32=yes 2813169689Skan fi 2814169689Skan rm -f conftest], 2815169689Skan [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1, 2816169689Skan [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])]) 2817169689Skan ;; 2818169689Skan esac 2819169689Skan 2820132718Skan gcc_GAS_CHECK_FEATURE([filds and fists mnemonics], 2821132718Skan gcc_cv_as_ix86_filds_fists, 2822132718Skan [2,9,0],, [filds mem; fists mem],, 2823132718Skan [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1, 2824132718Skan [Define if your assembler uses the new HImode fild and fist notation.])]) 2825132718Skan 2826132718Skan gcc_GAS_CHECK_FEATURE([cmov syntax], 2827132718Skan gcc_cv_as_ix86_cmov_sun_syntax,,, 2828132718Skan [cmovl.l %edx, %eax],, 2829132718Skan [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1, 2830132718Skan [Define if your assembler supports the Sun syntax for cmov.])]) 2831132718Skan 2832169689Skan gcc_GAS_CHECK_FEATURE([ffreep mnemonic], 2833169689Skan gcc_cv_as_ix86_ffreep,,, 2834169689Skan [ffreep %st(1)],, 2835169689Skan [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1, 2836169689Skan [Define if your assembler supports the ffreep mnemonic.])]) 2837169689Skan 2838132718Skan # This one is used unconditionally by i386.[ch]; it is to be defined 2839132718Skan # to 1 if the feature is present, 0 otherwise. 2840132718Skan gcc_GAS_CHECK_FEATURE([GOTOFF in data], 2841132718Skan gcc_cv_as_ix86_gotoff_in_data, [2,11,0],, 2842132718Skan[ .text 2843132718Skan.L0: 2844132718Skan nop 2845132718Skan .data 2846132718Skan .long .L0@GOTOFF]) 2847132718Skan AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA, 2848132718Skan [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`], 2849132718Skan [Define true if the assembler supports '.long foo@GOTOFF'.]) 2850132718Skan ;; 2851132718Skan 2852132718Skan ia64*-*-*) 2853132718Skan gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs], 2854132718Skan gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],, 2855132718Skan[ .text 2856132718Skan addl r15 = @ltoffx(x#), gp 2857132718Skan ;; 2858132718Skan ld8.mov r16 = [[r15]], x#],, 2859132718Skan [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1, 2860132718Skan [Define if your assembler supports ltoffx and ldxmov relocations.])]) 2861132718Skan 2862132718Skan ;; 2863132718Skan 2864132718Skan powerpc*-*-*) 2865132718Skan case $target in 2866169689Skan *-*-aix*) conftest_s=' .machine "pwr5" 2867169689Skan .csect .text[[PR]] 2868132718Skan mfcr 3,128';; 2869169689Skan *-*-darwin*) 2870169689Skan gcc_GAS_CHECK_FEATURE([.machine directive support], 2871169689Skan gcc_cv_as_machine_directive,,, 2872169689Skan [ .machine ppc7400]) 2873169689Skan if test x$gcc_cv_as_machine_directive != xyes; then 2874169689Skan echo "*** This target requires an assembler supporting \".machine\"" >&2 2875169689Skan echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2 2876169689Skan test x$build = x$target && exit 1 2877169689Skan fi 2878169689Skan conftest_s=' .text 2879132718Skan mfcr r3,128';; 2880169689Skan *) conftest_s=' .machine power4 2881169689Skan .text 2882132718Skan mfcr 3,128';; 2883132718Skan esac 2884132718Skan 2885132718Skan gcc_GAS_CHECK_FEATURE([mfcr field support], 2886132718Skan gcc_cv_as_powerpc_mfcrf, [2,14,0],, 2887132718Skan [$conftest_s],, 2888132718Skan [AC_DEFINE(HAVE_AS_MFCRF, 1, 2889132718Skan [Define if your assembler supports mfcr field.])]) 2890169689Skan 2891169689Skan case $target in 2892169689Skan *-*-aix*) conftest_s=' .machine "pwr5" 2893169689Skan .csect .text[[PR]] 2894169689Skan popcntb 3,3';; 2895169689Skan *) conftest_s=' .machine power5 2896169689Skan .text 2897169689Skan popcntb 3,3';; 2898169689Skan esac 2899169689Skan 2900169689Skan gcc_GAS_CHECK_FEATURE([popcntb support], 2901169689Skan gcc_cv_as_powerpc_popcntb, [2,17,0],, 2902169689Skan [$conftest_s],, 2903169689Skan [AC_DEFINE(HAVE_AS_POPCNTB, 1, 2904169689Skan [Define if your assembler supports popcntb field.])]) 2905169689Skan 2906169689Skan case $target in 2907169689Skan *-*-aix*) conftest_s=' .machine "pwr5x" 2908169689Skan .csect .text[[PR]] 2909169689Skan frin 1,1';; 2910169689Skan *) conftest_s=' .machine power5 2911169689Skan .text 2912169689Skan frin 1,1';; 2913169689Skan esac 2914169689Skan 2915169689Skan gcc_GAS_CHECK_FEATURE([fp round support], 2916169689Skan gcc_cv_as_powerpc_fprnd, [2,17,0],, 2917169689Skan [$conftest_s],, 2918169689Skan [AC_DEFINE(HAVE_AS_FPRND, 1, 2919169689Skan [Define if your assembler supports fprnd.])]) 2920169689Skan 2921169689Skan case $target in 2922169689Skan *-*-aix*) conftest_s=' .csect .text[[PR]] 2923169689SkanLCF..0: 2924169689Skan addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';; 2925169689Skan *-*-darwin*) 2926169689Skan conftest_s=' .text 2927169689SkanLCF0: 2928169689Skan addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';; 2929169689Skan *) conftest_s=' .text 2930169689Skan.LCF0: 2931169689Skan addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';; 2932169689Skan esac 2933169689Skan 2934169689Skan gcc_GAS_CHECK_FEATURE([rel16 relocs], 2935169689Skan gcc_cv_as_powerpc_rel16, [2,17,0], -a32, 2936169689Skan [$conftest_s],, 2937169689Skan [AC_DEFINE(HAVE_AS_REL16, 1, 2938169689Skan [Define if your assembler supports R_PPC_REL16 relocs.])]) 2939132718Skan ;; 2940132718Skan 2941132718Skan mips*-*-*) 2942132718Skan gcc_GAS_CHECK_FEATURE([explicit relocation support], 2943132718Skan gcc_cv_as_mips_explicit_relocs, [2,14,0],, 2944132718Skan[ lw $4,%gp_rel(foo)($4)],, 2945132718Skan [if test x$target_cpu_default = x 2946132718Skan then target_cpu_default=MASK_EXPLICIT_RELOCS 2947132718Skan else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS" 2948132718Skan fi]) 2949169689Skan ;; 2950169689Skanesac 2951132718Skan 2952169689Skan# Mips and HP-UX need the GNU assembler. 2953169689Skan# Linux on IA64 might be able to use the Intel assembler. 2954169689Skan 2955169689Skancase "$target" in 2956169689Skan mips*-*-* | *-*-hpux* ) 2957169689Skan if test x$gas_flag = xyes \ 2958169689Skan || test x"$host" != x"$build" \ 2959169689Skan || test ! -x "$gcc_cv_as" \ 2960169689Skan || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then 2961169689Skan : 2962169689Skan else 2963169689Skan echo "*** This configuration requires the GNU assembler" >&2 2964169689Skan exit 1 2965169689Skan fi 2966132718Skan ;; 2967132718Skanesac 2968169689Skan 2969132718Skan# ??? Not all targets support dwarf2 debug_line, even within a version 2970132718Skan# of gas. Moreover, we need to emit a valid instruction to trigger any 2971132718Skan# info to the output file. So, as supported targets are added to gas 2.11, 2972132718Skan# add some instruction here to (also) show we expect this might work. 2973132718Skan# ??? Once 2.11 is released, probably need to add first known working 2974132718Skan# version to the per-target configury. 2975132718Skancase "$target" in 2976132718Skan i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \ 2977132718Skan | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \ 2978169689Skan | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-*) 2979132718Skan insn="nop" 2980132718Skan ;; 2981132718Skan ia64*-*-* | s390*-*-*) 2982132718Skan insn="nop 0" 2983132718Skan ;; 2984132718Skan mmix-*-*) 2985132718Skan insn="swym 0" 2986132718Skan ;; 2987132718Skanesac 2988132718Skanif test x"$insn" != x; then 2989132718Skan conftest_s="\ 2990132718Skan .file 1 \"conftest.s\" 2991132718Skan .loc 1 3 0 2992132718Skan $insn" 2993132718Skan gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support], 2994132718Skan gcc_cv_as_dwarf2_debug_line, 2995132718Skan [elf,2,11,0],, [$conftest_s], 2996169689Skan [if test x$gcc_cv_objdump != x \ 2997169689Skan && $gcc_cv_objdump -h conftest.o 2> /dev/null \ 2998169689Skan | grep debug_line > /dev/null 2>&1; then 2999132718Skan gcc_cv_as_dwarf2_debug_line=yes 3000132718Skan fi]) 3001132718Skan 3002132718Skan# The .debug_line file table must be in the exact order that 3003132718Skan# we specified the files, since these indices are also used 3004132718Skan# by DW_AT_decl_file. Approximate this test by testing if 3005132718Skan# the assembler bitches if the same index is assigned twice. 3006132718Skan gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive], 3007132718Skan gcc_cv_as_dwarf2_file_buggy,,, 3008132718Skan[ .file 1 "foo.s" 3009132718Skan .file 1 "bar.s"]) 3010132718Skan 3011132718Skan if test $gcc_cv_as_dwarf2_debug_line = yes \ 3012132718Skan && test $gcc_cv_as_dwarf2_file_buggy = no; then 3013132718Skan AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1, 3014132718Skan [Define if your assembler supports dwarf2 .file/.loc directives, 3015132718Skan and preserves file table indices exactly as given.]) 3016132718Skan fi 3017132718Skan 3018132718Skan gcc_GAS_CHECK_FEATURE([--gdwarf2 option], 3019132718Skan gcc_cv_as_gdwarf2_flag, 3020132718Skan [elf,2,11,0], [--gdwarf2], [$insn],, 3021132718Skan [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1, 3022132718Skan[Define if your assembler supports the --gdwarf2 option.])]) 3023132718Skan 3024132718Skan gcc_GAS_CHECK_FEATURE([--gstabs option], 3025132718Skan gcc_cv_as_gstabs_flag, 3026132718Skan [elf,2,11,0], [--gstabs], [$insn], 3027132718Skan [# The native Solaris 9/Intel assembler doesn't understand --gstabs 3028132718Skan # and warns about it, but still exits successfully. So check for 3029132718Skan # this. 3030132718Skan if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null]) 3031132718Skan then : 3032132718Skan else gcc_cv_as_gstabs_flag=yes 3033132718Skan fi], 3034132718Skan [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1, 3035132718Skan[Define if your assembler supports the --gstabs option.])]) 3036132718Skanfi 3037132718Skan 3038132718SkanAC_MSG_CHECKING(linker read-only and read-write section mixing) 3039132718Skangcc_cv_ld_ro_rw_mix=unknown 3040132718Skanif test $in_tree_ld = yes ; then 3041132718Skan 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 \ 3042132718Skan && test $in_tree_ld_is_elf = yes; then 3043132718Skan gcc_cv_ld_ro_rw_mix=read-write 3044132718Skan fi 3045132718Skanelif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then 3046132718Skan echo '.section myfoosect, "a"' > conftest1.s 3047132718Skan echo '.section myfoosect, "aw"' > conftest2.s 3048132718Skan echo '.byte 1' >> conftest2.s 3049132718Skan echo '.section myfoosect, "a"' > conftest3.s 3050132718Skan echo '.byte 0' >> conftest3.s 3051132718Skan if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ 3052132718Skan && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ 3053132718Skan && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ 3054132718Skan && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ 3055132718Skan conftest2.o conftest3.o > /dev/null 2>&1; then 3056132718Skan gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ 3057132718Skan | sed -e '/myfoosect/!d' -e N` 3058132718Skan if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then 3059132718Skan if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then 3060132718Skan gcc_cv_ld_ro_rw_mix=read-only 3061132718Skan else 3062132718Skan gcc_cv_ld_ro_rw_mix=read-write 3063132718Skan fi 3064132718Skan fi 3065132718Skan fi 3066132718Skanchangequote(,)dnl 3067132718Skan rm -f conftest.* conftest[123].* 3068132718Skanchangequote([,])dnl 3069132718Skanfi 3070132718Skanif test x$gcc_cv_ld_ro_rw_mix = xread-write; then 3071132718Skan AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1, 3072132718Skan [Define if your linker links a mix of read-only 3073132718Skan and read-write sections into a read-write section.]) 3074132718Skanfi 3075132718SkanAC_MSG_RESULT($gcc_cv_ld_ro_rw_mix) 3076132718Skan 3077132718SkanAC_MSG_CHECKING(linker PT_GNU_EH_FRAME support) 3078132718Skangcc_cv_ld_eh_frame_hdr=no 3079132718Skanif test $in_tree_ld = yes ; then 3080132718Skan 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 \ 3081132718Skan && test $in_tree_ld_is_elf = yes; then 3082132718Skan gcc_cv_ld_eh_frame_hdr=yes 3083132718Skan fi 3084132718Skanelif test x$gcc_cv_ld != x; then 3085132718Skan # Check if linker supports --eh-frame-hdr option 3086132718Skan if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then 3087132718Skan gcc_cv_ld_eh_frame_hdr=yes 3088132718Skan fi 3089132718Skanfi 3090169689SkanGCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR]) 3091132718Skanif test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then 3092132718Skan AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1, 3093132718Skan[Define if your linker supports --eh-frame-hdr option.]) 3094132718Skanfi 3095132718SkanAC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr) 3096132718Skan 3097132718SkanAC_MSG_CHECKING(linker position independent executable support) 3098132718Skangcc_cv_ld_pie=no 3099132718Skanif test $in_tree_ld = yes ; then 3100132718Skan 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 \ 3101132718Skan && test $in_tree_ld_is_elf = yes; then 3102132718Skan gcc_cv_ld_pie=yes 3103132718Skan fi 3104132718Skanelif test x$gcc_cv_ld != x; then 3105132718Skan # Check if linker supports -pie option 3106132718Skan if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then 3107132718Skan gcc_cv_ld_pie=yes 3108132718Skan fi 3109132718Skanfi 3110132718Skanif test x"$gcc_cv_ld_pie" = xyes; then 3111132718Skan AC_DEFINE(HAVE_LD_PIE, 1, 3112132718Skan[Define if your linker supports -pie option.]) 3113132718Skanfi 3114132718SkanAC_MSG_RESULT($gcc_cv_ld_pie) 3115132718Skan 3116169689Skan# -------- 3117169689Skan# UNSORTED 3118169689Skan# -------- 3119169689Skan 3120169689SkanAC_CACHE_CHECK(linker --as-needed support, 3121169689Skangcc_cv_ld_as_needed, 3122169689Skan[gcc_cv_ld_as_needed=no 3123146895Skanif test $in_tree_ld = yes ; then 3124169689Skan 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 \ 3125169689Skan && test $in_tree_ld_is_elf = yes; then 3126169689Skan gcc_cv_ld_as_needed=yes 3127146895Skan fi 3128146895Skanelif test x$gcc_cv_ld != x; then 3129169689Skan # Check if linker supports --as-needed and --no-as-needed options 3130169689Skan if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then 3131169689Skan gcc_cv_ld_as_needed=yes 3132146895Skan fi 3133146895Skanfi 3134169689Skan]) 3135169689Skanif test x"$gcc_cv_ld_as_needed" = xyes; then 3136169689Skan AC_DEFINE(HAVE_LD_AS_NEEDED, 1, 3137169689Skan[Define if your linker supports --as-needed and --no-as-needed options.]) 3138146895Skanfi 3139146895Skan 3140169689Skancase "$target:$tm_file" in 3141169689Skan powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*) 3142169689Skan AC_CACHE_CHECK(linker support for omitting dot symbols, 3143169689Skan gcc_cv_ld_no_dot_syms, 3144169689Skan [gcc_cv_ld_no_dot_syms=no 3145132718Skan if test $in_tree_ld = yes ; then 3146169689Skan 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 3147169689Skan gcc_cv_ld_no_dot_syms=yes 3148132718Skan fi 3149169689Skan elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then 3150169689Skan cat > conftest1.s <<EOF 3151169689Skan .text 3152169689Skan bl .foo 3153169689SkanEOF 3154169689Skan cat > conftest2.s <<EOF 3155169689Skan .section ".opd","aw" 3156169689Skan .align 3 3157169689Skan .globl foo 3158169689Skan .type foo,@function 3159169689Skanfoo: 3160169689Skan .quad .LEfoo,.TOC.@tocbase,0 3161169689Skan .text 3162169689Skan.LEfoo: 3163169689Skan blr 3164169689Skan .size foo,.-.LEfoo 3165169689SkanEOF 3166169689Skan if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \ 3167169689Skan && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \ 3168169689Skan && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then 3169169689Skan gcc_cv_ld_no_dot_syms=yes 3170132718Skan fi 3171169689Skan rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s 3172132718Skan fi 3173132718Skan ]) 3174169689Skan if test x"$gcc_cv_ld_no_dot_syms" = xyes; then 3175169689Skan AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1, 3176169689Skan [Define if your PowerPC64 linker only needs function descriptor syms.]) 3177132718Skan fi 3178132718Skan ;; 3179132718Skanesac 3180132718Skan 3181169689SkanAC_CACHE_CHECK(linker --sysroot support, 3182169689Skan gcc_cv_ld_sysroot, 3183169689Skan [gcc_cv_ld_sysroot=no 3184169689Skan if test $in_tree_ld = yes ; then 3185169689Skan 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 3186169689Skan gcc_cv_ld_sysroot=yes 3187169689Skan fi 3188169689Skan elif test x$gcc_cv_ld != x; then 3189169689Skan if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then 3190169689Skan gcc_cv_ld_sysroot=yes 3191169689Skan fi 3192169689Skan fi]) 3193169689Skanif test x"$gcc_cv_ld_sysroot" = xyes; then 3194169689Skan AC_DEFINE(HAVE_LD_SYSROOT, 1, 3195169689Skan [Define if your linker supports --sysroot.]) 3196169689Skanfi 3197169689Skan 3198132718Skanif test x$with_sysroot = x && test x$host = x$target \ 3199132718Skan && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then 3200132718Skan AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include", 3201132718Skan[Define to PREFIX/include if cpp should also search that directory.]) 3202132718Skanfi 3203132718Skan 3204169689Skan# Test for stack protector support in target C library. 3205169689Skancase "$target" in 3206169689Skan *-*-linux*) 3207169689Skan AC_CACHE_CHECK(__stack_chk_fail in target GNU C library, 3208169689Skan gcc_cv_libc_provides_ssp, 3209169689Skan [gcc_cv_libc_provides_ssp=no 3210169689Skan if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then 3211169689Skan if test "x$with_sysroot" = x; then 3212169689Skan glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include" 3213169689Skan elif test "x$with_sysroot" = xyes; then 3214169689Skan glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include" 3215132718Skan else 3216169689Skan glibc_header_dir="${with_sysroot}/usr/include" 3217132718Skan fi 3218169689Skan else 3219169689Skan glibc_header_dir=/usr/include 3220169689Skan fi 3221169689Skan # glibc 2.4 and later provides __stack_chk_fail and 3222169689Skan # either __stack_chk_guard, or TLS access to stack guard canary. 3223169689Skan if test -f $glibc_header_dir/features.h \ 3224169689Skan && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \ 3225169689Skan $glibc_header_dir/features.h > /dev/null; then 3226169689Skan if $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \ 3227169689Skan $glibc_header_dir/features.h > /dev/null; then 3228169689Skan gcc_cv_libc_provides_ssp=yes 3229169689Skan elif $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC__[ ]+2' \ 3230169689Skan $glibc_header_dir/features.h > /dev/null \ 3231169689Skan && $EGREP '^@<:@ @:>@*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \ 3232169689Skan $glibc_header_dir/features.h > /dev/null; then 3233169689Skan gcc_cv_libc_provides_ssp=yes 3234132718Skan fi 3235169689Skan fi]) ;; 3236169689Skan *) gcc_cv_libc_provides_ssp=no ;; 3237169689Skanesac 3238169689Skanif test x$gcc_cv_libc_provides_ssp = xyes; then 3239169689Skan AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1, 3240169689Skan [Define if your target C library provides stack protector support]) 3241132718Skanfi 3242132718Skan 3243169689Skan# Check if TFmode long double should be used by default or not. 3244169689Skan# Some glibc targets used DFmode long double, but with glibc 2.4 3245169689Skan# and later they can use TFmode. 3246169689Skancase "$target" in 3247169689Skan powerpc*-*-*gnu* | \ 3248169689Skan sparc*-*-linux* | \ 3249169689Skan s390*-*-linux* | \ 3250169689Skan alpha*-*-linux*) 3251169689Skan AC_ARG_WITH(long-double-128, 3252169689Skan[ --with-long-double-128 Use 128-bit long double by default.], 3253169689Skan gcc_cv_target_ldbl128="$with_long_double_128", 3254169689Skan [gcc_cv_target_ldbl128=no 3255169689Skan if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then 3256169689Skan if test "x$with_sysroot" = x; then 3257169689Skan glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include" 3258169689Skan elif test "x$with_sysroot" = xyes; then 3259169689Skan glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include" 3260169689Skan else 3261169689Skan glibc_header_dir="${with_sysroot}/usr/include" 3262169689Skan fi 3263169689Skan else 3264169689Skan glibc_header_dir=/usr/include 3265169689Skan fi 3266132718Skanchangequote(,)dnl 3267169689Skan grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \ 3268169689Skan $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \ 3269169689Skan && gcc_cv_target_ldbl128=yes 3270132718Skanchangequote([,])dnl 3271169689Skan ]) 3272169689Skan ;; 3273169689Skanesac 3274169689Skanif test x$gcc_cv_target_ldbl128 = xyes; then 3275169689Skan AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1, 3276169689Skan [Define if TFmode long double should be the default]) 3277132718Skanfi 3278132718Skan 3279132718Skan# Find out what GC implementation we want, or may, use. 3280132718SkanAC_ARG_WITH(gc, 3281169689Skan[ --with-gc={page,zone} choose the garbage collection mechanism to use 3282132718Skan with the compiler], 3283132718Skan[case "$withval" in 3284169689Skan page) 3285132718Skan GGC=ggc-$withval 3286132718Skan ;; 3287169689Skan zone) 3288169689Skan GGC=ggc-$withval 3289169689Skan AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use]) 3290169689Skan ;; 3291132718Skan *) 3292132718Skan AC_MSG_ERROR([$withval is an invalid option to --with-gc]) 3293132718Skan ;; 3294132718Skanesac], 3295132718Skan[GGC=ggc-page]) 3296132718SkanAC_SUBST(GGC) 3297132718Skanecho "Using $GGC for garbage collection." 3298132718Skan 3299132718Skan# Use the system's zlib library. 3300132718Skanzlibdir=-L../zlib 3301132718Skanzlibinc="-I\$(srcdir)/../zlib" 3302132718SkanAC_ARG_WITH(system-zlib, 3303132718Skan[ --with-system-zlib use installed libz], 3304132718Skanzlibdir= 3305132718Skanzlibinc= 3306132718Skan) 3307132718SkanAC_SUBST(zlibdir) 3308132718SkanAC_SUBST(zlibinc) 3309132718Skan 3310132718Skandnl Very limited version of automake's enable-maintainer-mode 3311132718Skan 3312132718SkanAC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) 3313132718Skan dnl maintainer-mode is disabled by default 3314132718Skan AC_ARG_ENABLE(maintainer-mode, 3315132718Skan[ --enable-maintainer-mode 3316132718Skan enable make rules and dependencies not useful 3317132718Skan (and sometimes confusing) to the casual installer], 3318132718Skan maintainer_mode=$enableval, 3319132718Skan maintainer_mode=no) 3320132718Skan 3321132718SkanAC_MSG_RESULT($maintainer_mode) 3322132718Skan 3323132718Skanif test "$maintainer_mode" = "yes"; then 3324132718Skan MAINT='' 3325132718Skanelse 3326132718Skan MAINT='#' 3327132718Skanfi 3328132718SkanAC_SUBST(MAINT)dnl 3329132718Skan 3330169689Skan# -------------- 3331169689Skan# Language hooks 3332169689Skan# -------------- 3333169689Skan 3334132718Skan# Make empty files to contain the specs and options for each language. 3335132718Skan# Then add #include lines to for a compiler that has specs and/or options. 3336132718Skan 3337169689Skansubdirs= 3338132718Skanlang_opt_files= 3339132718Skanlang_specs_files= 3340132718Skanlang_tree_files= 3341132718Skan# These (without "all_") are set in each config-lang.in. 3342132718Skan# `language' must be a single word so is spelled singularly. 3343132718Skanall_languages= 3344132718Skanall_boot_languages= 3345132718Skanall_compilers= 3346132718Skanall_stagestuff= 3347169689Skanall_outputs='Makefile gccbug mklibgcc libada-mk' 3348132718Skan# List of language makefile fragments. 3349132718Skanall_lang_makefrags= 3350132718Skan# List of language subdirectory makefiles. Deprecated. 3351132718Skanall_lang_makefiles= 3352132718Skan# Files for gengtype 3353132718Skanall_gtfiles="$target_gtfiles" 3354132718Skan# Files for gengtype with language 3355132718Skanall_gtfiles_files_langs= 3356132718Skanall_gtfiles_files_files= 3357132718Skan 3358169689Skan# These are the languages that are set in --enable-languages, 3359169689Skan# and are available in the GCC tree. 3360169689Skanall_selected_languages= 3361169689Skan 3362132718Skan# Add the language fragments. 3363132718Skan# Languages are added via two mechanisms. Some information must be 3364132718Skan# recorded in makefile variables, these are defined in config-lang.in. 3365132718Skan# We accumulate them and plug them into the main Makefile. 3366132718Skan# The other mechanism is a set of hooks for each of the main targets 3367132718Skan# like `clean', `install', etc. 3368132718Skan 3369132718Skanlanguage_hooks="Make-hooks" 3370132718Skan 3371169689Skanfor lang in ${srcdir}/*/config-lang.in 3372132718Skando 3373169689Skanchangequote(,)dnl 3374169689Skan test "$lang" = "${srcdir}/*/config-lang.in" && continue 3375169689Skan 3376169689Skan lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang` 3377169689Skan if test "x$lang_alias" = x 3378169689Skan then 3379169689Skan echo "$lang doesn't set \$language." 1>&2 3380169689Skan exit 1 3381169689Skan fi 3382169689Skan subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`" 3383169689Skan subdirs="$subdirs $subdir" 3384169689Skan case ",$enable_languages," in 3385169689Skan *,$lang_alias,*) 3386169689Skan all_selected_languages="$all_selected_languages $lang_alias" 3387169689Skan if test -f $srcdir/$subdir/lang-specs.h; then 3388169689Skan lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h" 3389169689Skan fi 3390169689Skan ;; 3391169689Skan esac 3392169689Skanchangequote([,])dnl 3393169689Skan 3394169689Skan language= 3395169689Skan boot_language= 3396169689Skan compilers= 3397169689Skan stagestuff= 3398169689Skan outputs= 3399169689Skan gtfiles= 3400169689Skan subdir_requires= 3401169689Skan . ${srcdir}/$subdir/config-lang.in 3402169689Skan if test "x$language" = x 3403169689Skan then 3404169689Skan echo "${srcdir}/$subdir/config-lang.in doesn't set \$language." 1>&2 3405169689Skan exit 1 3406169689Skan fi 3407169689Skan 3408169689Skan ok=: 3409169689Skan case ",$enable_languages," in 3410169689Skan *,$lang_alias,*) ;; 3411169689Skan *) 3412169689Skan for i in $subdir_requires; do 3413169689Skan test -f "${srcdir}/$i/config-lang.in" && continue 3414169689Skan ok=false 3415169689Skan break 3416169689Skan done 3417169689Skan ;; 3418169689Skan esac 3419169689Skan $ok || continue 3420169689Skan 3421169689Skan all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$subdir/Make-lang.in" 3422169689Skan if test -f $srcdir/$subdir/lang.opt; then 3423169689Skan lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt" 3424169689Skan fi 3425169689Skan if test -f $srcdir/$subdir/$subdir-tree.def; then 3426169689Skan lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def" 3427169689Skan fi 3428169689Skan if test -f ${srcdir}/$subdir/Makefile.in 3429169689Skan then all_lang_makefiles="$subdir/Makefile" 3430169689Skan fi 3431169689Skan all_languages="$all_languages $language" 3432169689Skan if test "x$boot_language" = xyes 3433169689Skan then 3434169689Skan all_boot_languages="$all_boot_languages $language" 3435169689Skan fi 3436169689Skan all_compilers="$all_compilers $compilers" 3437169689Skan all_stagestuff="$all_stagestuff $stagestuff" 3438169689Skan all_outputs="$all_outputs $outputs" 3439169689Skan all_gtfiles="$all_gtfiles $gtfiles" 3440169689Skan for f in $gtfiles 3441169689Skan do 3442169689Skan all_gtfiles_files_langs="$all_gtfiles_files_langs ${subdir} " 3443169689Skan all_gtfiles_files_files="$all_gtfiles_files_files ${f} " 3444169689Skan done 3445132718Skandone 3446132718Skan 3447132718Skan# Pick up gtfiles for c 3448132718Skangtfiles= 3449169689Skansubdir="c" 3450132718Skan. ${srcdir}/c-config-lang.in 3451132718Skanall_gtfiles="$all_gtfiles $gtfiles" 3452132718Skanfor f in $gtfiles 3453132718Skando 3454169689Skan all_gtfiles_files_langs="$all_gtfiles_files_langs ${subdir} " 3455132718Skan all_gtfiles_files_files="$all_gtfiles_files_files ${f} " 3456132718Skandone 3457132718Skan 3458132718Skancheck_languages= 3459169689Skanfor language in $all_selected_languages 3460132718Skando 3461169689Skan check_languages="$check_languages check-$language" 3462132718Skandone 3463132718Skan 3464132718Skan# We link each language in with a set of hooks, reached indirectly via 3465169689Skan# lang.${target}. Only do so for selected languages. 3466132718Skan 3467132718Skanrm -f Make-hooks 3468132718Skantouch Make-hooks 3469169689Skantarget_list="all.cross start.encap rest.encap tags \ 3470169689Skan install-common install-man install-info dvi pdf html \ 3471132718Skan uninstall info man srcextra srcman srcinfo \ 3472132718Skan mostlyclean clean distclean maintainer-clean \ 3473132718Skan stage1 stage2 stage3 stage4 stageprofile stagefeedback" 3474169689Skan 3475132718Skanfor t in $target_list 3476132718Skando 3477132718Skan x= 3478169689Skan for lang in $all_selected_languages 3479132718Skan do 3480169689Skan x="$x $lang.$t" 3481132718Skan done 3482132718Skan echo "lang.$t: $x" >> Make-hooks 3483132718Skandone 3484132718Skan 3485169689Skan# -------- 3486169689Skan# UNSORTED 3487169689Skan# -------- 3488169689Skan 3489132718Skan# Create .gdbinit. 3490132718Skan 3491132718Skanecho "dir ." > .gdbinit 3492132718Skanecho "dir ${srcdir}" >> .gdbinit 3493132718Skanif test x$gdb_needs_out_file_path = xyes 3494132718Skanthen 3495132718Skan echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit 3496132718Skanfi 3497132718Skanif test "x$subdirs" != x; then 3498132718Skan for s in $subdirs 3499132718Skan do 3500132718Skan echo "dir ${srcdir}/$s" >> .gdbinit 3501132718Skan done 3502132718Skanfi 3503132718Skanecho "source ${srcdir}/gdbinit.in" >> .gdbinit 3504132718Skan 3505132718Skan# If $(exec_prefix) exists and is not the same as $(prefix), then compute an 3506132718Skan# absolute path for gcc_tooldir based on inserting the number of up-directory 3507132718Skan# movements required to get from $(exec_prefix) to $(prefix) into the basic 3508132718Skan# $(libsubdir)/@(unlibsubdir) based path. 3509132718Skan# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel 3510132718Skan# make and thus we'd get different behavior depending on where we built the 3511132718Skan# sources. 3512132718Skanif test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then 3513132718Skan gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_noncanonical)' 3514132718Skanelse 3515132718Skanchangequote(<<, >>)dnl 3516132718Skan# An explanation of the sed strings: 3517132718Skan# -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix' 3518132718Skan# -e 's|/$||' match a trailing forward slash and eliminates it 3519132718Skan# -e 's|^[^/]|/|' forces the string to start with a forward slash (*) 3520132718Skan# -e 's|/[^/]*|../|g' replaces each occurrence of /<directory> with ../ 3521132718Skan# 3522132718Skan# (*) Note this pattern overwrites the first character of the string 3523132718Skan# with a forward slash if one is not already present. This is not a 3524132718Skan# problem because the exact names of the sub-directories concerned is 3525132718Skan# unimportant, just the number of them matters. 3526132718Skan# 3527132718Skan# The practical upshot of these patterns is like this: 3528132718Skan# 3529132718Skan# prefix exec_prefix result 3530132718Skan# ------ ----------- ------ 3531132718Skan# /foo /foo/bar ../ 3532132718Skan# /foo/ /foo/bar ../ 3533132718Skan# /foo /foo/bar/ ../ 3534132718Skan# /foo/ /foo/bar/ ../ 3535132718Skan# /foo /foo/bar/ugg ../../ 3536132718Skan# 3537132718Skan dollar='$$' 3538132718Skan gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_noncanonical)" 3539132718Skanchangequote([, ])dnl 3540132718Skanfi 3541132718SkanAC_SUBST(gcc_tooldir) 3542132718SkanAC_SUBST(dollar) 3543132718Skan 3544132718Skan# Find a directory in which to install a shared libgcc. 3545132718Skan 3546132718SkanAC_ARG_ENABLE(version-specific-runtime-libs, 3547132718Skan[ --enable-version-specific-runtime-libs 3548132718Skan specify that runtime libraries should be 3549132718Skan installed in a compiler-specific directory]) 3550132718Skan 3551132718SkanAC_ARG_WITH(slibdir, 3552169689Skan[ --with-slibdir=DIR shared libraries in DIR [[LIBDIR]]], 3553132718Skanslibdir="$with_slibdir", 3554132718Skanif test "${enable_version_specific_runtime_libs+set}" = set; then 3555132718Skan slibdir='$(libsubdir)' 3556132718Skanelif test "$host" != "$target"; then 3557132718Skan slibdir='$(build_tooldir)/lib' 3558132718Skanelse 3559132718Skan slibdir='$(libdir)' 3560132718Skanfi) 3561132718SkanAC_SUBST(slibdir) 3562132718Skan 3563132718Skanobjdir=`${PWDCMD-pwd}` 3564132718SkanAC_SUBST(objdir) 3565132718Skan 3566169689SkanAC_ARG_WITH(datarootdir, 3567169689Skan[ --with-datarootdir=DIR Use DIR as the data root [[PREFIX/share]]], 3568169689Skandatarootdir="\${prefix}/$with_datarootdir", 3569169689Skandatarootdir='$(prefix)/share') 3570169689SkanAC_SUBST(datarootdir) 3571169689Skan 3572169689SkanAC_ARG_WITH(docdir, 3573169689Skan[ --with-docdir=DIR Install documentation in DIR [[DATAROOTDIR]]], 3574169689Skandocdir="\${prefix}/$with_docdir", 3575169689Skandocdir='$(datarootdir)') 3576169689SkanAC_SUBST(docdir) 3577169689Skan 3578169689SkanAC_ARG_WITH(htmldir, 3579169689Skan[ --with-htmldir=DIR html documentation in in DIR [[DOCDIR]]], 3580169689Skanhtmldir="\${prefix}/$with_htmldir", 3581169689Skanhtmldir='$(docdir)') 3582169689SkanAC_SUBST(htmldir) 3583169689Skan 3584132718Skan# Substitute configuration variables 3585132718SkanAC_SUBST(subdirs) 3586132718SkanAC_SUBST(srcdir) 3587132718SkanAC_SUBST(all_boot_languages) 3588132718SkanAC_SUBST(all_compilers) 3589132718SkanAC_SUBST(all_gtfiles) 3590132718SkanAC_SUBST(all_gtfiles_files_langs) 3591132718SkanAC_SUBST(all_gtfiles_files_files) 3592132718SkanAC_SUBST(all_lang_makefrags) 3593132718SkanAC_SUBST(all_lang_makefiles) 3594132718SkanAC_SUBST(all_languages) 3595169689SkanAC_SUBST(all_selected_languages) 3596132718SkanAC_SUBST(all_stagestuff) 3597132718SkanAC_SUBST(build_exeext) 3598132718SkanAC_SUBST(build_install_headers_dir) 3599132718SkanAC_SUBST(build_xm_file_list) 3600132718SkanAC_SUBST(build_xm_include_list) 3601132718SkanAC_SUBST(build_xm_defines) 3602132718SkanAC_SUBST(check_languages) 3603132718SkanAC_SUBST(cc_set_by_configure) 3604132718SkanAC_SUBST(quoted_cc_set_by_configure) 3605132718SkanAC_SUBST(cpp_install_dir) 3606132718SkanAC_SUBST(xmake_file) 3607132718SkanAC_SUBST(tmake_file) 3608132718SkanAC_SUBST(extra_gcc_objs) 3609132718SkanAC_SUBST(extra_headers_list) 3610132718SkanAC_SUBST(extra_objs) 3611132718SkanAC_SUBST(extra_parts) 3612132718SkanAC_SUBST(extra_passes) 3613132718SkanAC_SUBST(extra_programs) 3614132718SkanAC_SUBST(float_h_file) 3615132718SkanAC_SUBST(gcc_config_arguments) 3616132718SkanAC_SUBST(gcc_gxx_include_dir) 3617132718SkanAC_SUBST(host_exeext) 3618132718SkanAC_SUBST(host_xm_file_list) 3619132718SkanAC_SUBST(host_xm_include_list) 3620132718SkanAC_SUBST(host_xm_defines) 3621132718SkanAC_SUBST(out_host_hook_obj) 3622132718SkanAC_SUBST(install) 3623132718SkanAC_SUBST(lang_opt_files) 3624132718SkanAC_SUBST(lang_specs_files) 3625132718SkanAC_SUBST(lang_tree_files) 3626132718SkanAC_SUBST(local_prefix) 3627132718SkanAC_SUBST(md_file) 3628132718SkanAC_SUBST(objc_boehm_gc) 3629132718SkanAC_SUBST(out_file) 3630132718SkanAC_SUBST(out_object_file) 3631132718SkanAC_SUBST(stage_prefix_set_by_configure) 3632132718SkanAC_SUBST(quoted_stage_prefix_set_by_configure) 3633132718SkanAC_SUBST(thread_file) 3634132718SkanAC_SUBST(tm_file_list) 3635132718SkanAC_SUBST(tm_include_list) 3636132718SkanAC_SUBST(tm_defines) 3637132718SkanAC_SUBST(tm_p_file_list) 3638132718SkanAC_SUBST(tm_p_include_list) 3639132718SkanAC_SUBST(xm_file_list) 3640132718SkanAC_SUBST(xm_include_list) 3641132718SkanAC_SUBST(xm_defines) 3642132718SkanAC_SUBST(c_target_objs) 3643132718SkanAC_SUBST(cxx_target_objs) 3644132718SkanAC_SUBST(target_cpu_default) 3645132718Skan 3646132718SkanAC_SUBST_FILE(language_hooks) 3647132718Skan 3648132718Skan# Echo link setup. 3649132718Skanif test x${build} = x${host} ; then 3650132718Skan if test x${host} = x${target} ; then 3651132718Skan echo "Links are now set up to build a native compiler for ${target}." 1>&2 3652132718Skan else 3653132718Skan echo "Links are now set up to build a cross-compiler" 1>&2 3654132718Skan echo " from ${host} to ${target}." 1>&2 3655132718Skan fi 3656132718Skanelse 3657132718Skan if test x${host} = x${target} ; then 3658132718Skan echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 3659132718Skan echo " for ${target}." 1>&2 3660132718Skan else 3661132718Skan echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2 3662132718Skan echo " from ${host} to ${target}." 1>&2 3663132718Skan fi 3664132718Skanfi 3665132718Skan 3666169689SkanAC_ARG_VAR(GMPLIBS,[How to link GMP]) 3667169689SkanAC_ARG_VAR(GMPINC,[How to find GMP include files]) 3668169689Skan 3669132718Skan# Configure the subdirectories 3670132718Skan# AC_CONFIG_SUBDIRS($subdirs) 3671132718Skan 3672132718Skan# Create the Makefile 3673132718Skan# and configure language subdirectories 3674132718SkanAC_CONFIG_FILES($all_outputs) 3675132718Skan 3676132718SkanAC_CONFIG_COMMANDS([default], 3677132718Skan[ 3678132718Skancase ${CONFIG_HEADERS} in 3679132718Skan *auto-host.h:config.in*) 3680132718Skan echo > cstamp-h ;; 3681132718Skanesac 3682132718Skan# Make sure all the subdirs exist. 3683169689Skanfor d in $subdirs doc build 3684132718Skando 3685132718Skan test -d $d || mkdir $d 3686132718Skandone 3687132718Skan# If the host supports symlinks, point stage[1234] at ../stage[1234] so 3688132718Skan# bootstrapping and the installation procedure can still use 3689132718Skan# CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks, 3690132718Skan# FLAGS_TO_PASS has been modified to solve the problem there. 3691132718Skan# This is virtually a duplicate of what happens in configure.lang; we do 3692132718Skan# an extra check to make sure this only happens if ln -s can be used. 3693169689Skancase "$LN_S" in 3694169689Skan *-s*) 3695169689Skan for d in ${subdirs} ; do 3696132718Skan STARTDIR=`${PWDCMD-pwd}` 3697132718Skan cd $d 3698132718Skan for t in stage1 stage2 stage3 stage4 stageprofile stagefeedback include 3699132718Skan do 3700132718Skan rm -f $t 3701169689Skan $LN_S ../$t $t 2>/dev/null 3702132718Skan done 3703132718Skan cd $STARTDIR 3704169689Skan done 3705169689Skan ;; 3706169689Skanesac 3707132718Skan], 3708169689Skan[subdirs='$subdirs']) 3709132718SkanAC_OUTPUT 3710