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