# Ensure that the libsegger is linked before libm. set(COMPONENT_NAME "segger") set(LIBS ${ROOT_DIR}/vendor/segger/${ARCH}/libsegger.a) set(WHOLE_LINK true ) build_component() set(COMPONENT_NAME "liteos_207_1_0") get_filename_component(LITEOS_TOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Huawei_LiteOS" ABSOLUTE) set(LITEOSTOPDIR ${LITEOS_TOP_DIR}) # LITEOS_COMPILER_GCC_INCLUDE is compiler C++ include path if(CMAKE_TOOLCHAIN_FILE) set(LITEOS_COMPILER_GCC_INCLUDE ${COMPILER_ROOT}/riscv32-elf/include/c++/v1) endif() include(${LITEOS_TOP_DIR}/build/cmake/function.cmake) if("MEMORY_MINI" IN_LIST DEFINES) set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${CHIP}_mini.config) elseif("XTS_SUPPORT" IN_LIST DEFINES) set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${CHIP}_xts.config) elseif("TEST_SUITE" IN_LIST DEFINES) set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${CHIP}_testsuite.config) else() set(LITEOS_SRC_CONFIG ${LITEOSTOPDIR}/tools/build/config/${CHIP}.config) endif() set(LITEOS_DST_CONFIG ${LITEOSTOPDIR}/.config) # filter-out and setup LOSCFG_PLATFORM only IMPORT_BOARD_CONFIG(LOSCFG_PLATFORM= ${LITEOS_SRC_CONFIG} IGNORE) # remove "" maybe in LOSCFG_PLATFORM string(REGEX REPLACE \" "" LITEOS_PLATFORM "${LOSCFG_PLATFORM}") string(REGEX REPLACE \" "" LITEOS_PLATFORM "${LOSCFG_PLATFORM}") ############### updating .config/menuconfig.h files ############### set(LITEOS_MENUCONFIG_H ${LITEOSTOPDIR}/targets/menuconfig.h) # LITEOS_CHECK_MENUCONFIG_H is generated by python script for compared with file generated by cmake. set(LITEOS_CHECK_MENUCONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/menuconfig/menuconfig.h) set(LITEOS_PLATFORM_MENUCONFIG_H ${CMAKE_CURRENT_BINARY_DIR}/menuconfig/include/menuconfig.h CACHE STRING "LiteOS target menuconfig.h" FORCE) ############### setup cmake env ############### if(EXISTS ${LITEOS_PLATFORM_MENUCONFIG_H}) file(REMOVE ${LITEOS_PLATFORM_MENUCONFIG_H}) endif() IMPORT_BOARD_CONFIG(LOSCFG_ ${LITEOS_SRC_CONFIG} ${LITEOS_PLATFORM_MENUCONFIG_H}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) include(${LITEOS_TOP_DIR}/build/cmake/config.cmake) add_library(${COMPONENT_NAME}_interface INTERFACE) get_target_property(LOS_HEADER ${LOS_CC_PROP_INTF_PUB} INTERFACE_INCLUDE_DIRECTORIES) get_target_property(LOS_DEF ${LOS_CC_PROP_INTF_PUB} INTERFACE_COMPILE_DEFINITIONS) FOREACH(CUR_INTERFACE ${LOS_INTF_DEP_TARGETS}) get_target_property(HEADER_TMP ${CUR_INTERFACE} INTERFACE_INCLUDE_DIRECTORIES) get_target_property(DEF_TMP ${CUR_INTERFACE} INTERFACE_COMPILE_DEFINITIONS) list(APPEND LOS_HEADER ${HEADER_TMP}) list(APPEND LOS_DEF ${DEF_TMP}) ENDFOREACH(CUR_INTERFACE) target_include_directories(${COMPONENT_NAME}_interface INTERFACE ${LOS_HEADER} ) target_compile_definitions(${COMPONENT_NAME}_interface INTERFACE ${LOS_DEF} ) target_compile_options(${COMPONENT_NAME}_interface INTERFACE -include${LITEOS_PLATFORM_MENUCONFIG_H} ) get_target_property(COM_HEADER ${COMPONENT_NAME}_interface INTERFACE_COMPILE_OPTIONS) MESSAGE(STATUS "COM_HEADER${COM_HEADER}") list(REMOVE_DUPLICATES LITEOS_BASELIB) set(LOS_LIB "${LITEOS_BASELIB}" CACHE INTERNAL "" FORCE) set(LITEOS_BASELIB_OTHER) # libsegger link conflict.remove libm and libclang_rt.builtins-riscv32 if("segger" IN_LIST TARGET_COMPONENT) list(REMOVE_ITEM LITEOS_BASELIB "m" "clang_rt.builtins-riscv32") list(APPEND LITEOS_BASELIB_OTHER "m" "clang_rt.builtins-riscv32") endif() target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LITEOS_BASELIB} -Wl,--no-whole-archive ${LITEOS_BASELIB_OTHER} ) macro(replace_genex var) string(REPLACE "$<$:" "" ${var} "${${var}}") string(REPLACE "$<$:" "" ${var} "${${var}}") string(REPLACE "$<$:" "" ${var} "${${var}}") string(REPLACE ">" "" ${var} "${${var}}") endmacro() macro(exc_option key var) string(REGEX REPLACE "\\$<\\$:([^>]*)>" "" ${var} "${${var}}") endmacro(get_option) set(LOS_PUB_CCFLAGS "") replace_genex(LOS_HEADER) foreach(LITEOS_LIB ${LITEOS_DEP_LIBS_INT}) get_target_property(COMPONENT_CCFLAGS ${LITEOS_LIB}_intf_pri INTERFACE_COMPILE_OPTIONS) get_target_property(TEMP ${LITEOS_LIB}_intf_pub INTERFACE_COMPILE_OPTIONS) set(LOS_PUB_CCFLAGS ${LOS_PUB_CCFLAGS} ${TEMP}) get_target_property(COMPONENT_PUB_CCFLAGS ${LOS_CC_PROP_INTF_PUB} INTERFACE_COMPILE_OPTIONS) get_target_property(COMPONENT_DEFINES ${LITEOS_LIB}_intf_pri INTERFACE_COMPILE_DEFINITIONS) get_target_property(COMPONENT_PUB_DEFINES ${LOS_CC_PROP_INTF_PUB} INTERFACE_COMPILE_DEFINITIONS) get_target_property(PRIVATE_HEADER ${LITEOS_LIB}_intf_pri INTERFACE_INCLUDE_DIRECTORIES) get_target_property(COMPONENT_CUSTOM_INCLUDE ${LITEOS_LIB}_intf_pub INTERFACE_INCLUDE_DIRECTORIES) get_target_property(SOURCES ${LITEOS_LIB} SOURCES) get_target_property(SOURCE_DIR ${LITEOS_LIB} SOURCE_DIR) replace_genex(COMPONENT_CUSTOM_INCLUDE) replace_genex(PRIVATE_HEADER) replace_genex(COMPONENT_DEFINES) replace_genex(COMPONENT_PUB_DEFINES) set(COMPONENT_CUSTOM_INCLUDE ${PRIVATE_HEADER} ${COMPONENT_CUSTOM_INCLUDE} ${LOS_HEADER} ) set(COMPONENT_CUSTOM_CCFLAGS ${COMPONENT_PUB_CCFLAGS} ${COMPONENT_CCFLAGS}) exc_option(CXX COMPONENT_CUSTOM_CCFLAGS) replace_genex(COMPONENT_CUSTOM_CCFLAGS) list(REMOVE_ITEM COMPONENT_CUSTOM_CCFLAGS "") set(COMPONENT_CUSTOM_DEFINES ${COMPONENT_DEFINES} ${COMPONENT_PUB_DEFINES}) if(LITEOS_LIB STREQUAL "m") set(WHOLE_ARCHIV false) else() set(WHOLE_ARCHIV true) endif() UNSET(TEST_XXX) set(SOURCES_REL ${SOURCES}) if(${LITEOS_LIB} STREQUAL "sec") install_sdk(${LITEOSTOPDIR}/platform/libsec/src "*.inl") endif() list(FILTER SOURCES_REL EXCLUDE REGEX "${ROOT_DIR}/*") list(FILTER SOURCES INCLUDE REGEX "${ROOT_DIR}/*") list(TRANSFORM SOURCES_REL PREPEND "${SOURCE_DIR}/") set(SOURCES ${SOURCES} ${SOURCES_REL}) set(COMPONENT_NAME ${LITEOS_LIB}) install_file() sdk_export_component("third_party") endforeach(LITEOS_LIB LITEOS_DEP_LIBS_INT) UNSET(PRIVATE_HEADER) UNSET(PUBLIC_HEADER) UNSET(SOURCES) replace_genex(LOS_DEF) set(PRIVATE_HEADER ${LOS_HEADER}) install_file() exc_option(CXX LOS_PUB_CCFLAGS) exc_option(ASM LOS_PUB_CCFLAGS) replace_genex(LOS_PUB_CCFLAGS) list(REMOVE_ITEM LOS_PUB_CCFLAGS "") set(LOS_PUB_CCFLAGS "${LOS_PUB_CCFLAGS}" CACHE INTERNAL "" FORCE) set(LOS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/" CACHE INTERNAL "" FORCE) set(ALL_PUBLIC_HEADER "${LITEOS_COMPILER_GCC_INCLUDE} ${ALL_PUBLIC_HEADER}" "${LOS_HEADER}" CACHE INTERNAL "" FORCE) set(ALL_PUBLIC_DEFINES "${ALL_PUBLIC_DEFINES}" "${LOS_DEF}" CACHE INTERNAL "" FORCE) set(ALL_PUBLIC_CCFLAGS "${ALL_PUBLIC_CCFLAGS}" "-include$(LITEOS_PLATFORM_MENUCONFIG_H)" CACHE INTERNAL "" FORCE) UNSET(PRIVATE_HEADER) install_sdk(${LITEOSTOPDIR}/build/cmake "*") install_sdk(${LITEOSTOPDIR}/build/make "*") install_sdk(${LITEOSTOPDIR}/build/menuconfig "*") install_sdk(${LITEOSTOPDIR}/tools/build/config/${CHIP}.config "*") install_sdk(${LITEOSTOPDIR}/tools/build/config/${CHIP}_mini.config "*") install_sdk(${LITEOSTOPDIR}/tools/build/config/${CHIP}_xts.config "*") install_sdk(${LITEOSTOPDIR}/tools/build/config/${CHIP}_testsuite.config "*") install_sdk(${LITEOSTOPDIR}/.config "*") install_sdk(${LITEOSTOPDIR}/arch/common "*") install_sdk(${LITEOSTOPDIR}/kernel/base/debug "*") install_sdk(${LITEOSTOPDIR}/targets/ "Kconfig*") install_sdk(${CMAKE_CURRENT_SOURCE_DIR}/show_menuconfig.py "*")