X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ld%2Fconfigure.in;h=619c15161cf73497880b10143502aafbd1397c42;hb=d6f6f455778b10037503bcc39352b5174bba5e45;hp=b89c2a13467857722dab1e4860f05e780472dc9c;hpb=68b2fc7af6c5303cbe64d9df581ade294975fa69;p=platform%2Fupstream%2Fbinutils.git diff --git a/ld/configure.in b/ld/configure.in index b89c2a1..619c151 100644 --- a/ld/configure.in +++ b/ld/configure.in @@ -1,22 +1,41 @@ dnl Process this file with autoconf to produce a configure script dnl -AC_PREREQ(2.13) -AC_INIT(ldmain.c) +dnl Copyright 2012 Free Software Foundation +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 the Free Software Foundation; either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; see the file COPYING3. If not see +dnl . +dnl -AC_CANONICAL_SYSTEM +AC_PREREQ(2.59) +AC_INIT +AC_CONFIG_SRCDIR(ldmain.c) + +AC_CANONICAL_TARGET +AC_CANONICAL_BUILD AC_ISC_POSIX changequote(,)dnl -BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${srcdir}/../bfd/configure.in` +BFD_VERSION=`${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'` changequote([,])dnl AM_INIT_AUTOMAKE(ld, ${BFD_VERSION}) +AM_MAINTAINER_MODE -AM_PROG_LIBTOOL - +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_ERROR(enable-targets option must specify target names or 'all') + yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all') ;; no) enable_targets= ;; *) enable_targets=$enableval ;; @@ -29,28 +48,107 @@ AC_ARG_ENABLE(64-bit-bfd, *) AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;; esac],[want64=false])dnl -build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" -AC_ARG_ENABLE(build-warnings, -[ --enable-build-warnings Enable build-time compiler warnings if gcc is used], +AC_ARG_WITH(sysroot, +[ --with-sysroot[=DIR] Search for usr/lib et al within DIR.], +[ + case ${with_sysroot} in + yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;; + *) TARGET_SYSTEM_ROOT=$with_sysroot ;; + esac + + TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' + use_sysroot=yes + + if test "x$prefix" = xNONE; then + test_prefix=/usr/local + else + test_prefix=$prefix + fi + if test "x$exec_prefix" = xNONE; then + test_exec_prefix=$test_prefix + else + test_exec_prefix=$exec_prefix + fi + case ${TARGET_SYSTEM_ROOT} in + "${test_prefix}"|"${test_prefix}/"*|\ + "${test_exec_prefix}"|"${test_exec_prefix}/"*|\ + '${prefix}'|'${prefix}/'*|\ + '${exec_prefix}'|'${exec_prefix}/'*) + t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE" + TARGET_SYSTEM_ROOT_DEFINE="$t" + ;; + esac +], [ + use_sysroot=no + TARGET_SYSTEM_ROOT= + TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"' +]) +AC_SUBST(use_sysroot) +AC_SUBST(TARGET_SYSTEM_ROOT) +AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + +dnl Use --enable-gold to decide if this linker should be the default. +dnl "install_as_default" is set to false if gold is the default linker. +dnl "installed_linker" is the installed BFD linker name. +AC_ARG_ENABLE(gold, +[[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]], +[case "${enableval}" in + default) + install_as_default=no + installed_linker=ld.bfd + ;; + yes|no) + install_as_default=yes + installed_linker=ld.bfd + ;; + *) + AC_MSG_ERROR([invalid --enable-gold argument]) + ;; + esac], +[install_as_default=yes + installed_linker=ld.bfd]) +AC_SUBST(install_as_default) +AC_SUBST(installed_linker) + +AC_ARG_ENABLE([got], +AS_HELP_STRING([--enable-got=], + [GOT handling scheme (target, single, negative, multigot)]), [case "${enableval}" in - yes) ;; - no) build_warnings="-w";; - ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${build_warnings} ${t}";; - *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` - build_warnings="${t} ${build_warnings}";; - *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; + target | single | negative | multigot) got_handling=$enableval ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-got option) ;; +esac], +[got_handling=target]) + +case "${got_handling}" in + target) + AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_TARGET_DEFAULT], + [Define to choose default GOT handling scheme]) ;; + single) + AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_SINGLE], + [Define to choose default GOT handling scheme]) ;; + negative) + AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_NEGATIVE], + [Define to choose default GOT handling scheme]) ;; + multigot) + AC_DEFINE([GOT_HANDLING_DEFAULT], [GOT_HANDLING_MULTIGOT], + [Define to choose default GOT handling scheme]) ;; + *) AC_MSG_ERROR(bad value ${got_handling} for --enable-got option) ;; esac -if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then - echo "Setting warning flags = $build_warnings" 6>&1 -fi])dnl -WARN_CFLAGS="" -if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then - WARN_CFLAGS="${build_warnings}" -fi -AC_SUBST(WARN_CFLAGS) -AM_CONFIG_HEADER(config.h:config.in) +AM_BINUTILS_WARNINGS + +AM_LC_MESSAGES + +AC_CONFIG_HEADERS([config.h:config.in]) + +# PR 14072 +AH_VERBATIM([00_CONFIG_H_CHECK], +[/* Check that config.h is #included before system headers + (this works only for glibc, but that should be enough). */ +#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__) +# error config.h must be #included before system headers +#endif +#define __CONFIG_H__ 1]) if test -z "$target" ; then AC_MSG_ERROR(Unrecognized target system type; please check config.sub.) @@ -62,10 +160,17 @@ fi # host-specific stuff: AC_PROG_CC +AC_PROG_CXX +AC_GNU_SOURCE +AC_USE_SYSTEM_EXTENSIONS +ACX_LARGEFILE AC_PROG_INSTALL -ALL_LINGUAS="fr sv tr es" -CY_GNU_GETTEXT +LT_INIT + +ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi id bg it uk" +ZW_GNU_GETTEXT_SISTER_DIR +AM_PO_SUBDIRS AC_EXEEXT @@ -73,25 +178,77 @@ AC_PROG_YACC AM_PROG_LEX AM_MAINTAINER_MODE +AM_CONDITIONAL(GENINSRC_NEVER, false) +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) -AC_CHECK_FUNCS(sbrk) +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 +# Check for dlopen support and enable plugins if possible. +enable_plugins=yes +AC_CHECK_HEADER([dlfcn.h],[],[enable_plugins=no],[AC_INCLUDES_DEFAULT]) +AC_SEARCH_LIBS([dlopen],[dl],[],[enable_plugins=no],[]) +AC_CHECK_FUNCS([dlopen dlsym dlclose],[],[enable_plugins=no]) +# We also support plugins on Windows (MinGW). +if test x$enable_plugins = xno ; then + AC_CHECK_HEADERS([windows.h],[enable_plugins=yes],[],[AC_INCLUDES_DEFAULT]) +fi +AM_CONDITIONAL([ENABLE_PLUGINS], [test x$enable_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, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], [extern int getopt (int, char *const*, const char *);])], +ld_cv_decl_getopt_unistd_h=yes, ld_cv_decl_getopt_unistd_h=no)]) +AC_MSG_RESULT($ld_cv_decl_getopt_unistd_h) +if test $ld_cv_decl_getopt_unistd_h = yes; then + AC_DEFINE([HAVE_DECL_GETOPT], 1, + [Is the prototype for getopt in in the expected format?]) +fi + BFD_BINARY_FOPEN -BFD_NEED_DECLARATION(strstr) -BFD_NEED_DECLARATION(free) -BFD_NEED_DECLARATION(sbrk) -BFD_NEED_DECLARATION(getenv) -BFD_NEED_DECLARATION(environ) +AC_CHECK_DECLS([strstr, free, sbrk, getenv, environ]) + +# Link in zlib if we can. This is needed only for the bootstrap tests +# right now, since those tests use libbfd, which depends on zlib. +AM_ZLIB # When converting linker scripts into strings for use in emulation # files, use astring.sed if the compiler supports ANSI string @@ -101,9 +258,9 @@ BFD_NEED_DECLARATION(environ) # support string concatenation. AC_MSG_CHECKING([whether ANSI C string concatenation works]) AC_CACHE_VAL(ld_cv_string_concatenation, -[AC_TRY_COMPILE(,[char *a = "a" "a";], - [ld_cv_string_concatenation=yes], - [ld_cv_string_concatenation=no])]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [char *a = "a" "a";])], + ld_cv_string_concatenation=yes, + ld_cv_string_concatenation=no)]) AC_MSG_RESULT($ld_cv_string_concatenation) if test "$ld_cv_string_concatenation" = "yes"; then STRINGIFY=astring.sed @@ -126,6 +283,15 @@ 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.in 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 + for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'` do if test "$targ_alias" = "all"; then @@ -145,6 +311,15 @@ do EMUL=$targ_emul fi + if test x${want64} = xfalse; then + . ${srcdir}/../bfd/config.bfd + fi + + if test x${want64} = xtrue; then + targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls" + targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath" + fi + for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do case " $all_emuls " in *" e${i}.o "*) ;; @@ -186,9 +361,6 @@ AC_SUBST(EMUL) TDIRS=tdirs AC_SUBST_FILE(TDIRS) -dnl FIXME: We will build a 64 bit BFD for a 64 bit host or a 64 bit -dnl target, and in those cases we should also build the 64 bit -dnl emulations. if test x${all_targets} = xtrue; then if test x${want64} = xtrue; then EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)' @@ -202,6 +374,7 @@ else fi AC_SUBST(EMULATION_OFILES) AC_SUBST(EMUL_EXTRA_OFILES) +AC_SUBST(LIB_PATH) EMULATION_LIBPATH=$all_libpath AC_SUBST(EMULATION_LIBPATH) @@ -218,10 +391,21 @@ case "$target_vendor" in hp) EXTRA_SHLIB_EXTENSION=".sl" ;; *) EXTRA_SHLIB_EXTENSION= ;; esac + +case "$target_os" in + lynxos) EXTRA_SHLIB_EXTENSION=".a" ;; +esac + if test x${EXTRA_SHLIB_EXTENSION} != x ; then AC_DEFINE_UNQUOTED(EXTRA_SHLIB_EXTENSION, "$EXTRA_SHLIB_EXTENSION", [Additional extension a shared object might have.]) fi -AC_OUTPUT(Makefile po/Makefile.in:po/Make-in, -[sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile]) +dnl Required by html, pdf, install-pdf and install-html +AC_SUBST(datarootdir) +AC_SUBST(docdir) +AC_SUBST(htmldir) +AC_SUBST(pdfdir) + +AC_CONFIG_FILES(Makefile po/Makefile.in:po/Make-in) +AC_OUTPUT