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