• [gentoo-dev] [PATCH] cmake.eclass: Set CMAKE_SYSROOT in toolchain file

    From James Le Cuirot@21:1/5 to All on Tue Feb 28 10:50:01 2023
    We previously set CMAKE_FIND_ROOT_PATH, but CMAKE_SYSROOT also sets this
    and more. The latter is needed when cross-compiling Fortran code such as sci-libs/lapack. Without this, it uses the toolchain's default sysroot,
    adds a -L/usr/${CHOST}/usr/lib flag based on that, reads the libc.so.6
    ld script from this directory, does not apply any sysroot to the paths
    within because the script is outside the sysroot, and finally fails when attempting to link the host's libc.so.6.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/cmake.eclass | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/eclass/cmake.eclass b/eclass/cmake.eclass
    index 2c5620adede5..a2ff80a233b4 100644
    --- a/eclass/cmake.eclass
    +++ b/eclass/cmake.eclass
    @@ -489,7 +489,7 @@ cmake_src_configure() {
    # When cross-compiling with a sysroot (e.g. with crossdev's emerge wrappers)
    # we need to tell cmake to use libs/headers from the sysroot but programs from / only.
    cat >> "${toolchain_file}" <<- _EOF_ || die
    - set(CMAKE_FIND_ROOT_PATH "${SYSROOT}")
    + set(CMAKE_SYSROOT "${ESYSROOT}")
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    --
    2.39.1

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)