X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Fconfigure.ac;h=7f4cff079b7f241930c89578de857857898d87a5;hb=d7c448293af68af5fc270d90d3746e39a496e750;hp=7e16cb4967822d156fe142b51761eccbb55bb2df;hpb=6c19b93bcd0d136f7be4d1e1e3f2e8d7b5917009;p=binutils-gdb.git diff --git a/ld/configure.ac b/ld/configure.ac index 7e16cb49678..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-2017 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,6 +38,19 @@ 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], @@ -48,13 +60,8 @@ AC_ARG_ENABLE(targets, 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.], @@ -177,6 +184,35 @@ AC_ARG_ENABLE(relro, 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], @@ -203,6 +239,25 @@ case "${enable_default_hash_style}" in *) 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 @@ -227,7 +282,7 @@ fi # host-specific stuff: -ALL_LINGUAS="bg da de es fi fr ga id it ru sr sv tr uk vi zh_CN zh_TW pt_BR" +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 @@ -245,30 +300,24 @@ ACX_PROG_CMP_IGNORE_INITIAL AC_SUBST(HDEFINES) 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, -[ --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 AC_MSG_CHECKING(for a known getopt prototype in unistd.h) AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h, @@ -280,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 @@ -310,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` @@ -351,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 @@ -367,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 ;; @@ -434,6 +474,40 @@ 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.]) @@ -447,11 +521,11 @@ 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 @@ -471,10 +545,16 @@ AC_SUBST(EMULATION_LIBPATH) if test x${enable_static} = xno; then 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 @@ -491,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) @@ -499,3 +599,5 @@ AC_SUBST(pdfdir) AC_CONFIG_FILES(Makefile po/Makefile.in:po/Make-in) AC_OUTPUT + +GNU_MAKE_JOBSERVER