diff options
Diffstat (limited to 'sw/cmake/gcc-arm-none-eabi.cmake')
| -rw-r--r-- | sw/cmake/gcc-arm-none-eabi.cmake | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sw/cmake/gcc-arm-none-eabi.cmake b/sw/cmake/gcc-arm-none-eabi.cmake new file mode 100644 index 0000000..5e91a53 --- /dev/null +++ b/sw/cmake/gcc-arm-none-eabi.cmake @@ -0,0 +1,51 @@ +set(WINDOWS_ST_CLT_PATH "C:/ST/STM32CubeCLT/STM32CubeCLT/GNU-tools-for-STM32/bin/") +set(MAC_ST_CLT_PATH "/opt/ST/STM32CubeCLT/GNU-tools-for-STM32/bin/") +if(EXISTS "${WINDOWS_ST_CLT_PATH}") + set(TOOLCHAIN_DIRECTORIES ${WINDOWS_ST_CLT_PATH}) +elseif(EXISTS "${MAC_ST_CLT_PATH}") + set(TOOLCHAIN_DIRECTORIES ${MAC_ST_CLT_PATH}) +else() + # Try to find an STM32CubeIDE installation to use for the toolchain. + file(GLOB TOOLCHAIN_DIRECTORIES + "C:/ST/STM32CubeIDE_*/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/" + "/opt/st/stm32cubeide_*/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/" + "/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.*/tools/bin/" + ) +endif() +list(LENGTH TOOLCHAIN_DIRECTORIES TOOLCHAIN_DIRECTORIES_COUNT) + +if(TOOLCHAIN_DIRECTORIES_COUNT LESS 1) + message(WARNING "Could not find an STM32CubeIDE installation. Falling back to tools available on PATH.") +else() + list(GET TOOLCHAIN_DIRECTORIES 0 TOOLCHAIN_DIRECTORY) + if (TOOLCHAIN_DIRECTORIES_COUNT GREATER 1) + message(STATUS "Found multiple STM32CubeIDE installations. Using \"${TOOLCHAIN_DIRECTORY}\".") + endif() +endif() + +if(WIN32) + set(TOOLCHAIN_SUFFIX ".exe") +endif() + +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(TOOLCHAIN_PREFIX "arm-none-eabi-") +if(DEFINED TOOLCHAIN_DIRECTORY) + set(TOOLCHAIN_PREFIX "${TOOLCHAIN_DIRECTORY}/${TOOLCHAIN_PREFIX}") +endif() +set(FLAGS "-fdata-sections -ffunction-sections --specs=nano.specs -Wl,--gc-sections") +set(ASM_FLAGS "-x assembler-with-cpp") +set(CPP_FLAGS "-fno-rtti -fno-exceptions -fno-threadsafe-statics") + +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} ${FLAGS}) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} ${ASM_FLAGS}) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++${TOOLCHAIN_SUFFIX} ${FLAGS} ${CPP_FLAGS}) +set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy${TOOLCHAIN_SUFFIX}) +set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size${TOOLCHAIN_SUFFIX}) + +set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") +set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") +set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") + +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
\ No newline at end of file |
