1# 2# Copyright (C) 2022 Huawei Technologies Co., Ltd. 3# Licensed under the Mulan PSL v2. 4# You can use this software according to the terms and conditions of the Mulan PSL v2. 5# You may obtain a copy of Mulan PSL v2 at: 6# http://license.coscl.org.cn/MulanPSL2 7# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 8# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 9# PURPOSE. 10# See the Mulan PSL v2 for more details. 11# 12 13include(${TEE_DEV_KIT_DIR}/ddk/build/cmake/common.cmake) 14 15set(PUB_DRV_INCLUDE_DIRS) 16list(APPEND PUB_DRV_INCLUDE_DIRS 17 ${TEE_DEV_KIT_DIR}/ddk/include 18 ${TEE_DEV_KIT_DIR}/sdk/include/TA 19 ${TEE_DEV_KIT_DIR}/sdk/include/TA/ext 20 ${TEE_TEST_ROOT_DIR}/utils/include 21 ${TEE_TEST_ROOT_DIR}/utils/cmd_id 22 /usr/include/aarch64-linux-android 23) 24 25set(PUB_DRV_COMPILE_OPTS) 26list(APPEND PUB_DRV_COMPILE_OPTS 27 -Wall 28 -Werror 29 -fstack-protector-all 30 --target=aarch64-linux-android21 31 -fvisibility=default 32 -fno-exceptions 33 -fno-common 34) 35 36set(PUB_DRV_COMPILE_DEFS) 37list(APPEND PUB_DRV_COMPILE_DEFS 38 # Test Macros Here 39) 40 41macro(drv_compile_pub) 42 cmake_parse_arguments( 43 DRV 44 "" 45 "" 46 "ELF_NAME;SRC_LIST;INCLUDE_DIRS;COMPILE_OPTS;COMPILE_DEFS" 47 ${ARGN} 48 ) 49 50 message("DRV_ELF_NAME = ${DRV_ELF_NAME}") 51 message("DRV_SRC_LIST = ${DRV_SRC_LIST}") 52 message("DRV_INCLUDE_DIRS = ${DRV_INCLUDE_DIRS}") 53 message("DRV_COMPILE_OPTS = ${DRV_COMPILE_OPTS}") 54 message("DRV_COMPILE_DEFS = ${DRV_COMPILE_DEFS}") 55 56 add_executable(${DRV_ELF_NAME}) 57 target_sources(${DRV_ELF_NAME} PRIVATE 58 ${DRV_SRC_LIST} 59 ) 60 61 target_include_directories(${DRV_ELF_NAME} PRIVATE 62 ${DRV_INCLUDE_DIRS} 63 ${PUB_DRV_INCLUDE_DIRS} 64 ) 65 66 target_compile_options(${DRV_ELF_NAME} PRIVATE 67 ${DRV_COMPILE_OPTS} 68 ${PUB_DRV_COMPILE_OPTS} 69 ) 70 71 target_compile_definitions(${DRV_ELF_NAME} PRIVATE 72 ${DRV_COMPILE_DEFS} 73 ${PUB_DRV_COMPILE_DEFS} 74 ) 75 76 target_link_options(${DRV_ELF_NAME} PRIVATE 77 -v 78 -s 79 -nostdlib 80 -Wl,--discard-all 81 -Wl,-z,text 82 -Wl,-z,now 83 -Wl,-z,relro 84 -Wl,-shared 85 -Wl,-z,noexecstack 86 ) 87 target_link_directories(${DRV_ELF_NAME} PRIVATE 88 ${TEE_TEST_ROOT_DIR}/bin 89 ) 90 91 target_link_libraries(${DRV_ELF_NAME} PRIVATE 92 ) 93endmacro() 94