• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1set(BUILD_DIR "$ENV{BUILD_TMP_DIR}" ) #version id
2set(OBJCOPY_PATH "$ENV{OBJCOPY_PATH}" ) #OBJCOPY_PATH
3
4#将所有对象库添加到列表中
5foreach(FILE_NAME ${ALL_OBJECT_LIBRARYS})
6    list(APPEND CORTEX_M4_SRCS
7        $<TARGET_OBJECTS:${FILE_NAME}>
8    )
9endforeach()
10
11
12
13#编译结果
14string(TOUPPER ${PLAM_TYPE} PLAM_TYPE_UP)
15string(TOUPPER ${CPU_TYPE} CPU_TYPE_UP)
16#编译.a库
17add_library(CortexM4  STATIC "${CORTEX_M4_SRCS}")
18set_target_properties(CortexM4 PROPERTIES SUFFIX ".a")
19
20add_custom_target(cleanobj)
21add_custom_command(TARGET cleanobj POST_BUILD
22                   COMMAND echo "Finish Building!"
23                   )
24
25if (${COMPILE_MODE} STREQUAL "debug")
26    message("=============== COMPILE_MODE is ${COMPILE_MODE} ===============")
27else()
28    add_custom_command(
29        TARGET CortexM4
30        POST_BUILD
31        COMMAND sh ${PROJECT_SOURCE_DIR}/cmake/common/build_auxiliary_script/make_lib_rename_file_type.sh ${OBJCOPY_PATH} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} "CortexM4.a"
32    )
33endif()
34####以下为m4 make install打包脚本#####
35set(m4_cortex_export modules)
36
37# 下面的变量分别定义了安装根目录、头文件安装目录、动态库安装目录、静态库安装目录、OBJECT文件安装目录、可执行程序安装目录、配置文件安装目录。
38# 注意:所有安装路径必须是相对CMAKE_INSTALL_PREFIX的相对路径,不可以使用绝对路径!!!
39# 否则安装目录下的配置文件(foo-config.cmake, foo-tragets.cmake等)拷贝到其它目录时无法工作。
40set(INSTALL_M4_CORTEX_BASE_DIR               .)
41set(INSTALL_M4_CORTEX_INCLUDE_DIR            UniProton/include)
42set(INSTALL_M4_CORTEX_INCLUDE_SEC_DIR        libboundscheck/include)
43set(INSTALL_M4_CORTEX_ARCHIVE_DIR            UniProton/lib/cortex_m4)
44set(INSTALL_M4_CORTEX_ARCHIVE_SEC_DIR        libboundscheck/lib/cortex_m4)
45set(INSTALL_M4_CORTEX_ARCHIVE_CONFIG_DIR     UniProton/config)
46set(INSTALL_M4_CORTEX_CONFIG_DIR             cmake/cortex_m4)
47
48
49
50
51include(CMakePackageConfigHelpers)
52configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/tool_chain/m4-cortex-config.cmake.in
53    ${CMAKE_CURRENT_BINARY_DIR}/UniProton-m4-cortex-config.cmake
54    INSTALL_DESTINATION ${INSTALL_M4_CORTEX_CONFIG_DIR}
55    PATH_VARS
56    INSTALL_M4_CORTEX_BASE_DIR
57    INSTALL_M4_CORTEX_INCLUDE_DIR
58    INSTALL_M4_CORTEX_INCLUDE_SEC_DIR
59    INSTALL_M4_CORTEX_ARCHIVE_DIR
60    INSTALL_M4_CORTEX_ARCHIVE_SEC_DIR
61    INSTALL_M4_CORTEX_ARCHIVE_CONFIG_DIR
62    INSTALL_M4_CORTEX_CONFIG_DIR
63    INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
64)
65install(EXPORT ${m4_cortex_export}
66        NAMESPACE UniProton::
67        FILE UniProton-m4-cortex-targets.cmake
68        DESTINATION ${INSTALL_M4_CORTEX_CONFIG_DIR}
69)
70install(FILES
71    ${CMAKE_CURRENT_BINARY_DIR}/UniProton-m4-cortex-config.cmake
72    DESTINATION ${INSTALL_M4_CORTEX_CONFIG_DIR}
73)
74
75install(TARGETS
76    CortexM4
77    EXPORT ${m4_cortex_export}
78    ARCHIVE DESTINATION ${INSTALL_M4_CORTEX_ARCHIVE_DIR}/
79)
80if (${COMPILE_OPTION} STREQUAL "coverity" OR ${COMPILE_OPTION} STREQUAL "fortify" OR ${COMPILE_OPTION} STREQUAL "UniProton")
81    message("Don't Install Sec Lib In ${COMPILE_OPTION}")
82else()
83    install(TARGETS
84        CortexMXsec_c
85        EXPORT ${m4_cortex_export}
86        ARCHIVE DESTINATION ${INSTALL_M4_CORTEX_ARCHIVE_SEC_DIR}
87    )
88
89    if (NOT "${RPROTON_INSTALL_FILE_OPTION}" STREQUAL "SUPER_BUILD")
90        ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹}
91        file(GLOB glob_sec_files  ${PROJECT_SOURCE_DIR}/platform/libboundscheck/include/*.h)
92        install(FILES
93            ${glob_sec_files}
94            DESTINATION ${INSTALL_M4_CORTEX_INCLUDE_SEC_DIR}
95        )
96    endif()
97endif()
98install(FILES
99    ${PROJECT_SOURCE_DIR}/build/uniproton_config/config_m4/prt_buildef.h
100    DESTINATION ${INSTALL_M4_CORTEX_ARCHIVE_CONFIG_DIR}/cortex_m4/config_m4
101)
102if (NOT "${RPROTON_INSTALL_FILE_OPTION}" STREQUAL "SUPER_BUILD")
103    ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹}
104
105    install(FILES
106        ${PROJECT_SOURCE_DIR}/src/config/prt_config.c
107        ${PROJECT_SOURCE_DIR}/src/config/prt_config_internal.h
108        ${PROJECT_SOURCE_DIR}/src/config/config/prt_config.h
109        DESTINATION ${INSTALL_M4_CORTEX_ARCHIVE_CONFIG_DIR}
110    )
111
112    ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹}
113    file(GLOB hw_drv_include_files  ${PROJECT_SOURCE_DIR}/src/include/uapi/hw/armv7-m/*)
114    install(FILES
115        ${hw_drv_include_files}
116        DESTINATION ${INSTALL_M4_CORTEX_INCLUDE_DIR}/hw/armv7-m
117    )
118
119
120    install(FILES
121
122        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_clk.h
123        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_cpup.h
124        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_err.h
125        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_errno.h
126        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_event.h
127        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_exc.h
128        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_hook.h
129        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_hwi.h
130        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_idle.h
131        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_mem.h
132        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_module.h
133        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_queue.h
134        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_sem.h
135        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_sys.h
136        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_task.h
137        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_tick.h
138        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_timer.h
139        ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_typedef.h
140        DESTINATION ${INSTALL_M4_CORTEX_INCLUDE_DIR}/
141    )
142endif()
143