2025-03-10 CMake简单的toolchain.cmake

include(CMakeForceCompiler)

# Get platform dir
get_filename_component(_CURRENT_DIR ${CMAKE_CURRENT_LIST_DIR} REALPATH)
get_filename_component(_PLATFORM_DIR ${_CURRENT_DIR} DIRECTORY)

# Get realpaths of symlinks
get_filename_component(_TOOLCHAIN_DIR       ${_PLATFORM_DIR}/toolchain/x86_64-pokysdk-linux REALPATH)
get_filename_component(_SYSROOT_DIR         ${_PLATFORM_DIR}/sysroot/aarch64-poky-linux     REALPATH)
get_filename_component(_THIRDPARTY_DIR      ${_PLATFORM_DIR}/was/aarch64-linux              REALPATH)
get_filename_component(_SOC_SDK_TOOLS_DIR   ${_PLATFORM_DIR}/soc_sdk_tools                  REALPATH)
set(_USR_EXT_DIR ${_SYSROOT_DIR}/usr/ext)

# Set cross build system info.
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_HOST_SYSTEM_NAME Linux)

set(CMAKE_CXX_COMPILER      ${_TOOLCHAIN_DIR}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++)
set(CMAKE_C_COMPILER        ${_TOOLCHAIN_DIR}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc)
set(CMAKE_ASM_COMPILER      ${_TOOLCHAIN_DIR}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++)

set(CMAKE_SYSROOT ${_SYSROOT_DIR})

set(CMAKE_FIND_ROOT_PATH
    ${_SYSROOT_DIR}
    ${_USR_EXT_DIR}
    ${_THIRDPARTY_DIR}
    ${_SOC_SDK_TOOLS_DIR}
    ${_PLATFORM_DIR}/soc_sdk_libs/rcar-xos/v3.18.0
)

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 PC file search paths.
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${_SYSROOT_DIR})
set(ENV{PKG_CONFIG_PATH}        ${_SYSROOT_DIR}/usr/lib/pkgconfig:${_USR_EXT_DIR}/lib/pkgconfig)

set(TRIPLE aarch64-linux)

if(${CMAKE_VERSION} VERSION_GREATER 3.7.0)
    set(FLAGS_SUFFIX _INIT) # 3.7.x introduced new _INIT variables for toolchainfile flags
else()
    set(FLAGS_SUFFIX)
endif()

# ASSEMBLER config
set(CMAKE_ASM_FLAGS${FLAGS_SUFFIX} "--sysroot=${_SYSROOT_DIR}")

# C COMPILER config
set(CMAKE_C_COMPILER_TARGET ${TRIPLE})
set(CMAKE_C_FLAGS${FLAGS_SUFFIX}   "--sysroot=${_SYSROOT_DIR}")

# C++ COMPILER config
set(CMAKE_CXX_COMPILER_TARGET ${TRIPLE})
set(CMAKE_CXX_FLAGS${FLAGS_SUFFIX}   "--sysroot=${_SYSROOT_DIR}")

# Add default package search path.
list(APPEND CMAKE_PREFIX_PATH
    ${_SYSROOT_DIR}
    ${_USR_EXT_DIR}
    ${_PLATFORM_DIR}/soc_sdk_libs/rcar-xos/v3.18.0/cmake
)
list(APPEND CMAKE_MODULE_PATH
    ${_THIRDPARTY_DIR}/cmake/Modules
)

# SoC vars
set(SOC_NAME v4h)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容