• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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