• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#===============================================================================
2# @brief    cmake entry
3# Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
4#===============================================================================
5cmake_minimum_required(VERSION 3.14.1)
6set(CMAKE_SYSTEM_NAME "Generic")
7
8if(DEFINED ENV{build_ws63_sdk_open})
9    set(build_lib true)
10else()
11    set(build_lib false)
12endif()
13
14if(NOT DEFINED CHIP)
15    message(FATAL_ERROR "Chip is not defined ")
16endif()
17
18set(Python3_EXECUTABLE ${PY_PATH})
19find_program(CCACHE_FOUND ccache)
20if(CCACHE_FOUND)
21    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
22endif(CCACHE_FOUND)
23
24# default hso module_name & AUTO_DEF_FILE_ID & AUTO_DEF_MODULE_ID, redefine these var in sub cmake file will
25# override these value just in sub directory but not others
26set(MODULE_NAME "pf")
27set(AUTO_DEF_FILE_ID TRUE)
28set(AUTO_DEF_MODULE_ID TRUE)
29
30set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
31get_filename_component(ROOT_DIR  "${PROJECT_SOURCE_DIR}" ABSOLUTE)
32set(CMAKE_DIR "${ROOT_DIR}/build/cmake")
33set(BIN_DIR   "${ROOT_DIR}/interim_binary")
34
35include("${CMAKE_DIR}/build_function.cmake")
36include("${CMAKE_DIR}/global_variable.cmake")
37include("${CMAKE_DIR}/build_script.cmake")
38include("${CMAKE_DIR}/build_command.cmake")
39include("${CMAKE_DIR}/build_hso_database.cmake")
40include("${CMAKE_DIR}/build_component.cmake")
41include("${CMAKE_DIR}/build_sdk.cmake")
42
43include_directories(${ROOT_DIR}/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/targets/ws63/include)
44
45if(EXISTS "${ROOT_DIR}/kernel/liteos/liteos_v208.5.0/${TARGET_COMMAND}")
46    set(build_ws63_sdk_open true)
47endif ()
48
49if(${BUILD_TYPE} STREQUAL "UT")
50    KCONFIG_GET_PARAMS("${ROOT_DIR}/build/menuconfig/test/platform/ut.config")
51    include("${CMAKE_DIR}/build_ut.cmake")
52    return()
53endif()
54
55if(${BUILD_TYPE} STREQUAL "FUZZ")
56    KCONFIG_GET_PARAMS("${ROOT_DIR}/build/menuconfig/test/platform/ut.config")
57    include("${CMAKE_DIR}/build_fuzz.cmake")
58    return()
59endif()
60
61project(${CHIP}_CFBB C ASM CXX)
62set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "")
63
64if(EXISTS ${CMAKE_BINARY_DIR}/auto_gen_libfunc.lds)
65    file(REMOVE ${CMAKE_BINARY_DIR}/auto_gen_libfunc.lds)
66endif()
67
68set(TARGET_COMPONENT "${RAM_COMPONENT}" "${ROM_COMPONENT}")
69set(TARGET_NAME ${BIN_NAME})
70file(WRITE ${PROJECT_BINARY_DIR}/temp/__null___.c "int __null___(void) {return 0;}")
71add_executable(${BIN_NAME} ${PROJECT_BINARY_DIR}/temp/__null___.c)
72set_target_properties(${BIN_NAME} PROPERTIES RUNTIME_OUTPUT_NAME ${BIN_NAME}.elf)
73target_compile_options(${BIN_NAME} PRIVATE "${CCFLAGS}")
74
75include("${CMAKE_DIR}/build_rom_callback.cmake")
76if(${BUILD_ROM_CALLBACK})
77    build_rom_callback()
78endif()
79
80set(KCONFIG_PATH "${ROOT_DIR}/build/config/target_config/${CHIP}/menuconfig/${CORE}/${BUILD_TARGET_NAME}.config")
81if(EXISTS ${KCONFIG_PATH})
82    KCONFIG_GET_PARAMS(${KCONFIG_PATH})
83    set(USE_KCONFIG True)
84endif()
85
86add_subdirectory_if_exist(application)
87add_subdirectory_if_exist(bt)
88add_subdirectory_if_exist(bootloader)
89add_subdirectory_if_exist(kernel)
90add_subdirectory_if_exist(drivers)
91add_subdirectory_if_exist(middleware)
92add_subdirectory_if_exist(open_source)
93add_subdirectory_if_exist(protocol)
94add_subdirectory_if_exist(test)
95add_subdirectory_if_exist(include)
96add_subdirectory_if_exist(vendor)
97
98include("${CMAKE_DIR}/open_source.cmake")
99include("${CMAKE_DIR}/build_linker.cmake")
100
101if (NOT DEFINED ROM_COMPONENT)
102add_custom_target(GENERAT_BIN ALL
103    COMMAND ${CMAKE_OBJCOPY} --gap-fill 0xFF -O binary -R .fls_loader_ram -R .logstr -R .ARM -R .ARM ${BIN_NAME}.elf ${BIN_NAME}.bin
104    COMMENT "post_build:gen bin file"
105    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
106    DEPENDS ${TARGET_NAME}
107)
108else()
109add_custom_target(GENERAT_BIN ALL
110    COMMAND ${CMAKE_OBJCOPY} --gap-fill 0xFF -O binary -R .logstr -R .ARM.exidx -R .ARM.extab -R .*_romtext ${TARGET_NAME}.elf ${TARGET_NAME}.bin
111    COMMAND ${CMAKE_OBJCOPY} --gap-fill 0xFF -O binary -j .*_romtext ${TARGET_NAME}.elf ${TARGET_NAME}_rom.bin
112    COMMENT "post_build:gen rom and ram bin file"
113    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
114    DEPENDS ${TARGET_NAME}
115)
116endif()
117
118if(DEFINED CONFIG_SFC_SUPPORT_RWE_INDEPENDENT)
119add_custom_target(GENERAT_FLASH_DRIVER_BIN ALL
120    COMMAND ${CMAKE_OBJCOPY} -O srec --srec-len=0x20 --srec-forceS3 -S -j .fls_loader_ram ${BIN_NAME}.elf BOOTLOADERFlsDrv.signed.s19
121    COMMENT "post_build:gen flash driver bin file"
122    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
123    DEPENDS ${TARGET_NAME}
124)
125endif()
126
127include("${CMAKE_DIR}/build_ssb.cmake")
128include("${CMAKE_DIR}/build_elf_info.cmake")
129include("${CMAKE_DIR}/build_sign.cmake")
130include("${CMAKE_DIR}/build_nv_bin.cmake")
131include("${CMAKE_DIR}/build_partition_bin.cmake")
132include("${CMAKE_DIR}/build_boot_bin_cp.cmake")
133
134# create_hso_db()
135generate_project_file()
136