summaryrefslogtreecommitdiffstats
path: root/cmake/arm-gcc-toolchain.cmake
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.at>2025-02-25 23:37:17 +0100
committerMarkus Mittendrein <git@maxmitti.at>2025-02-25 23:39:45 +0100
commit1b3d654c764b25cdd979acca0c956564cfe8358d (patch)
tree25b08bca9fb82d4bc7b293d273dc095207e9d0d8 /cmake/arm-gcc-toolchain.cmake
downloadmsp432_test-master.tar.gz
msp432_test-master.zip
InitialHEADmaster
Diffstat (limited to 'cmake/arm-gcc-toolchain.cmake')
-rw-r--r--cmake/arm-gcc-toolchain.cmake35
1 files changed, 35 insertions, 0 deletions
diff --git a/cmake/arm-gcc-toolchain.cmake b/cmake/arm-gcc-toolchain.cmake
new file mode 100644
index 0000000..d7dc340
--- /dev/null
+++ b/cmake/arm-gcc-toolchain.cmake
@@ -0,0 +1,35 @@
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_PROCESSOR ARM)
+
+set(TOOLCHAIN_PREFIX "arm-none-eabi-")
+
+set(SPECS "-specs=nosys.specs -specs=nano.specs")
+
+# Without that flag CMake is not able to pass test compilation check
+if (${CMAKE_VERSION} VERSION_EQUAL "3.6.0" OR ${CMAKE_VERSION} VERSION_GREATER "3.6")
+ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+endif ()
+
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc CACHE STRING "")
+set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} CACHE STRING "")
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++ CACHE STRING "")
+
+# Default C compiler flags
+set(CMAKE_C_FLAGS_DEBUG_INIT "-g3 -Og -Wall -DDEBUG ${SPECS}")
+set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -Wall ${SPECS}")
+set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -Wall ${SPECS}")
+set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${SPECS}")
+# Default C++ compiler flags
+set(CMAKE_CXX_FLAGS_DEBUG_INIT "-g3 -Og -Wall -DDEBUG ${SPECS}")
+set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -Wall ${SPECS}")
+set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -Wall ${SPECS}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -Wall ${SPECS}")
+
+find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy DOC "objcopy tool")
+find_program(CMAKE_SIZE_UTIL ${TOOLCHAIN_PREFIX}size DOC "size tool")
+
+if (NOT TARGET toolchain)
+ add_library(toolchain INTERFACE)
+ target_compile_options(toolchain INTERFACE "-fno-exceptions")
+ target_link_options(toolchain INTERFACE "-Wl,--gc-sections" "-Wl,--print-memory-usage")
+endif ()