X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Fconfigure.ac;h=7f4cff079b7f241930c89578de857857898d87a5;hb=d7c448293af68af5fc270d90d3746e39a496e750;hp=84d1b036e77d60cba6560d29d3026b0d3da1a3bf;hpb=4894d80b508ad2626eb2cfd23cfcb5635cdf7442;p=binutils-gdb.git diff --git a/ld/configure.ac b/ld/configure.ac index 84d1b036e77..7f4cff079b7 100644 --- a/ld/configure.ac +++ b/ld/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script dnl -dnl Copyright (C) 2012-2015 Free Software Foundation, Inc. +dnl Copyright (C) 2012-2022 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,16 +17,15 @@ dnl along with this program; see the file COPYING3. If not see dnl . dnl -AC_PREREQ(2.59) m4_include([../bfd/version.m4]) AC_INIT([ld], BFD_VERSION) AC_CONFIG_SRCDIR(ldmain.c) AC_CANONICAL_TARGET AC_CANONICAL_BUILD -AC_ISC_POSIX AM_INIT_AUTOMAKE +AM_SILENT_RULES([yes]) AM_MAINTAINER_MODE AC_PROG_CC @@ -39,22 +38,30 @@ AC_PROG_INSTALL LT_INIT ACX_LARGEFILE +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +AC_ARG_ENABLE(checking, +[ --enable-checking enable run-time checks], +[case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac])dnl +if test x$ac_checking != x ; then + AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) +fi + AC_ARG_WITH(lib-path, [ --with-lib-path=dir1:dir2... set default LIB_PATH],LIB_PATH=$withval) AC_ARG_ENABLE(targets, [ --enable-targets alternative target configurations], [case "${enableval}" in yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all') - ;; + ;; no) enable_targets= ;; *) enable_targets=$enableval ;; esac])dnl -AC_ARG_ENABLE(64-bit-bfd, -[ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)], -[case "${enableval}" in - yes) want64=true ;; - no) want64=false ;; - *) AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;; -esac],[want64=false])dnl + +BFD_64_BIT AC_ARG_WITH(sysroot, [ --with-sysroot[=DIR] Search for usr/lib et al within DIR.], @@ -120,7 +127,7 @@ AC_SUBST(installed_linker) AC_ARG_ENABLE([got], AS_HELP_STRING([--enable-got=], - [GOT handling scheme (target, single, negative, multigot)]), + [GOT handling scheme (target, single, negative, multigot)]), [case "${enableval}" in target | single | negative | multigot) got_handling=$enableval ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-got option) ;; @@ -130,16 +137,16 @@ esac], case "${got_handling}" in target) AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_TARGET_DEFAULT], - [Define to choose default GOT handling scheme]) ;; + [Define to choose default GOT handling scheme]) ;; single) AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_SINGLE], - [Define to choose default GOT handling scheme]) ;; + [Define to choose default GOT handling scheme]) ;; negative) AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_NEGATIVE], - [Define to choose default GOT handling scheme]) ;; + [Define to choose default GOT handling scheme]) ;; multigot) AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_MULTIGOT], - [Define to choose default GOT handling scheme]) ;; + [Define to choose default GOT handling scheme]) ;; *) AC_MSG_ERROR(bad value ${got_handling} for --enable-got option) ;; esac @@ -151,10 +158,106 @@ AC_ARG_ENABLE(compressed_debug_sections, AS_HELP_STRING([--enable-compressed-debug-sections={all,ld,none}], [compress debug sections by default])], [case ,"${enableval}", in - *,yes,* | *,all,* | *,ld,*) ac_default_compressed_debug_sections=yes ;; + ,yes, | ,all, | *,ld,*) ac_default_compressed_debug_sections=yes ;; ,no, | ,none,) ac_default_compressed_debug_sections=no ;; esac])dnl +# Decide setting DT_RUNPATH instead of DT_RPATH by default +ac_default_new_dtags=unset +# Provide a configure time option to override our default. +AC_ARG_ENABLE(new_dtags, + AS_HELP_STRING([--enable-new-dtags], + [set DT_RUNPATH instead of DT_RPATH by default])], +[case "${enableval}" in + yes) ac_default_new_dtags=1 ;; + no) ac_default_new_dtags=0 ;; +esac])dnl + +# Decide if -z relro should be enabled in ELF linker by default. +ac_default_ld_z_relro=unset +# Provide a configure time option to override our default. +AC_ARG_ENABLE(relro, + AS_HELP_STRING([--enable-relro], + [enable -z relro in ELF linker by default]), +[case "${enableval}" in + yes) ac_default_ld_z_relro=1 ;; + no) ac_default_ld_z_relro=0 ;; +esac])dnl + +# Decide if DT_TEXTREL check should be enabled in ELF linker. +ac_default_ld_textrel_check=unset +AC_ARG_ENABLE([textrel-check], + AC_HELP_STRING([--enable-textrel-check=@<:@yes|no|warning|error@:>@], + [enable DT_TEXTREL check in ELF linker]), +[case "${enableval}" in + yes|no|warning|error) ac_default_ld_textrel_check=${enableval} ;; +esac]) + +# Decide if -z separate-code should be enabled in ELF linker by default. +ac_default_ld_z_separate_code=unset +AC_ARG_ENABLE(separate-code, + AS_HELP_STRING([--enable-separate-code], + [enable -z separate-code in ELF linker by default]), +[case "${enableval}" in + yes) ac_default_ld_z_separate_code=1 ;; + no) ac_default_ld_z_separate_code=0 ;; +esac]) + +# Decide if --error-handling-script should be supported. +ac_support_error_handling_script=unset +AC_ARG_ENABLE(error-handling-script, + AS_HELP_STRING([--enable-error-handling-script], + [enable/disable support for the --error-handling-script option]), +[case "${enableval}" in + yes) ac_support_error_handling_script=1 ;; + no) ac_support_error_handling_script=0 ;; +esac]) + +# 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]) + +case "${enable_default_hash_style}" in + sysv | both) ac_default_emit_sysv_hash=1 ;; + *) ac_default_emit_sysv_hash=0 ;; +esac + +case "${enable_default_hash_style}" in + gnu | both) ac_default_emit_gnu_hash=1 ;; + *) ac_default_emit_gnu_hash=0 ;; +esac + +AC_ARG_ENABLE(initfini-array, +[ --disable-initfini-array do not use .init_array/.fini_array sections], +[case "${enableval}" in + yes|no) ;; + *) AC_MSG_ERROR([invalid --enable-initfini-array argument]) ;; + esac], [enable_initfini_array=yes]) +AC_SUBST(enable_initfini_array) +if test $enable_initfini_array = yes; then + AC_DEFINE(HAVE_INITFINI_ARRAY, 1, + [Define .init_array/.fini_array sections are available and working.]) +fi + +GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) +if test "${enable_libctf}" = yes; then + AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections]) +fi +AM_CONDITIONAL(ENABLE_LIBCTF, test "${enable_libctf}" = yes) +AC_SUBST(enable_libctf) + AM_BINUTILS_WARNINGS AM_LC_MESSAGES @@ -179,7 +282,7 @@ fi # host-specific stuff: -ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi id bg it uk" +ALL_LINGUAS="bg da de es fi fr ga id it ja pt_BR ru sr sv tr uk vi zh_CN zh_TW" ZW_GNU_GETTEXT_SISTER_DIR AM_PO_SUBDIRS @@ -195,48 +298,26 @@ ACX_PROG_CMP_IGNORE_INITIAL . ${srcdir}/configure.host AC_SUBST(HDEFINES) -AC_SUBST(HOSTING_CRT0) -AC_SUBST(HOSTING_SCRT0) -AC_SUBST(HOSTING_LIBS) -AC_SUBST(HOSTING_SLIBS) AC_SUBST(NATIVE_LIB_DIRS) -AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h) -AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h) -ACX_HEADER_STRING -AC_CHECK_FUNCS(glob mkstemp realpath sbrk setlocale waitpid) -AC_CHECK_FUNCS(open lseek close) -AC_HEADER_DIRENT +# We use headers from include/ that check various HAVE_*_H macros, thus +# should ensure they are set by configure. This is true even when C99 +# guarantees they are available. +# sha1.h and md4.h test HAVE_LIMITS_H, HAVE_SYS_TYPES_H and HAVE_STDINT_H +# plugin-api.h tests HAVE_STDINT_H and HAVE_INTTYPES_H +# Besides those, we need to check anything used in ld/ not in C99. +AC_CHECK_HEADERS(fcntl.h elf-hints.h limits.h inttypes.h stdint.h \ + sys/file.h sys/mman.h sys/param.h sys/stat.h sys/time.h \ + sys/types.h unistd.h) +AC_CHECK_FUNCS(close glob lseek mkstemp open realpath sbrk waitpid) + +BFD_BINARY_FOPEN + +AC_CHECK_DECLS([asprintf, environ, sbrk]) -dnl AC_CHECK_HEADERS(sys/mman.h) AC_FUNC_MMAP AC_SEARCH_LIBS([dlopen], [dl]) -AM_CONDITIONAL([ENABLE_PLUGINS], [test x$plugins = xyes]) - -AC_ARG_ENABLE(initfini-array, - [ --enable-initfini-array use .init_array/.fini_array sections], - [], [ -AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support, - gcc_cv_initfini_array, [dnl - if test "x${build}" = "x${target}" ; then - AC_RUN_IFELSE([AC_LANG_SOURCE([ -static int x = -1; -int main (void) { return x; } -int foo (void) { x = 0; } -int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;])], - [gcc_cv_initfini_array=yes], [gcc_cv_initfini_array=no], - [gcc_cv_initfini_array=no]) - else - gcc_cv_initfini_array=no - fi]) - enable_initfini_array=$gcc_cv_initfini_array -]) -AC_SUBST(enable_initfini_array) -if test $enable_initfini_array = yes; then - AC_DEFINE(HAVE_INITFINI_ARRAY, 1, - [Define .init_array/.fini_array sections are available and working.]) -fi AC_MSG_CHECKING(for a known getopt prototype in unistd.h) AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h, @@ -248,9 +329,9 @@ if test $ld_cv_decl_getopt_unistd_h = yes; then [Is the prototype for getopt in in the expected format?]) fi -BFD_BINARY_FOPEN - -AC_CHECK_DECLS([strstr, free, sbrk, getenv, environ]) +# Link in zlib if we can. This allows us to read and write +# compressed CTF sections. +AM_ZLIB # When converting linker scripts into strings for use in emulation # files, use astring.sed if the compiler supports ANSI string @@ -278,32 +359,18 @@ EMUL= all_emuls= all_emul_extras= all_libpath= +TDIRS= -dnl We need to get an arbitrary number of tdir definitions into -dnl Makefile. We can't do it using AC_SUBST, because autoconf does -dnl not permit literal newlines in an AC_SUBST variables. So we use a -dnl file. -rm -f tdirs - -# If the host is 64-bit, then we enable 64-bit targets by default. -# This is consistent with what ../bfd/configure.ac does. -if test x${want64} = xfalse; then - AC_CHECK_SIZEOF(void *) - if test "x${ac_cv_sizeof_void_p}" = "x8"; then - want64=true - fi -fi - -elf_list_options=FALSE -elf_shlib_list_options=FALSE -elf_plt_unwind_list_options=FALSE +elf_list_options=false +elf_shlib_list_options=false +elf_plt_unwind_list_options=false for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'` do if test "$targ_alias" = "all"; then all_targets=true - elf_list_options=TRUE - elf_shlib_list_options=TRUE - elf_plt_unwind_list_options=TRUE + elf_list_options=true + elf_shlib_list_options=true + elf_plt_unwind_list_options=true else # Canonicalize the secondary target names. result=`$ac_config_sub $targ_alias 2>/dev/null` @@ -319,11 +386,11 @@ do EMUL=$targ_emul fi - if test x${want64} = xfalse; then + if test x${enable_64_bit_bfd} = xno; then . ${srcdir}/../bfd/config.bfd fi - if test x${want64} = xtrue; then + if test x${enable_64_bit_bfd} = xyes; then targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls" targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath" fi @@ -335,24 +402,29 @@ do all_emuls="$all_emuls e${i}.o" eval result=\$tdir_$i test -z "$result" && result=$targ_alias - echo tdir_$i=$result >> tdirs + TDIRS="$TDIRS +tdir_$i=$result" case "${i}" in *elf*) - elf_list_options=TRUE + elf_list_options=true ;; *) - if $GREP "TEMPLATE_NAME=elf32" ${srcdir}/emulparams/${i}.sh >/dev/null 2>/dev/null; then - elf_list_options=TRUE + if $GREP "TEMPLATE_NAME=elf" ${srcdir}/emulparams/${i}.sh >/dev/null 2>/dev/null; then + elf_list_options=true fi ;; esac - if test "$elf_list_options" = "TRUE"; then - . ${srcdir}/emulparams/${i}.sh + if test "$elf_list_options" = "true"; then + source_sh() + { + . $1 + } + source_sh ${srcdir}/emulparams/${i}.sh if test x${GENERATE_SHLIB_SCRIPT} = xyes; then - elf_shlib_list_options=TRUE + elf_shlib_list_options=true fi if test x${PLT_UNWIND} = xyes; then - elf_plt_unwind_list_options=TRUE + elf_plt_unwind_list_options=true fi fi ;; @@ -384,20 +456,76 @@ do fi done -if test x$ac_default_compressed_debug_sections == xyes ; then +if test x$ac_default_compressed_debug_sections = xyes ; then AC_DEFINE(DEFAULT_FLAG_COMPRESS_DEBUG, 1, [Define if you want compressed debug sections by default.]) fi +if test "${ac_default_new_dtags}" = unset; then + ac_default_new_dtags=0 +fi +AC_DEFINE_UNQUOTED(DEFAULT_NEW_DTAGS, + $ac_default_new_dtags, + [Define to 1 if you want to set DT_RUNPATH instead of DT_RPATH by default.]) + +if test "${ac_default_ld_z_relro}" = unset; then + ac_default_ld_z_relro=0 +fi +AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO, + $ac_default_ld_z_relro, + [Define to 1 if you want to enable -z relro in ELF linker by default.]) + +ac_default_ld_textrel_check_warning=0 +case "${ac_default_ld_textrel_check}" in + unset|no) + ac_default_ld_textrel_check=textrel_check_none + ;; + yes|warning) + ac_default_ld_textrel_check=textrel_check_warning + ac_default_ld_textrel_check_warning=1 + ;; + error) + ac_default_ld_textrel_check=textrel_check_error + ;; +esac +AC_DEFINE_UNQUOTED(DEFAULT_LD_TEXTREL_CHECK, + $ac_default_ld_textrel_check, + [The default method for DT_TEXTREL check in ELF linker.]) +AC_DEFINE_UNQUOTED(DEFAULT_LD_TEXTREL_CHECK_WARNING, + $ac_default_ld_textrel_check_warning, + [Define to 1 if DT_TEXTREL check is warning in ELF linker by default.]) + +if test "${ac_default_ld_z_separate_code}" = unset; then + ac_default_ld_z_separate_code=0 +fi +AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_SEPARATE_CODE, + $ac_default_ld_z_separate_code, + [Define to 1 if you want to enable -z separate-code in ELF linker by default.]) + +if test "${ac_support_error_handling_script}" = unset; then + ac_support_error_handling_script=1 +fi +AC_DEFINE_UNQUOTED(SUPPORT_ERROR_HANDLING_SCRIPT, + $ac_support_error_handling_script, + [Define to 1 if you want to support the --error-handling-script command line option.]) + +AC_DEFINE_UNQUOTED([DEFAULT_EMIT_SYSV_HASH], + [$ac_default_emit_sysv_hash], + [Define to 1 if you want to emit sysv hash in the ELF linker by default.]) + +AC_DEFINE_UNQUOTED([DEFAULT_EMIT_GNU_HASH], + [$ac_default_emit_gnu_hash], + [Define to 1 if you want to emit gnu hash in the ELF linker by default.]) + AC_SUBST(elf_list_options) AC_SUBST(elf_shlib_list_options) AC_SUBST(elf_plt_unwind_list_options) AC_SUBST(EMUL) -TDIRS=tdirs -AC_SUBST_FILE(TDIRS) +AC_SUBST(TDIRS) +AM_SUBST_NOTMAKE(TDIRS) if test x${all_targets} = xtrue; then - if test x${want64} = xtrue; then + if test x${enable_64_bit_bfd} = xyes; then EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)' EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES) $(ALL_64_EMUL_EXTRA_OFILES)' else @@ -416,11 +544,17 @@ EMULATION_LIBPATH=$all_libpath AC_SUBST(EMULATION_LIBPATH) if test x${enable_static} = xno; then - TESTBFDLIB="--rpath ../bfd/.libs ../bfd/.libs/libbfd.so" + TESTBFDLIB="-Wl,--rpath,../bfd/.libs ../bfd/.libs/libbfd.so" + TESTCTFLIB="-Wl,--rpath,../libctf/.libs ../libctf/.libs/libctf.so" else TESTBFDLIB="../bfd/.libs/libbfd.a" + TESTCTFLIB="../libctf/.libs/libctf.a" +fi +if test "${enable_libctf}" = no; then + TESTCTFLIB= fi AC_SUBST(TESTBFDLIB) +AC_SUBST(TESTCTFLIB) target_vendor=${target_vendor=$host_vendor} case "$target_vendor" in @@ -437,6 +571,26 @@ if test x${EXTRA_SHLIB_EXTENSION} != x ; then [Additional extension a shared object might have.]) fi +AC_CONFIG_COMMANDS([default], +[[ +case "$srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; +esac +POFILES= +GMOFILES= +for lang in dummy $OBSOLETE_ALL_LINGUAS; do + if test $lang != dummy; then + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + fi +done +sed -e '/^SRC-POTFILES =/r po/SRC-POTFILES' \ + -e '/^BLD-POTFILES =/r po/BLD-POTFILES' \ + -e "s,@POFILES@,$POFILES," \ + -e "s,@GMOFILES@,$GMOFILES," \ + po/Makefile.in > po/Makefile]],[[]]) + dnl Required by html, pdf, install-pdf and install-html AC_SUBST(datarootdir) AC_SUBST(docdir) @@ -445,3 +599,5 @@ AC_SUBST(pdfdir) AC_CONFIG_FILES(Makefile po/Makefile.in:po/Make-in) AC_OUTPUT + +GNU_MAKE_JOBSERVER