aboutsummaryrefslogtreecommitdiff
path: root/cmake/stm32.toolchain.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/stm32.toolchain.cmake')
-rw-r--r--cmake/stm32.toolchain.cmake47
1 files changed, 47 insertions, 0 deletions
diff --git a/cmake/stm32.toolchain.cmake b/cmake/stm32.toolchain.cmake
new file mode 100644
index 0000000..b9acf62
--- /dev/null
+++ b/cmake/stm32.toolchain.cmake
@@ -0,0 +1,47 @@
+include(CMakeForceCompiler)
+
+set(TRIPLE "arm-none-eabi")
+
+if (TOOLCHAIN_ROOT)
+ message("Setting ENV: ${TOOLCHAIN_ROOT}")
+ set(ENV[_TOOLCHAIN_ROOT} "${TOOLCHAIN_ROOT}")
+else ()
+ message("Setting locally ENV: ${TOOLCHAIN_ROOT}")
+ set(TOOLCHAIN_ROOT "$ENV{_TOOLCHAIN_ROOT}")
+endif ()
+
+if (TOOLCHAIN_ROOT STREQUAL "")
+ set(TOOLCHAIN_ROOT /usr)
+ message("Using default TOOLCHAIN_ROOT: ${TOOLCHAIN_ROOT}")
+else ()
+ message("Using TOOLCHAIN_ROOT: ${TOOLCHAIN_ROOT}")
+endif ()
+
+set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_PROCESSOR arm)
+set(CMAKE_CROSSCOMPILING 1)
+
+set(TARGET_FLAGS "-mcpu=cortex-m3 -mthumb")
+set(BASE_FLAGS "-Wall -g -ffunction-sections -fdata-sections ${TARGET_FLAGS}")
+
+set(CMAKE_C_FLAGS "${BASE_FLAGS}" CACHE STRING "c flags") # XXX Generate TIME_T dynamically.
+set(CMAKE_CXX_FLAGS "${BASE_FLAGS} -fno-exceptions -fno-rtti -felide-constructors -std=gnu++0x" CACHE STRING "c++ flags")
+
+#set(LINKER_FLAGS "-Os -Wl,--gc-sections ${TARGET_FLAGS} -T${TEENSY_ROOT}/mk20dx256.ld")
+#set(LINKER_FLAGS "-Os -Wl,--gc-sections ${TARGET_FLAGS}")
+set(LINKER_FLAGS "-O0 -Wl,--gc-sections ${TARGET_FLAGS}")
+set(LINKER_FLAGS "-O0 ${TARGET_FLAGS}")
+set(LINKER_LIBS "-larm_cortexM4l_math -lm")
+#set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE)
+#set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE)
+set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE)
+
+CMAKE_FORCE_C_COMPILER("${TOOLCHAIN_ROOT}/bin/${TRIPLE}-gcc" GNU)
+CMAKE_FORCE_CXX_COMPILER("${TOOLCHAIN_ROOT}/bin/${TRIPLE}-g++" GNU)
+# search for programs in the build host directories
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+# for libraries and headers in the target directories
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+# add_definitions(-MMD)