Remove alloca(0) calls
[deliverable/binutils-gdb.git] / gold / configure.ac
index de3b63038a2c0e60e1cf4fd20a5c366d7486f45f..76db2b7586b894a4566efabf11d1bd62457a8dbc 100644 (file)
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl
 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-2019 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
 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 <http://www.gnu.org/licenses/>.
 dnl
 
 dnl <http://www.gnu.org/licenses/>.
 dnl
 
-AC_PREREQ(2.59)
-
 AC_INIT(gold, 0.1)
 AC_CONFIG_SRCDIR(gold.cc)
 
 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)
 
 
 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
 # 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
 
 sysroot_relocatable=0
 if test -n "$sysroot"; then
-  case "sysroot" in
+  case "$sysroot" in
     "${prefix}" | "${prefix}/"* | \
     "${exec_prefix}" | "${exec_prefix}/"* | \
     '${prefix}' | '${prefix}/'*| \
     "${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)
 
 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])
 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
 
   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=
 # 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],
 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
 #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"
 
 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,
 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"
               [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"])
                  [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],
 
 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")
 [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],
 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 <features.h>
 #if !defined __GLIBC__
 error
 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4)
 error
 #endif
 #include <features.h>
 #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")
 
 
 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_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 <omp.h>
 int i;
 #pragma omp threadprivate (i)
 #include <omp.h>
 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,
 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"
 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;
 }
 __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],
 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 <features.h>
 #if !defined __GLIBC__
 error
 #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 9)
 error
 #endif
 #include <features.h>
 #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")
 
 
 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_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
 [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_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],
 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
 
 # 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
 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"
 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"
 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")
 
 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)
 
 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
 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<off_t> is defined],
 [gold_cv_hash_off_t],
 [CXXFLAGS_hold=$CXXFLAGS
 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
 [gold_cv_hash_off_t],
 [CXXFLAGS_hold=$CXXFLAGS
 CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
-AC_COMPILE_IFELSE([
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
 #include <sys/types.h>
 #include <tr1/unordered_map>
 std::tr1::hash<off_t> h;
 #include <sys/types.h>
 #include <tr1/unordered_map>
 std::tr1::hash<off_t> h;
-],
+])],
 [gold_cv_hash_off_t=yes],
 [gold_cv_hash_off_t=no])
 CXXFLAGS=$CXXFLAGS_hold])
 [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],
 # 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<typename T> extern void foo(const char*, ...)
   __attribute__ ((__format__ (__printf__, 1, 2)));
 template<typename T> void foo(const char* format, ...) {}
 void bar() { foo<int>("%s\n", "foo"); }
 template<typename T> extern void foo(const char*, ...)
   __attribute__ ((__format__ (__printf__, 1, 2)));
 template<typename T> void foo(const char* format, ...) {}
 void bar() { foo<int>("%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])
 if test "$gold_cv_template_attribute" = "yes"; then
   AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1,
            [Define if attributes work on C++ templates])
This page took 0.026904 seconds and 4 git commands to generate.