X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fconfigure.ac;h=c4c93a036cd8d39e7cebba3ffa885f09f79de00f;hb=735fc2ca685b55bf1debbfcea6d2ab544e58a530;hp=de3b63038a2c0e60e1cf4fd20a5c366d7486f45f;hpb=ad961eab9a010e79d17a4ea7e6bb977fe6dd86c2;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/configure.ac b/gold/configure.ac index de3b63038a..c4c93a036c 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl Copyright (C) 2006-2016 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2020 Free Software Foundation, Inc. dnl dnl This file is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -17,8 +17,6 @@ dnl along with this program; see the file COPYING3. If not see dnl . dnl -AC_PREREQ(2.59) - AC_INIT(gold, 0.1) AC_CONFIG_SRCDIR(gold.cc) @@ -28,6 +26,8 @@ AM_INIT_AUTOMAKE([no-dist parallel-tests]) AM_CONFIG_HEADER(config.h:config.in) +AC_USE_SYSTEM_EXTENSIONS + # PR 14072 AH_VERBATIM([00_CONFIG_H_CHECK], [/* Check that config.h is #included before system headers @@ -49,7 +49,7 @@ fi sysroot_relocatable=0 if test -n "$sysroot"; then - case "sysroot" in + case "$sysroot" in "${prefix}" | "${prefix}/"* | \ "${exec_prefix}" | "${exec_prefix}/"* | \ '${prefix}' | '${prefix}/'*| \ @@ -85,29 +85,7 @@ AC_ARG_ENABLE(gold, AC_SUBST(install_as_default) AC_SUBST(installed_linker) -dnl For now threads are a configure time option. -AC_ARG_ENABLE([threads], -[ --enable-threads multi-threaded linking], -[case "${enableval}" in - yes | "") threads=yes ;; - no) threads=no ;; - *) threads=yes ;; - esac], -[threads=no]) -if test "$threads" = "yes"; then - AC_DEFINE(ENABLE_THREADS, 1, - [Define to do multi-threaded linking]) -fi -AM_CONDITIONAL(THREADS, test "$threads" = "yes") - -AC_ARG_ENABLE([plugins], -[ --enable-plugins linker plugins], -[case "${enableval}" in - yes | "") plugins=yes ;; - no) plugins=no ;; - *) plugins=yes ;; - esac], -[plugins=no]) +AC_PLUGINS if test "$plugins" = "yes"; then AC_DEFINE(ENABLE_PLUGINS, 1, [Define to enable linker plugins]) @@ -161,6 +139,26 @@ if test -n "$enable_targets"; then done fi +# Decide which "--hash-style" to use by default +# Provide a configure time option to override our default. +AC_ARG_ENABLE([default-hash-style], +AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}], + [use this default hash style]), +[case "${enable_default_hash_style}" in + sysv | gnu | both) ;; + *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;; +esac], +[case "${target}" in + # Enable gnu hash only on GNU targets, but not mips + mips*-*-*) enable_default_hash_style=sysv ;; + *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;; + *) enable_default_hash_style=sysv ;; +esac]) + +AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE], + ["${enable_default_hash_style}"], + [Set the default --hash-style value]) + # See which specific instantiations we need. targetobjs= all_targets= @@ -358,17 +356,17 @@ AM_CONDITIONAL(FN_PTRS_IN_SO_WITHOUT_PIC, [ dnl Test for gcc 4.1 or later. Full support for -mcmodel=medium is dnl only available in gcc 4.1. AC_CACHE_CHECK([for gcc >= 4.1], [gold_cv_prog_gcc41], -[AC_COMPILE_IFELSE([ +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #if !defined __GNUC__ error #elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1) error #endif -], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])]) +])], [gold_cv_prog_gcc41=yes], [gold_cv_prog_gcc41=no])]) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mcmodel=medium" -AC_COMPILE_IFELSE([int i;], [have_mcmodel_medium=yes], [have_mcmodel_medium=no]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_mcmodel_medium=yes], [have_mcmodel_medium=no]) CFLAGS="$save_CFLAGS" dnl Whether we can test -mcmodel=medium. AM_CONDITIONAL(MCMODEL_MEDIUM, @@ -378,7 +376,7 @@ AC_CACHE_CHECK([whether $CC supports -fmerge-constants], [gold_cv_merge_constants], [ save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fmerge-constants" -AC_COMPILE_IFELSE([const char *s = "foo";], +AC_COMPILE_IFELSE([AC_LANG_SOURCE([const char *s = "foo";])], [gold_cv_merge_constants=yes], [gold_cv_merge_constants=no]) CFLAGS="$save_CFLAGS"]) @@ -389,7 +387,7 @@ AS_IF([test "$gold_cv_merge_constants" = yes], dnl Test for __thread support. AC_CACHE_CHECK([for thread support], [gold_cv_c_thread], -[AC_COMPILE_IFELSE([__thread int i = 1;], +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([__thread int i = 1;])], [gold_cv_c_thread=yes], [gold_cv_c_thread=no])]) AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes") @@ -397,14 +395,14 @@ AM_CONDITIONAL(TLS, test "$gold_cv_c_thread" = "yes") dnl On GNU/Linux TLS in static programs only works when using glibc dnl 2.4 or later. AC_CACHE_CHECK([for glibc >= 2.4], [gold_cv_lib_glibc24], -[AC_COMPILE_IFELSE([ +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #include #if !defined __GLIBC__ error #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4) error #endif -], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])]) +])], [gold_cv_lib_glibc24=yes], [gold_cv_lib_glibc24=no])]) AM_CONDITIONAL(STATIC_TLS, test "$gold_cv_lib_glibc24" = "yes") @@ -412,11 +410,11 @@ dnl Test for #pragma omp threadprivate AC_CACHE_CHECK([for omp support], [gold_cv_c_threadprivate], [save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fopenmp" -AC_COMPILE_IFELSE([ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #include int i; #pragma omp threadprivate (i) -], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no]) +])], [gold_cv_c_threadprivate=yes], [gold_cv_c_threadprivate=no]) CFLAGS="$save_CFLAGS"]) if test "$gold_cv_c_threadprivate" = "yes"; then AC_DEFINE(HAVE_OMP_SUPPORT, 1, @@ -432,27 +430,27 @@ dnl assuming here that there is no compiler that groks -mtls-dialect=gnu2 dnl but does not grok -Werror.) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -fpic -mtls-dialect=gnu2" -AC_COMPILE_IFELSE([ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ __thread int i; void foo (void) { i = 10; } -], [have_tls_gnu2=yes], [have_tls_gnu2=no]) +])], [have_tls_gnu2=yes], [have_tls_gnu2=no]) CFLAGS="$save_CFLAGS" AM_CONDITIONAL(TLS_GNU2_DIALECT, test "$have_tls_gnu2" = "yes") dnl On GNU/Linux TLS descriptors are supported by the dynamic loader dnl only with glibc 2.9 or later. AC_CACHE_CHECK([for glibc >= 2.9], [gold_cv_lib_glibc29], -[AC_COMPILE_IFELSE([ +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #include #if !defined __GLIBC__ error #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9) error #endif -], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])]) +])], [gold_cv_lib_glibc29=yes], [gold_cv_lib_glibc29=no])]) AM_CONDITIONAL(TLS_DESCRIPTORS, test "$gold_cv_lib_glibc29" = "yes") @@ -460,7 +458,7 @@ dnl Test for the -frandom-seed option. AC_CACHE_CHECK([for -frandom-seed support], [gold_cv_c_random_seed], [save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -frandom-seed=foo" -AC_COMPILE_IFELSE([int i;], [gold_cv_c_random_seed=yes], +AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [gold_cv_c_random_seed=yes], [gold_cv_c_random_seed=no]) CFLAGS="$save_CFLAGS"]) if test "$gold_cv_c_random_seed" = "yes"; then @@ -531,7 +529,7 @@ LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" AC_SUBST(LFS_CFLAGS) AC_CHECK_HEADERS(sys/mman.h) -AC_CHECK_FUNCS(chsize mmap) +AC_CHECK_FUNCS(chsize mmap link) AC_REPLACE_FUNCS(pread ftruncate ffsll) AC_CACHE_CHECK([mremap with MREMAP_MAYMOVE], [gold_cv_lib_mremap_maymove], @@ -550,6 +548,28 @@ fi # Link in zlib if we can. This allows us to write compressed sections. AM_ZLIB +AC_ARG_ENABLE([threads], +[[ --enable-threads[=ARG] multi-threaded linking [ARG={auto,yes,no}]]], +[case "${enableval}" in + yes | "") threads=yes ;; + no) threads=no ;; + auto) threads=auto ;; + *) threads=yes ;; + esac], +[threads=auto]) + +if test "$threads" = "yes"; then + AX_PTHREAD([threads=yes], AC_MSG_ERROR([pthread not found])) +elif test "$threads" = "auto"; then + AX_PTHREAD([threads=yes], [threads=no]) +fi + +if test "$threads" = "yes"; then + AC_DEFINE(ENABLE_THREADS, 1, + [Define to do multi-threaded linking]) +fi +AM_CONDITIONAL(THREADS, test "$threads" = "yes") + dnl We have to check these in C, not C++, because autoconf generates dnl tests which have no type information, and current glibc provides dnl multiple declarations of functions like basename when compiling @@ -564,14 +584,14 @@ dnl assuming here that there is no compiler that groks -gpubnames dnl but does not grok -Werror.) save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -gpubnames" -AC_COMPILE_IFELSE([int i;], [have_pubnames=yes], [have_pubnames=no]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_pubnames=yes], [have_pubnames=no]) CFLAGS="$save_CFLAGS" AM_CONDITIONAL(HAVE_PUBNAMES, test "$have_pubnames" = "yes") dnl Check if gcc supports the -fno-use-linker-plugin option. save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -fno-use-linker-plugin" -AC_COMPILE_IFELSE([int i;], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [have_no_use_linker_plugin=yes], [have_no_use_linker_plugin=no]) CFLAGS="$save_CFLAGS" AM_CONDITIONAL(HAVE_NO_USE_LINKER_PLUGIN, test "$have_no_use_linker_plugin" = "yes") @@ -593,7 +613,7 @@ case "$ac_cv_search_dlopen" in esac AC_SUBST(DLOPEN_LIBS) -AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times) +AC_CHECK_FUNCS(mallinfo posix_fallocate fallocate readv sysconf times mkdtemp) AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf, strverscmp, strndup, memmem]) # Use of ::std::tr1::unordered_map::rehash causes undefined symbols @@ -615,11 +635,11 @@ AC_CACHE_CHECK([whether std::tr1::hash is defined], [gold_cv_hash_off_t], [CXXFLAGS_hold=$CXXFLAGS CXXFLAGS="$CXXFLAGS $LFS_CFLAGS" -AC_COMPILE_IFELSE([ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ #include #include std::tr1::hash h; -], +])], [gold_cv_hash_off_t=yes], [gold_cv_hash_off_t=no]) CXXFLAGS=$CXXFLAGS_hold]) @@ -633,12 +653,12 @@ fi # probably be removed after the bug has been fixed for a while. AC_CACHE_CHECK([whether we can use attributes with template functions], [gold_cv_template_attribute], -[AC_COMPILE_IFELSE([ +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ template extern void foo(const char*, ...) __attribute__ ((__format__ (__printf__, 1, 2))); template void foo(const char* format, ...) {} void bar() { foo("%s\n", "foo"); } -], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])]) +])], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])]) if test "$gold_cv_template_attribute" = "yes"; then AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1, [Define if attributes work on C++ templates])