Clone of official tools

Revision:
43:2a7da56ebd24
diff -r 2cf3f29fece1 -r 2a7da56ebd24 export/cmake/CMakeLists.txt.tmpl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/export/cmake/CMakeLists.txt.tmpl	Tue Sep 25 13:43:09 2018 -0500
@@ -0,0 +1,119 @@
+# This file was automagically generated by mbed.org.
+# If you would like to add your own targets, create a
+# project.cmake file locally in your project directory.
+
+CMAKE_MINIMUM_REQUIRED(VERSION 3.9)
+SET(CMAKE_SYSTEM_NAME Generic)
+#SET(CMAKE_SYSTEM_PROCESSOR arm)
+SET(CMAKE_CROSSCOMPILING TRUE)
+
+# force compiler settings
+SET(CMAKE_C_COMPILER_WORKS TRUE)
+SET(CMAKE_CXX_COMPILER_WORKS TRUE)
+
+# force cmake compilers
+SET(CMAKE_ASM_COMPILER    "{{asm}}")
+SET(CMAKE_C_COMPILER      "{{cc}}")
+SET(CMAKE_CXX_COMPILER    "{{cxx}}")
+SET(ELF2BIN               "{{elf2bin}}")
+{% if hex_files %}
+SET(SREC_CAT "srec_cat")
+{%- endif %}
+
+# if the environment does not specify build type, set to Debug
+IF(NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE "Debug"
+        CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
+        FORCE)
+ENDIF()
+
+# here starts the project
+PROJECT({{name}} C CXX ASM)
+
+# uncomment below to have a verbose build process
+#SET(CMAKE_VERBOSE_MAKEFILE ON)
+
+SET(LD_SYS_LIBS "{%- block sys_libs -%} -Wl,--start-group {{ld_sys_libs|join(" ")}} {{libraries|join(" ")}} -Wl,--end-group {%- endblock -%}")
+
+SET(CMAKE_C_FLAGS "{{cc_flags}} -include mbed_config.h")
+SET(CMAKE_CXX_FLAGS "{{cxx_flags}}  -include mbed_config.h")
+SET(CMAKE_ASM_FLAGS "{{asm_flags}}  -include mbed_config.h")
+SET(CMAKE_CXX_LINK_FLAGS "{{ld_flags}} {% for p in library_paths %} {{user_library_flag}}${CMAKE_CURRENT_SOURCE_DIR}/{{p}} {% endfor %}")
+{% if pp -%}
+SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} ${LD_SYS_LIBS} {{link_script_option}} ${CMAKE_BINARY_DIR}/{{name}}_pp.link_script.ld")
+{%- endif %}
+
+ADD_DEFINITIONS(
+  {% for d in symbols %}-D{{d}}
+  {% endfor %})
+INCLUDE_DIRECTORIES(
+  {% for p in include_paths %}{{p}}
+  {% endfor %})
+
+# executable {{name}}
+ADD_EXECUTABLE({{name}}
+  {% for src in sources %}{{src}}
+  {% endfor %})
+SET_TARGET_PROPERTIES({{name}} PROPERTIES ENABLE_EXPORTS 1)
+# add syslibs dependencies to create the correct linker order
+TARGET_LINK_LIBRARIES({{name}} {{ld_sys_libs|join(" ")}})
+
+{% if pp -%}
+add_custom_command(TARGET {{name}} PRE_LINK
+                   COMMAND "{{pp}}" {{pp_flags}} {{linker_script}} -o ${CMAKE_CURRENT_BINARY_DIR}/{{name}}_pp.link_script.ld
+                   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                   BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/{{name}}_pp.link_script.ld"
+                   )
+{%- endif %}
+
+add_custom_command(TARGET {{name}} POST_BUILD
+                   COMMAND ${ELF2BIN} -O ihex $<TARGET_FILE:{{name}}> $<TARGET_FILE:{{name}}>.hex
+                   COMMAND ${CMAKE_COMMAND} -E echo "-- built: $<TARGET_FILE:{{name}}>.hex"
+                  )
+
+{% if hex_files %}
+add_custom_command(TARGET {{name}} POST_BUILD
+                   COMMAND ${SREC_CAT}
+                        {% for f in hex_files %}${CMAKE_CURRENT_SOURCE_DIR}/{{f}} {% endfor %}
+                        -intel $<TARGET_FILE:{{name}}>.hex
+                        -intel -o $<TARGET_FILE:{{name}}>-combined.hex -intel --line-length=44
+                   COMMAND ${CMAKE_COMMAND} -E echo "-- built: $<TARGET_FILE:{{name}}>-combined.hex"
+                   )
+{% endif %}
+
+
+##########################################################################
+# mbed-cli specific targets
+##########################################################################
+
+# detect the build type and select the corresponding cli profile
+SET(MBED_BUILD_PROFILE "")
+STRING(TOLOWER ${CMAKE_BUILD_TYPE} LOWERCASE_CMAKE_BUILD_TYPE)
+IF(LOWERCASE_CMAKE_BUILD_TYPE MATCHES debug)
+    SET(MBED_BUILD_PROFILE "mbed-os/tools/profiles/debug.json")
+ELSEIF(LOWERCASE_CMAKE_BUILD_TYPE MATCHES relwithdebinfo)
+    SET(MBED_BUILD_PROFILE "mbed-os/tools/profiles/develop.json")
+ELSEIF(LOWERCASE_CMAKE_BUILD_TYPE MATCHES release)
+    SET(MBED_BUILD_PROFILE "mbed-os/tools/profiles/release.json")
+ELSEIF(LOWERCASE_CMAKE_BUILD_TYPE MATCHES minsizerel)
+    SET(MBED_BUILD_PROFILE "mbed-os/tools/profiles/release.json")
+ELSE()
+  MESSAGE(WARNING "Build type '${CMAKE_BUILD_TYPE}' is unknown, using debug profile")
+  SET(MBED_BUILD_PROFILE "mbed-os/tools/profiles/debug.json")
+ENDIF()
+
+# optional custom target to build via mbed-cli
+ADD_CUSTOM_TARGET(mbed-cli-build
+        COMMAND ${CMAKE_COMMAND} -E echo "mbed compile --build BUILD/${CMAKE_BUILD_TYPE} --profile ${MBED_BUILD_PROFILE}"
+        COMMAND mbed compile --build BUILD/${CMAKE_BUILD_TYPE} --profile ${MBED_BUILD_PROFILE}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        SOURCES ${SOURCE_FILES} ${SYS_SOURCE_FILES})
+
+IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/project.cmake)
+  INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/project.cmake)
+ELSE()
+  MESSAGE(STATUS "Add a local project.cmake file to add your own targets.")
+ENDIF()
+
+# this will take care of binary directories generated by cmake/clion not to confuse the cli build
+FILE(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/.mbedignore" CONTENT "*")