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