Files
blink/gcc-arm-none-eabi.cmake
T
2026-07-27 20:14:07 +08:00

33 lines
1.3 KiB
CMake

# CMake toolchain file for ARM Cortex-M0+ (MSPM0)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
# Skip linker test for bare-metal (avoids _exit/_sbrk etc.)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# 路径检测:环境变量 → PATH
set(ARM_TOOLCHAIN_DIR "$ENV{ARM_GCC_ROOT}" CACHE PATH "ARM GCC toolchain root")
if(NOT ARM_TOOLCHAIN_DIR OR NOT EXISTS "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-gcc${CMAKE_EXECUTABLE_SUFFIX}")
find_program(_GCC arm-none-eabi-gcc)
if(_GCC)
get_filename_component(_BIN ${_GCC} DIRECTORY)
get_filename_component(ARM_TOOLCHAIN_DIR ${_BIN} DIRECTORY)
endif()
endif()
if(NOT ARM_TOOLCHAIN_DIR)
message(FATAL_ERROR "ARM GCC not found. Install or set ARM_GCC_ROOT env var.")
endif()
set(CMAKE_C_COMPILER "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-gcc.exe")
set(CMAKE_CXX_COMPILER "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-g++.exe")
set(CMAKE_ASM_COMPILER "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-gcc.exe")
set(CMAKE_OBJCOPY "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-objcopy.exe")
set(CMAKE_SIZE "${ARM_TOOLCHAIN_DIR}/bin/arm-none-eabi-size.exe")
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)