Skip to content
  • Felix Fietkau's avatar
    build: use gcc-provided ar, nm and ranlib where appropriate · 9a467998
    Felix Fietkau authored
    
    
    Since GCC 4.7, GCC provides its own wrappers around ar, nm and ranlib, which
    should be used for builds with link-time optimization. Since GCC 4.9, using them
    actually necessary for LTO builds using convenience libraries to succeed.
    
    There are some packages which try to automatically detect if gcc-{ar,nm,ranlib}
    exist (one example is my package "fastd" in the package repository, which tries
    to use LTO). This breaks because the OpenWrt build system explicitly sets the
    binutils versions of these tools.
    
    As it doesn't cause any issues to use gcc-{ar,nm,ranlib} instead of
    {ar,nm,ranlib} even without LTO, this patch just makes OpenWrt use the
    GCC-provided versions by default, which fixes the build of such packages with
    GCC 4.9.
    
    (I know that builds fail though when clang is used with -flto and
    gcc-{ar,nm,ranlib}, but as all OpenWrt toolchains are based on GCC, this isn't
    a real issue.)
    
    Completely cleaning the tree (or at least `make clean toolchain/clean`) is
    necessary to get a consistent state after the binutils plugins support patch and
    this one (as trying to use gcc-{ar,nm,ranlib} with a binutils built without
    plugin support will definitely lead to a build failure).
    
    Signed-off-by: default avatarMatthias Schiffer <mschiffer@universe-factory.net>
    
    SVN-Revision: 43784
    9a467998