• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14set(VERIFICATION_SOURCES_DIR ${PANDA_ROOT}/verification)
15
16include(${VERIFICATION_SOURCES_DIR}/type/Type.cmake)
17include(${VERIFICATION_SOURCES_DIR}/value/Value.cmake)
18include(${VERIFICATION_SOURCES_DIR}/cflow/Cflow.cmake)
19include(${VERIFICATION_SOURCES_DIR}/util/Util.cmake)
20include(${VERIFICATION_SOURCES_DIR}/absint/AbsInt.cmake)
21include(${VERIFICATION_SOURCES_DIR}/config/Config.cmake)
22include(${VERIFICATION_SOURCES_DIR}/jobs/Jobs.cmake)
23include(${VERIFICATION_SOURCES_DIR}/cache/Cache.cmake)
24
25set(VERIFIER_SOURCES
26    ${VERIFICATION_SOURCES_DIR}/default_plugin.cpp
27    ${VERIFICATION_SOURCES_DIR}/plugins.cpp
28    ${VERIFICATION_SOURCES_DIR}/verification_options.cpp
29    ${VERIFICATION_SOURCES_DIR}/verifier_messages_data.cpp
30    ${VERIFICATION_SOURCES_DIR}/public.cpp
31    ${TYPE_SOURCES}
32    ${VALUE_SOURCES}
33    ${CFLOW_SOURCES}
34    ${UTIL_SOURCES}
35    ${ABSINT_SOURCES}
36    ${CONFIG_SOURCES}
37    ${JOBS_SOURCES}
38    ${VERIFIER_CACHE_SOURCES}
39)
40
41set(VERIFIER_TESTS_SOURCES
42    ${TYPE_TESTS_SOURCES}
43    ${VALUE_TESTS_SOURCES}
44    ${CFLOW_TESTS_SOURCES}
45    ${UTIL_TESTS_SOURCES}
46    ${ABSINT_TESTS_SOURCES}
47    ${JOBS_TESTS_SOURCES}
48)
49
50set(VERIFIER_RAPIDCHECK_TESTS_SOURCES
51    ${UTIL_RAPIDCHECK_TESTS_SOURCES}
52)
53
54set(VERIFIER_INCLUDE_DIR ${VERIFICATION_SOURCES_DIR}
55                         ${PANDA_BINARY_ROOT}/verification/gen/include
56)
57
58function(add_verification_includes)
59    set(prefix ARG)
60    set(noValues)
61    set(singleValues TARGET)
62    set(multiValues)
63    cmake_parse_arguments(${prefix}
64                          "${noValues}"
65                          "${singleValues}"
66                          "${multiValues}"
67                          ${ARGN})
68
69    if (NOT DEFINED ARG_TARGET)
70        message(FATAL_ERROR "Mandatory TARGET argument is not defined.")
71    endif()
72
73    add_dependencies(${ARG_TARGET} isa_gen_pandaverification)
74
75    panda_target_include_directories(${ARG_TARGET}
76        PUBLIC ${VERIFIER_INCLUDE_DIR}
77        PUBLIC ${VERIFIER_GEN_INCLUDE_DIR}
78    )
79endfunction()
80
81function(add_verification_sources)
82    set(prefix ARG)
83    set(noValues)
84    set(singleValues TARGET)
85    set(multiValues)
86    cmake_parse_arguments(${prefix}
87                          "${noValues}"
88                          "${singleValues}"
89                          "${multiValues}"
90                          ${ARGN})
91
92    if (NOT DEFINED ARG_TARGET)
93        message(FATAL_ERROR "Mandatory TARGET argument is not defined.")
94    endif()
95
96    add_dependencies(${ARG_TARGET} messages_data_pandaverification)
97    panda_target_sources(${ARG_TARGET}
98        PUBLIC ${VERIFIER_SOURCES}
99    )
100endfunction()
101
102function(add_pandaverification)
103    set(prefix ARG)
104    set(noValues)
105    set(singleValues TARGET)
106    set(multiValues)
107    cmake_parse_arguments(${prefix}
108                          "${noValues}"
109                          "${singleValues}"
110                          "${multiValues}"
111                          ${ARGN})
112
113    if (NOT DEFINED ARG_TARGET)
114        message(FATAL_ERROR "Mandatory TARGET argument is not defined.")
115    endif()
116
117    add_verification_sources(TARGET ${ARG_TARGET})
118    add_verification_includes(TARGET ${ARG_TARGET})
119endfunction()
120