diff options
author | davek <davek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-03 09:14:32 +0000 |
---|---|---|
committer | davek <davek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-03 09:14:32 +0000 |
commit | 25630dc79a217ae6e7ccac9ef62c93b88490d036 (patch) | |
tree | 727195368f3f7531be4fdf5a82d599ea20456d83 /configure.ac | |
parent | bf07bf98a8277a332920f508ae5d22f29c0dd450 (diff) | |
download | gcc-25630dc79a217ae6e7ccac9ef62c93b88490d036.tar.gz |
ChangeLog:
2010-11-03 Ian Lance Taylor <iant@google.com>
Dave Korn <dave.korn.cygwin@gmail.com>
PR lto/46273
* configure.ac: Remove libelf tests. Build lto-plugin on ELF always
and on other supported platforms whenever LTO is enabled.
* configure: Rebuild.
gcc/ChangeLog:
2010-11-03 Ian Lance Taylor <iant@google.com>
PR lto/46273
* gcc/config.gcc: Don't set lto_binary_reader.
* doc/install.texi (Prerequisites): Remove libelf paragraphs.
(Configuration): Mention --disable-lto. Remove --with-libelf
paragraph.
lto-plugin/ChangeLog:
2010-11-03 Dave Korn <dave.korn.cygwin@gmail.com>
PR lto/46273
* lto-plugin.h: Delete.
* lto-plugin-elf.c: Likewise.
* lto-plugin-coff.c: Likewise.
* configure.ac: Don't use libelf, don't source config.gcc.
(LIBELFLIBS): Delete.
(LIBELFINC): Delete.
(LTO_FORMAT): Delete.
(SYM_STYLE): Add AC_DEFINE var, set based on $target.
(config.h): Add AC_CONFIG_HEADERS directive.
* Makefile.am (LIBELFLIBS): Delete.
(LIBELFINC): Delete.
(LTO_FORMAT): Delete.
(DEFS): Import.
(AM_CPPFLAGS): Use it. Don't use LIBELFINC.
(liblto_plugin_la_SOURCES): Don't use LTO_FORMAT, don't include
any object-format-specific source file in the link.
(liblto_plugin_la_LIBADD): Don't use LIBELFLIBS.
* config.h.in: Generate.
* configure: Regenerate.
* Makefile.in: Likewise.
* lto-plugin.c (O_BINARY): Definition moved here from lto-plugin.h.
(LTO_SEGMENT_NAME): New definition.
(LTO_SECTION_PREFIX): Definition moved here from lto-plugin.h.
(LTO_SECTION_PREFIX_LEN): New definition.
(struct sym_aux): Struct definition moved here from lto-plugin.h.
(struct plugin_symtab): Likewise.
(struct plugin_objfile): Likewise.
(struct plugin_objfile): New struct def.
(enum symbol_style): New enum type.
(add_symbols): Make static.
(claimed_files): Likewise.
(num_claimed_files): Likewise.
(sym_style): New global.
(check): Make static.
(parse_table_entry): Likewise. Respect sym_style when extracting
symbol from symtab entry.
(translate): Make static.
(resolve_conflicts): Likewise.
(process_symtab): New function, per-section callback version of
old object-format-specific handling from deleted lto-plugin-elf.c.
(claim_file_handler): Convert ELF-specific version from deleted
lto-plugin-elf.c to simple_object interface and move here.
(process_options): Allow new '-sym-style=' option.
(onload): Don't call deleted onload_format_checks hook.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166233 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 150 |
1 files changed, 7 insertions, 143 deletions
diff --git a/configure.ac b/configure.ac index ac44863917d..c0e7384fdb6 100644 --- a/configure.ac +++ b/configure.ac @@ -1656,149 +1656,12 @@ AC_ARG_ENABLE(lto, enable_lto=$enableval, enable_lto=yes; default_enable_lto=yes) - -ACX_ELF_TARGET_IFELSE([if test x"$enable_lto" = x"yes" ; then - # Make sure that libelf.h and gelf.h are available. - AC_ARG_WITH(libelf, [ --with-libelf=PATH Specify prefix directory for the installed libelf package - Equivalent to --with-libelf-include=PATH/include - plus --with-libelf-lib=PATH/lib]) - - AC_ARG_WITH(libelf_include, [ --with-libelf-include=PATH Specify directory for installed libelf include files]) - - AC_ARG_WITH(libelf_lib, [ --with-libelf-lib=PATH Specify the directory for the installed libelf library]) - - saved_CFLAGS="$CFLAGS" - saved_CPPFLAGS="$CPPFLAGS" - saved_LIBS="$LIBS" - - case $with_libelf in - "") - libelflibs="-lelf" - libelfinc="-I/usr/include/libelf" - ;; - *) - libelflibs="-L$with_libelf/lib -lelf" - libelfinc="-I$with_libelf/include -I$with_libelf/include/libelf" - LIBS="$libelflibs $LIBS" - ;; - esac - - if test "x$with_libelf_include" != x; then - libelfinc="-I$with_libelf_include" - fi - - if test "x$with_libelf_lib" != x; then - libelflibs="-L$with_libelf_lib -lelf" - LIBS="$libelflibs $LIBS" - fi - - if test "x$with_libelf$with_libelf_include$with_libelf_lib" = x \ - && test -d ${srcdir}/libelf; then - libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/lib -lelf ' - libelfinc='-D__LIBELF_INTERNAL__ -I$$r/$(HOST_SUBDIR)/libelf/lib -I$$s/libelf/lib' - LIBS="$libelflibs $LIBS" - - else - - CFLAGS="$CFLAGS $libelfinc" - CPPFLAGS="$CPPFLAGS $libelfinc" - LIBS="$LIBS $libelflibs" - - AC_CHECK_HEADERS(libelf.h, [have_libelf_h=yes]) - AC_CHECK_HEADERS(gelf.h, [have_gelf_h=yes]) - - AC_CHECK_HEADERS(libelf/libelf.h, [have_libelf_libelf_h=yes]) - AC_CHECK_HEADERS(libelf/gelf.h, [have_libelf_gelf_h=yes]) - - # If we couldn't find libelf.h and the user forced it, emit an error. - if test x"$have_libelf_h" != x"yes" \ - && test x"$have_libelf_libelf_h" != x"yes" ; then - if test x"$default_enable_lto" != x"yes" ; then - AC_MSG_ERROR([LTO support requires libelf.h or libelf/libelf.h.]) - else - enable_lto=no - libelflibs= - libelfinc= - fi - fi - - # If we couldn't find gelf.h and the user forced it, emit an error. - if test x"$have_gelf_h" != x"yes" \ - && test x"$have_libelf_gelf_h" != x"yes" ; then - if test x"$default_enable_lto" != x"yes" ; then - AC_MSG_ERROR([LTO support requires gelf.h or libelf/gelf.h.]) - else - enable_lto=no - libelflibs= - libelfinc= - fi - fi - - # Check that the detected libelf has the functions we need. We cannot - # rely on just detecting the headers since they do not include - # versioning information. Add functions, if needed. - if test x"$enable_lto" = x"yes" ; then - AC_MSG_CHECKING([for the correct version of libelf]) - AC_TRY_LINK( - [#include <libelf.h>],[ - elf_errmsg (0); - elf_getscn (0, 0); - elf_nextscn (0, 0); - elf_strptr (0, 0, 0); - elf_getident (0, 0); - elf_begin (0, 0, 0); - elf_ndxscn (0); - elf_end (0); - ], - [AC_MSG_RESULT([yes]);], - [AC_MSG_RESULT([no]); enable_lto=no; libelflibs= ; libelfinc= ] - ) - - # Check for elf_getshdrstrndx or elf_getshstrndx. The latter's flavor - # is determined in gcc/configure.ac. - if test x"$enable_lto" = x"yes" ; then - AC_MSG_CHECKING([for elf_getshdrstrndx]) - AC_TRY_LINK( - [#include <libelf.h>],[ - elf_getshdrstrndx (0, 0); - ], - [AC_MSG_RESULT([yes]);], - [AC_MSG_RESULT([no]); - AC_MSG_CHECKING([for elf_getshstrndx]) - AC_TRY_LINK( - [#include <libelf.h>],[ - elf_getshstrndx (0, 0); - ], - [AC_MSG_RESULT([yes]);], - [AC_MSG_RESULT([no]); enable_lto=no; libelflibs= ; libelfinc= ] - )] - ) - fi - - # If we couldn't enable LTO and the user forced it, emit an error. - if test x"$enable_lto" = x"no" \ - && test x"$default_enable_lto" != x"yes" ; then - AC_MSG_ERROR([To enable LTO, GCC requires libelf v0.8.12+. -Try the --with-libelf, --with-libelf-include and --with-libelf-lib options -to specify its location.]) - fi - fi - - CFLAGS="$saved_CFLAGS" - CPPFLAGS="$saved_CPPFLAGS" - LIBS="$saved_LIBS" - - fi - - # Flags needed for libelf. - AC_SUBST(libelflibs) - AC_SUBST(libelfinc) - # ELF platforms build the lto-plugin when GOLD is in use. - build_lto_plugin=${ENABLE_GOLD} -fi],[if test x"$default_enable_lto" = x"yes" ; then +ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always. + build_lto_plugin=yes +],[if test x"$default_enable_lto" = x"yes" ; then case $target in *-apple-darwin* | *-cygwin* | *-mingw*) ;; - # On other non-ELF platforms, LTO must be explicitly enabled. + # On other non-ELF platforms, LTO has yet to be validated. *) enable_lto=no ;; esac else @@ -1816,11 +1679,12 @@ fi],[if test x"$default_enable_lto" = x"yes" ; then esac fi # Among non-ELF, only Windows platforms support the lto-plugin so far. + # Build it unless LTO was explicitly disabled. case $target in - *-cygwin* | *-mingw*) build_lto_plugin=yes ;; + *-cygwin* | *-mingw*) build_lto_plugin=$enable_lto ;; *) ;; esac - default_enable_lto=no]) +]) # By default, C is the only stage 1 language. |