Skip to content
  • Brad King's avatar
    BUG: Preserve all non-targets on user link lines · 08221c2a
    Brad King authored
    In CMake 2.4 the generated link line for a target always preserved the
    originally specified libraries in their original order.  Dependencies
    were satisfied by inserting extra libraries into the line, though it had
    some bugs.  In CMake 2.6.0 we preserved only the items on the link line
    that are not known to be shared libraries.  This reduced excess
    libraries on the link line.  However, since we link to system libraries
    (such as /usr/lib/libm.so) by asking the linker to search (-lm), some
    linkers secretly replace the library with a static library in another
    implicit search directory (developers can override this by using an
    imported target to force linking by full path).  When this happens the
    order still matters.
    
    To avoid this and other potential subtle issues this commit restores
    preservation of all non-target items and static library targets.  This
    will create cases of unnecessary, duplicate shared libraries on the link
    line if the user specifies them, but at least it will work.  In the
    future we can attempt a more advanced analysis to safely remove
    duplicate shared libraries from the link line.
    08221c2a