1set(COMPONENT_NAME "liteos_208_5_0") 2 3get_filename_component(LITEOS_TOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Huawei_LiteOS" ABSOLUTE) 4set(LITEOSTOPDIR ${LITEOS_TOP_DIR}) 5 6include(${LITEOS_TOP_DIR}/build/cmake/function.cmake) 7 8if(DEFINED LITEOS_KCONFIG) 9 set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${LITEOS_KCONFIG}.config) 10else() 11 set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${CHIP}.config) 12endif() 13 14set(LITEOS_DST_CONFIG ${LITEOSTOPDIR}/.config) 15 16# filter-out and setup LOSCFG_PLATFORM only 17IMPORT_BOARD_CONFIG(LOSCFG_PLATFORM= ${LITEOS_SRC_CONFIG} IGNORE) 18# remove "" maybe in LOSCFG_PLATFORM 19string(REGEX REPLACE \" "" LITEOS_PLATFORM "${LOSCFG_PLATFORM}") 20string(REGEX REPLACE \" "" LITEOS_PLATFORM "${LOSCFG_PLATFORM}") 21 22############### updating .config/menuconfig.h files ############### 23set(LITEOS_MENUCONFIG_H ${LITEOSTOPDIR}/targets/menuconfig.h) 24# LITEOS_CHECK_MENUCONFIG_H is generated by python script for compared with file generated by cmake. 25set(LITEOS_CHECK_MENUCONFIG_H 26 ${CMAKE_CURRENT_BINARY_DIR}/menuconfig/menuconfig.h) 27set(LITEOS_PLATFORM_MENUCONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/menuconfig/include/menuconfig.h 28 CACHE STRING "LiteOS target menuconfig.h" FORCE) 29 30############### setup cmake env ############### 31if(NOT EXISTS ${LITEOS_PLATFORM_MENUCONFIG_H}) 32 IMPORT_BOARD_CONFIG(LOSCFG_ ${LITEOS_SRC_CONFIG} ${LITEOS_PLATFORM_MENUCONFIG_H}) 33else() 34 IMPORT_BOARD_CONFIG(LOSCFG_ ${LITEOS_SRC_CONFIG} False) 35endif() 36 37set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/liteos/libs) 38set(LIB_OUT_PATH ${CMAKE_BINARY_DIR}/liteos/libs) 39 40include(${LITEOS_TOP_DIR}/build/cmake/config.cmake) 41 42add_library(${COMPONENT_NAME}_interface INTERFACE) 43get_target_property(LOS_HEADER ${LOS_CC_PROP_INTF_PUB} INTERFACE_INCLUDE_DIRECTORIES) 44get_target_property(LOS_DEF ${LOS_CC_PROP_INTF_PUB} INTERFACE_COMPILE_DEFINITIONS) 45FOREACH(CUR_INTERFACE ${LOS_INTF_DEP_TARGETS}) 46 get_target_property(HEADER_TMP ${CUR_INTERFACE} INTERFACE_INCLUDE_DIRECTORIES) 47 get_target_property(DEF_TMP ${CUR_INTERFACE} INTERFACE_COMPILE_DEFINITIONS) 48 list(APPEND LOS_HEADER ${HEADER_TMP}) 49 list(APPEND LOS_DEF ${DEF_TMP}) 50ENDFOREACH(CUR_INTERFACE) 51 52target_include_directories(${COMPONENT_NAME}_interface 53 INTERFACE 54 ${LOS_HEADER} 55) 56target_compile_definitions(${COMPONENT_NAME}_interface 57 INTERFACE 58 ${LOS_DEF} 59) 60target_compile_options(${COMPONENT_NAME}_interface 61 INTERFACE 62 -include${LITEOS_PLATFORM_MENUCONFIG_H} 63) 64 65get_target_property(COM_HEADER ${COMPONENT_NAME}_interface INTERFACE_COMPILE_OPTIONS) 66MESSAGE(STATUS "COM_HEADER${COM_HEADER}") 67 68 69if (${build_ws63_sdk_open}) 70 list(APPEND LITEOS_BASELIB "base" "cmsis" "compat" "console" "cpup" "csysdeps" "driverbase" "init" "interrupt" "linux" "posix" "riscv" "targets" "vfs" ) 71endif () 72 73list(REMOVE_DUPLICATES LITEOS_BASELIB) 74set(LOS_LIB "${LITEOS_BASELIB}" CACHE INTERNAL "" FORCE) 75list(REMOVE_ITEM LITEOS_BASELIB "m" "c" "gcc") 76 77list(FIND DEFINES "BS25_SUPPORT_CPP" match) 78if(NOT match EQUAL -1) 79 list(REMOVE_ITEM LITEOS_BASELIB "stdc++" "supc++") 80endif() 81 82target_link_libraries(${TARGET_NAME} 83PRIVATE 84 -Wl,--whole-archive ${LITEOS_BASELIB} -Wl,--no-whole-archive 85) 86 87foreach(LITEOS_LIB ${LITEOS_DEP_LIBS_INT}) 88 get_target_property(PUBLIC_HEADER ${LITEOS_LIB} PRIVATE_HEADER) 89 get_target_property(PRIVATE_HEADER ${LITEOS_LIB}_intf_pri INTERFACE_INCLUDE_DIRECTORIES) 90 get_target_property(SOURCES ${LITEOS_LIB} SOURCES) 91 get_target_property(SOURCE_DIR ${LITEOS_LIB} SOURCE_DIR) 92 list(FIND DEFINES "SLEM_CARKEY" match) 93 if(NOT match EQUAL -1) 94 if(${LITEOS_LIB} STREQUAL "c") 95 list(REMOVE_ITEM SOURCES ../liteos_libc/stdlib/cstdlib.c) 96 list(APPEND SOURCES "${ROOT_DIR}/protocol/bt/algorithm/posalg/stdlib/cstdlib.c") 97 list(APPEND SOURCES "${ROOT_DIR}/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/musl/src/complex/cabsf.c") 98 list(APPEND SOURCES "${ROOT_DIR}/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/musl/src/complex/csqrtf.c") 99 set_target_properties(${LITEOS_LIB} PROPERTIES SOURCES "${SOURCES}") 100 set_target_properties(${LITEOS_LIB} PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-unused-but-set-variable -Wno-unknown-pragmas") 101 endif() 102 endif() 103 string(REPLACE "$<$<COMPILE_LANGUAGE:C>:" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 104 string(REPLACE "$<$<COMPILE_LANGUAGE:CXX>:" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 105 string(REPLACE "$<$<COMPILE_LANGUAGE:ASM>:" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 106 string(REPLACE ">" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 107 set(SOURCES_REL ${SOURCES}) 108 if(${LITEOS_LIB} STREQUAL "sec") 109 install_sdk(${LITEOSTOPDIR}/platform/libsec/src "*.inl") 110 endif() 111 list(FILTER SOURCES_REL EXCLUDE REGEX "${ROOT_DIR}/*") 112 list(FILTER SOURCES INCLUDE REGEX "${ROOT_DIR}/*") 113 list(TRANSFORM SOURCES_REL PREPEND "${SOURCE_DIR}/") 114 set(SOURCES ${SOURCES} ${SOURCES_REL}) 115 set(COMPONENT_NAME ${LITEOS_LIB}) 116 install_file() 117endforeach(LITEOS_LIB LITEOS_DEP_LIBS_INT) 118UNSET(PRIVATE_HEADER) 119UNSET(PUBLIC_HEADER) 120UNSET(SOURCES) 121 122string(REPLACE "$<$<COMPILE_LANGUAGE:C>:" "" PRIVATE_HEADER "${LOS_HEADER}") 123string(REPLACE "$<$<COMPILE_LANGUAGE:CXX>:" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 124string(REPLACE "$<$<COMPILE_LANGUAGE:ASM>:" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 125string(REPLACE ">" "" PRIVATE_HEADER "${PRIVATE_HEADER}") 126install_file() 127UNSET(PRIVATE_HEADER) 128 129install_sdk(${LITEOSTOPDIR}/build/cmake "*") 130install_sdk(${LITEOSTOPDIR}/build/menuconfig "*") 131install_sdk(${LITEOS_SRC_CONFIG} "*") 132install_sdk(${LITEOSTOPDIR}/.config "*") 133install_sdk(${LITEOSTOPDIR}/arch/common "*") 134install_sdk(${LITEOSTOPDIR}/lib/libm "*") 135install_sdk(${LITEOSTOPDIR}/lib/libc "*") 136install_sdk(${LITEOSTOPDIR}/targets/ "Kconfig*") 137install_sdk(${CMAKE_CURRENT_SOURCE_DIR}/show_menuconfig.py "*") 138 139if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}) 140 file(GLOB LOS_LIBS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND} "${TARGET_COMMAND}/lib*.a") 141 list(TRANSFORM LOS_LIBS REPLACE "lib([0-9a-zA-Z]*)\.a" "\\1") 142 foreach(LITEOS_LIB ${LOS_LIBS}) 143 add_library(${LITEOS_LIB} SHARED IMPORTED GLOBAL) 144 set_property(TARGET ${LITEOS_LIB} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}/lib${LITEOS_LIB}.a) 145 endforeach() 146endif() 147 148if (${build_lib}) 149 install_sdk_local_dest(${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}/ "*.a") 150endif () 151