sdk: resolve absolute paths in toolchain file at runtime

MinGW toolchain doesn't perform relocation during installation,
so all the absolute path point to the temporary sdk paths.
Use the location of the toolchain file to get the absolute
paths at runtime instead instead of using external SDKPATH
env for it.

Change-Id: I699b2178baf5cc855a57186056341b6c6eefbbf5
Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
This commit is contained in:
Samuli Piippo 2022-02-16 14:43:17 +00:00
parent 5cbac6cf35
commit 0ef2348d49
2 changed files with 8 additions and 5 deletions

View File

@ -75,6 +75,8 @@ create_qt6_sdk_files () {
cmake_minimum_required(VERSION 3.11)
include_guard(GLOBAL)
get_filename_component(SYSROOTS \${CMAKE_CURRENT_LIST_DIR}/../../../.. ABSOLUTE)
set(ENV{PKG_CONFIG_SYSROOT_DIR} "${SDKTARGETSYSROOT}")
set(ENV{PKG_CONFIG_PATH} "${SDKTARGETSYSROOT}${libdir}/pkgconfig")
@ -123,10 +125,9 @@ if(NOT DEFINED CMAKE_INSTALL_PREFIX)
endif()
set(CMAKE_INSTALL_PREFIX "${prefix}" CACHE PATH "Install path prefix")
EOF
}
create_qt6_sdk_files:append:sdkmingw32() {
sed -i -e 's|${SDKPATH}|$ENV{SDKPATH}|g' \
# resolve absolute paths at runtime
sed -i -e 's|${SDKPATH}/sysroots|\${SYSROOTS}|g' \
${SDK_OUTPUT}${SDKPATHNATIVE}/usr/share/cmake/Qt6Toolchain.cmake
}

View File

@ -156,11 +156,13 @@ set(QT_HOST_PATH "\$ENV{OECORE_NATIVE_SYSROOT}/usr" CACHE PATH "")
set(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING "TRUE" CACHE BOOL "")
EOF
sed -i ${D}${QT6_INSTALL_BINDIR}/* ${D}${QT6_INSTALL_LIBDIR}/cmake/Qt6/qt.toolchain.cmake \
-e 's|${RECIPE_SYSROOT_NATIVE}|${SDKPATHNATIVE}|'
RELPATH="${@os.path.relpath(d.getVar('bindir'), d.getVar('QT6_INSTALL_BINDIR'))}"
sed -i ${D}${QT6_INSTALL_BINDIR}/* \
-e "s|${RECIPE_SYSROOT_NATIVE}.*cmake|\$script_dir_path/$RELPATH/cmake|"
RELPATH=${@os.path.relpath(d.getVar('prefix') + '/share/cmake/Qt6Toolchain.cmake', d.getVar('QT6_INSTALL_LIBDIR') + '/cmake/Qt6')}
sed -i ${D}${QT6_INSTALL_LIBDIR}/cmake/Qt6/qt.toolchain.cmake \
-e 's|${RECIPE_SYSROOT_NATIVE}|\${CMAKE_CURRENT_LIST_DIR}/../../../..|' \
-e "s|/.*/toolchain.cmake|\${CMAKE_CURRENT_LIST_DIR}/$RELPATH|"
}