aboutsummaryrefslogtreecommitdiff
path: root/utils/cmake/buildtools
diff options
context:
space:
mode:
Diffstat (limited to 'utils/cmake/buildtools')
-rw-r--r--utils/cmake/buildtools/codal.cmake85
-rw-r--r--utils/cmake/buildtools/yotta.cmake23
2 files changed, 108 insertions, 0 deletions
diff --git a/utils/cmake/buildtools/codal.cmake b/utils/cmake/buildtools/codal.cmake
new file mode 100644
index 0000000..ea8b23c
--- /dev/null
+++ b/utils/cmake/buildtools/codal.cmake
@@ -0,0 +1,85 @@
+add_executable(
+ ${device.device}
+ ${SOURCE_FILES}
+)
+
+if("${INCLUDE_DIRS}" STRGREATER "")
+ target_include_directories(${device.device} PUBLIC "${INCLUDE_DIRS}")
+endif()
+
+set_target_properties(${device.device} PROPERTIES SUFFIX "" ENABLE_EXPORTS ON)
+
+# link the executable with supporting libraries.
+target_link_libraries(
+ ${device.device}
+ ${CODAL_DEPS}
+)
+
+# import toolchain bin generation command
+if(${device.generate_bin})
+ include(${TOOLCHAIN_FOLDER}/bin-generator.cmake)
+endif()
+
+# import toolchain hex generation command
+if(${device.generate_hex})
+ include(${TOOLCHAIN_FOLDER}/hex-generator.cmake)
+endif()
+
+# post process command hook, depends on the hex file generated by the build system.
+if("${device.post_process.command}" STRGREATER "" OR "${device.post_process}" STRGREATER "")
+
+ if("${device.post_process}" STRGREATER "")
+ set(POST_PROCESS_COMMAND ${device.post_process})
+ else()
+ set(POST_PROCESS_COMMAND ${device.post_process.command})
+ endif()
+
+ set(POST_PROCESS_DEPENDS "${device.post_process.depends}")
+
+ # replace specific strings in the command, this gives users flexibility, they don't have to manually specify the location of files
+ string(REPLACE "<OUTPUT_HEX_LOCATION>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR}/${device.device}.hex CODAL_POSTPROCESS_COMMAND ${POST_PROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_HEX_DESTINATION>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_HEX_NAME>" ${device.device} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+
+ string(REPLACE "<OUTPUT_BIN_LOCATION>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR}/${device.device}.bin CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_BIN_DESTINATION>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_BIN_NAME>" ${device.device}.bin CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+
+ string(REPLACE "<OUTPUT_ELF_LOCATION>" ${PROJECT_SOURCE_DIR}/build/${device.device} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_ELF_DESTINATION>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+ string(REPLACE "<OUTPUT_ELF_NAME>" ${device.device} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+
+ string(REPLACE "<CODAL_APP_OUTPUT_DIR>" ${PROJECT_SOURCE_DIR}/${CODAL_APP_OUTPUT_DIR} CODAL_POSTPROCESS_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+
+ #convert to a command
+ separate_arguments(FINAL_COMMAND UNIX_COMMAND ${CODAL_POSTPROCESS_COMMAND})
+
+ # execute
+ if(POST_PROCESS_DEPENDS STREQUAL "ELF")
+ add_custom_command(
+ TARGET ${device.device}
+ COMMAND ${FINAL_COMMAND}
+ DEPENDS ${device.device}
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+ COMMENT "Executing post process command"
+ )
+ elseif(POST_PROCESS_DEPENDS STREQUAL "HEX")
+ add_custom_command(
+ TARGET ${device.device}_hex
+ COMMAND ${FINAL_COMMAND}
+ DEPENDS ${device.device}
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+ COMMENT "Executing post process command"
+ )
+ else()
+ #by default post process should depend on hex
+ add_custom_command(
+ TARGET ${device.device}_bin
+ COMMAND ${FINAL_COMMAND}
+ DEPENDS ${device.device}
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+ COMMENT "Executing post process command"
+ )
+ endif()
+
+endif() \ No newline at end of file
diff --git a/utils/cmake/buildtools/yotta.cmake b/utils/cmake/buildtools/yotta.cmake
new file mode 100644
index 0000000..8002006
--- /dev/null
+++ b/utils/cmake/buildtools/yotta.cmake
@@ -0,0 +1,23 @@
+if("${INCLUDE_DIRS}" STRGREATER "")
+ target_include_directories(codal PUBLIC "${INCLUDE_DIRS}")
+endif()
+
+add_library(codal "${SOURCE_FILES}")
+set_target_properties(codal PROPERTIES SUFFIX "" ENABLE_EXPORTS ON)
+
+target_compile_definitions(codal PUBLIC "${device.definitions}")
+target_include_directories(codal PUBLIC ${PLATFORM_INCLUDES_PATH})
+target_compile_options(codal PUBLIC -include ${EXTRA_INCLUDES_PATH})
+
+set(STRIPPED "")
+string(STRIP "${CMAKE_LINKER_FLAGS}" STRIPPED)
+# link the executable with supporting libraries.
+target_link_libraries(codal "${CODAL_DEPS};${STRIPPED}")
+
+#
+# Supress the addition of implicit linker flags (such as -rdynamic)
+#
+set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
+set(CMAKE_EXE_EXPORTS_C_FLAG "")
+set(CMAKE_EXE_EXPORTS_CXX_FLAG "") \ No newline at end of file