Skip to content
  • Lior Goldberg's avatar
    install: Do not remove compiler-defined RPATH entries · 3ec92267
    Lior Goldberg authored and Brad King's avatar Brad King committed
    Some compilers may add their own RPATH entries when invoking the linker.
    For example, a GCC installation may contain the following definition in
    the specs file:
    
      *link_libgcc:
      %D -rpath <<some specific rpath in which libstdc++.so can be found>>
    
    In this case binaries may contain RPATH entries that CMake did not add.
    When we update the RPATH on installation we must preserve these entries
    even if CMake thinks the INSTALL_RPATH value should be empty.
    
    Fix this by always using file(RPATH_CHANGE) and teach it to behave as
    file(RPATH_REMOVE) if the actual RPATH in the file is empty after
    replacing the build-tree RPATH with the install-tree RPATH.  This will
    preserve any compiler-added RPATH value instead of removing it.
    3ec92267