mirror of
https://git.yoctoproject.org/poky
synced 2026-04-18 12:32:12 +02:00
cmake: support to create per-toolchain cmake file in SDK
The patch creates ${MULTIMACH_TARGET_SYS}-toolchain.cmake file
at ${SDK_INSTALL_DIR}/sysroots/${SDK_SYS}/usr/share/cmake/, which is
per-toolchain CMake toolchain file containing arch-specific values
and independent of OE environment variables.
The file gets created after installing SDK toolchain installer
ined by running "bitbake -c populate_sdk <image>".
The changes are similar to meson-setup.py which is used to
create arch-specific
${SDK_INSTALL_DIR}/sysroots/${SDK_SYS}/usr/share/meson/*-meson.cross
[YOCTO #14644]
Tested-by: Jan Dorniak <jaskij@gmail.com>
(From OE-Core rev: 42e68397ec74b3cd8ae5df45355c8f6254b48cd8)
Signed-off-by: Jagadeesh Krishnanjanappa <workjagadeesh@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
90862733ed
commit
ee5f9d9fdd
@@ -109,6 +109,7 @@ toolchain_shared_env_script () {
|
||||
echo 'export OECORE_SDK_VERSION="${SDK_VERSION}"' >> $script
|
||||
echo 'export ARCH=${ARCH}' >> $script
|
||||
echo 'export CROSS_COMPILE=${TARGET_PREFIX}' >> $script
|
||||
echo 'export OECORE_TUNE_CCARGS="${TUNE_CCARGS}"' >> $script
|
||||
|
||||
cat >> $script <<EOF
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
set(SDK_INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../../..")
|
||||
set(HOST_SYSROOT "${SDK_INSTALL_DIR}/sysroots/@OECORE_SDK_SYS")
|
||||
set(TARGET_SYSROOT "${SDK_INSTALL_DIR}/sysroots/@OECORE_TARGET_SYS")
|
||||
set(HOST_BIN "${HOST_SYSROOT}/usr/bin")
|
||||
set(TOOLCHAIN_NAME "@OECORE_TARGET_ALIAS")
|
||||
set(GCC_DIR "${HOST_BIN}/${TOOLCHAIN_NAME}")
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR "@OECORE_TARGET_ARCH")
|
||||
|
||||
set(CMAKE_C_COMPILER "${GCC_DIR}/${TOOLCHAIN_NAME}-gcc")
|
||||
set(CMAKE_CXX_COMPILER "${GCC_DIR}/${TOOLCHAIN_NAME}-g++")
|
||||
|
||||
set(ARCH_FLAGS "@OECORE_TUNE_CCARGS")
|
||||
set(CMAKE_C_FLAGS "${ARCH_FLAGS}" CACHE STRING "" FORCE )
|
||||
set(CMAKE_CXX_FLAGS "${ARCH_FLAGS}" CACHE STRING "" FORCE )
|
||||
set(CMAKE_ASM_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
|
||||
set(CMAKE_LDFLAGS_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
|
||||
|
||||
set(CMAKE_SYSROOT "${TARGET_SYSROOT}")
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${TARGET_SYSROOT}" )
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
|
||||
|
||||
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX "")
|
||||
|
||||
set(CMAKE_PROGRAM_PATH "${HOST_SYSROOT}/usr/bin" CACHE STRING "" FORCE)
|
||||
33
meta/recipes-devtools/cmake/cmake/cmake-setup.py
Executable file
33
meta/recipes-devtools/cmake/cmake/cmake-setup.py
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import string
|
||||
import sys
|
||||
|
||||
class Template(string.Template):
|
||||
delimiter = "@"
|
||||
|
||||
class Environ():
|
||||
def __getitem__(self, name):
|
||||
if name == "OECORE_SDK_SYS":
|
||||
return os.path.basename(os.environ["OECORE_NATIVE_SYSROOT"])
|
||||
elif name == "OECORE_TARGET_SYS":
|
||||
return os.path.basename(os.environ["OECORE_TARGET_SYSROOT"])
|
||||
elif name == "OECORE_TARGET_ALIAS":
|
||||
return os.path.basename(os.environ["TARGET_PREFIX"].strip("-"))
|
||||
else:
|
||||
return os.environ[name]
|
||||
|
||||
try:
|
||||
sysroot = os.environ['OECORE_NATIVE_SYSROOT']
|
||||
except KeyError:
|
||||
print("Not in environment setup, bailing")
|
||||
sys.exit(1)
|
||||
|
||||
template_file = os.path.join(sysroot, 'usr/share/cmake/SDKToolchainConfig.cmake.template')
|
||||
cross_file = os.path.join(sysroot, 'usr/share/cmake/%s-toolchain.cmake' % (os.path.basename(os.environ["OECORE_TARGET_SYSROOT"])))
|
||||
with open(template_file) as in_file:
|
||||
template = in_file.read()
|
||||
output = Template(template).substitute(Environ())
|
||||
with open(cross_file, "w") as out_file:
|
||||
out_file.write(output)
|
||||
@@ -6,6 +6,8 @@ DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
|
||||
|
||||
SRC_URI:append:class-nativesdk = " \
|
||||
file://OEToolchainConfig.cmake \
|
||||
file://SDKToolchainConfig.cmake.template \
|
||||
file://cmake-setup.py \
|
||||
file://environment.d-cmake.sh \
|
||||
file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
|
||||
"
|
||||
@@ -42,6 +44,11 @@ do_install:append:class-nativesdk() {
|
||||
|
||||
mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
|
||||
install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
|
||||
|
||||
# install cmake-setup.py to create arch-specific toolchain cmake file from template
|
||||
install -m 0644 ${WORKDIR}/SDKToolchainConfig.cmake.template ${D}${datadir}/cmake/
|
||||
install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
|
||||
install -m 0755 ${WORKDIR}/cmake-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
|
||||
}
|
||||
|
||||
FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}"
|
||||
|
||||
Reference in New Issue
Block a user