1set(OBJCOPY_PATH "$ENV{HCC_PATH}" ) 2##最终的链接目标,会生成对应的.a库 3################################################# 4## guest代码 5################################################# 6#添加进列表 7foreach(FILE_NAME ${ALL_OBJECT_LIBRARYS}) 8 list(FIND exclude "${FILE_NAME}" is_inclide) 9 if(${is_inclide} EQUAL -1) 10 list(APPEND GUEST_SRCS 11 $<TARGET_OBJECTS:${FILE_NAME}> 12 ) 13 endif() 14endforeach() 15 16#编译结果 17string(TOUPPER ${PLAM_TYPE} PLAM_TYPE_UP) 18string(TOUPPER ${CPU_TYPE} CPU_TYPE_UP) 19add_library(HI3093 STATIC "${GUEST_SRCS}") 20add_custom_target(cleanobj) 21add_custom_command(TARGET cleanobj POST_BUILD 22 COMMAND echo finishing) 23 24if (${COMPILE_MODE} MATCHES "^.*dbg.*$") 25 message("=============== COMPILE_MODE is ${COMPILE_MODE} ===============") 26else() 27 add_custom_command( 28 TARGET HI3093 29 POST_BUILD 30 COMMAND sh ${PROJECT_SOURCE_DIR}/cmake/common/build_auxiliary_script/make_lib_rename_file_type.sh ${OBJCOPY_PATH} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} "HI3093.a" 31 ) 32endif() 33 34####以下为make install打包脚本##### 35set(hi3093_armv8_export modules) 36 37# 下面的变量分别定义了安装根目录、头文件安装目录、动态库安装目录、静态库安装目录、OBJECT文件安装目录、可执行程序安装目录、配置文件安装目录。 38# 注意:所有安装路径必须是相对CMAKE_INSTALL_PREFIX的相对路径,不可以使用绝对路径!!! 39# 否则安装目录下的配置文件(foo-config.cmake, foo-tragets.cmake等)拷贝到其它目录时无法工作。 40set(INSTALL_HI3093_ARMV8_BASE_DIR .) 41set(INSTALL_HI3093_ARMV8_INCLUDE_DIR UniProton/include) 42set(INSTALL_HI3093_ARMV8_ARCHIVE_DIR UniProton/lib/hi3093) 43set(INSTALL_HI3093_ARMV8_ARCHIVE_SEC_DIR libboundscheck/lib/hi3093) 44set(INSTALL_HI3093_ARMV8_ARCHIVE_CONFIG_DIR UniProton/config) 45set(INSTALL_HI3093_ARMV8_CONFIG_DIR cmake/hi3093) 46 47 48include(CMakePackageConfigHelpers) 49configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/tool_chain/hi3093_armv8_config.cmake.in 50 ${CMAKE_CURRENT_BINARY_DIR}/uniproton-hi3093-armv8-config.cmake 51 INSTALL_DESTINATION ${INSTALL_HI3093_ARMV8_CONFIG_DIR} 52 PATH_VARS 53 INSTALL_HI3093_ARMV8_BASE_DIR 54 INSTALL_HI3093_ARMV8_INCLUDE_DIR 55 INSTALL_HI3093_ARMV8_ARCHIVE_DIR 56 INSTALL_HI3093_ARMV8_ARCHIVE_SEC_DIR 57 INSTALL_HI3093_ARMV8_ARCHIVE_CONFIG_DIR 58 INSTALL_HI3093_ARMV8_CONFIG_DIR 59 INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} 60) 61install(EXPORT ${hi3093_armv8_export} 62 NAMESPACE UniProton:: 63 FILE uniproton-hi3093-armv8-targets.cmake 64 DESTINATION ${INSTALL_HI3093_ARMV8_CONFIG_DIR} 65) 66install(FILES 67 ${CMAKE_CURRENT_BINARY_DIR}/uniproton-hi3093-armv8-config.cmake 68 DESTINATION ${INSTALL_HI3093_ARMV8_CONFIG_DIR} 69) 70 71install(TARGETS 72 CortexMXsec_c 73 EXPORT ${hi3093_armv8_export} 74 ARCHIVE DESTINATION ${INSTALL_HI3093_ARMV8_ARCHIVE_SEC_DIR} 75) 76 77install(TARGETS 78 HI3093 79 EXPORT ${hi3093_armv8_export} 80 ARCHIVE DESTINATION ${INSTALL_HI3093_ARMV8_ARCHIVE_DIR}/ 81) 82 83set(TOOLCHAIN_DIR "$ENV{HCC_PATH}") #该路径应该是外部传入,指向编译工具路径 84if (${COMPILE_MODE} MATCHES "^.*dbg.*$") 85 message("=============== COMPILE_MODE is ${COMPILE_MODE} ===============") 86else() 87 88endif() 89 90install(FILES 91 ${PROJECT_SOURCE_DIR}/build/uniproton_config/config_armv8_hi3093/prt_buildef.h 92 DESTINATION ${INSTALL_HI3093_ARMV8_ARCHIVE_CONFIG_DIR}/hi3093 93) 94 95if (NOT "${LIBCK_INSTALL_FILE_OPTION}" STREQUAL "SUPER_BUILD") 96 ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹} 97 install(FILES 98 ${PROJECT_SOURCE_DIR}/src/config/prt_config.c 99 ${PROJECT_SOURCE_DIR}/src/config/prt_config_internal.h 100 ${PROJECT_SOURCE_DIR}/src/config/config/prt_config.h 101 DESTINATION ${INSTALL_HI3093_ARMV8_ARCHIVE_CONFIG_DIR} 102 ) 103 ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹} 104 file(GLOB common_include_files ${PROJECT_SOURCE_DIR}/src/include/uapi/*.h) 105 install(FILES 106 ${common_include_files} 107 DESTINATION ${INSTALL_HI3093_ARMV8_INCLUDE_DIR}/common 108 ) 109 110 111 ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹 =======} 112 file(GLOB hw_board_include_files ${PROJECT_SOURCE_DIR}/src/include/uapi/hw/armv8/*) 113 install(FILES 114 ${hw_board_include_files} 115 DESTINATION ${INSTALL_HI3093_ARMV8_INCLUDE_DIR}/hw/board 116 ) 117 118 ##{GLOB 所有文件 | GLOB_RECURSE 递归查找文件&文件夹} 119 file(GLOB hw_cpu_include_files ${PROJECT_SOURCE_DIR}/src/include/posix/*) 120 install(FILES 121 ${hw_cpu_include_files} 122 DESTINATION ${INSTALL_HI3093_ARMV8_INCLUDE_DIR}/hw/cpu 123 ) 124 125 install(FILES 126 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_errno.h 127 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_event.h 128 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_exc.h 129 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_hook.h 130 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_hwi.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 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_cpup.h 141 ${PROJECT_SOURCE_DIR}/src/include/uapi/prt_err.h 142 DESTINATION ${INSTALL_HI3093_ARMV8_INCLUDE_DIR}/ 143 ) 144endif() 145