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