• Brad King's avatar
    Handle usr-move without forcing absolute paths (#14041) · 6c613b43
    Brad King authored
    In commit 0c727b90 (install(EXPORT): Force absolute paths for usr-move,
    2013-03-08) and commit d4774140 (configure_package_config_file: force
    absolute paths for usr-move, 2013-01-24) we supported Linux
    distributions implementing the "/usr move" by assuming that installation
    to (/usr)?/lib(64)? represents a non-relocatable system package.
    
    When cross-compiling one may prepare a package for installation into a
    system location on a target machine but install the package files on the
    *host* machine inside another path for use with CMAKE_FIND_ROOT_PATH.
    In this case the package development files must still be relocatable.
    
    Handle "/usr move" with a new approach that works with relocatable
    files.  Teach configure_package_config_file and install(EXPORT) to
    generate special logic in a package configuration file or targets file
    for installation under (/usr)?/lib(64)?.  Teach the file to recognize
    when it is loaded through a symlink that refers to the same realpath as
    its original install destination.  In such a case, use the original
    install prefix.  Otherwise, compute the prefix relative to the current
    file location to make it relocatable.
    6c613b43
CMakePackageConfigHelpers.cmake 11.3 KB