blob: 108e184b570663f23de3a68acb24c6369ad90ab6 [file] [log] [blame]
Ole Troandf87f802020-11-18 19:17:48 +01001# Copyright (c) 2020 Cisco and/or its affiliates.
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
14##############################################################################
15# vat2
16##############################################################################
Ole Troan91144fb2021-08-17 12:57:00 +020017add_vpp_executable(vat2 ENABLE_EXPORTS
Ole Troandf87f802020-11-18 19:17:48 +010018 SOURCES
19 main.c
20 plugin.c
Ole Troandf87f802020-11-18 19:17:48 +010021
22 DEPENDS api_headers
23
24 LINK_LIBRARIES
25 vlibmemoryclient
26 svm
27 vppinfra
28 vppapiclient
29 Threads::Threads
Damjan Marionbea69932021-11-11 19:46:08 +010030 dl
Ole Troandf87f802020-11-18 19:17:48 +010031)
32
Ole Troan793be462020-12-04 13:15:30 +010033#
34# Unit test code. Call generator directly to avoid it being installed
35#set_source_files_properties(vat2_test.c PROPERTIES
36# COMPILE_FLAGS " -fsanitize=address"
37#)
38
39vpp_generate_api_c_header (test/vat2_test.api)
40add_vpp_executable(test_vat2 ENABLE_EXPORTS NO_INSTALL
41 SOURCES
42 test/vat2_test.c
Ole Troan793be462020-12-04 13:15:30 +010043
44 DEPENDS api_headers
45
46 LINK_LIBRARIES
47 vlibmemoryclient
48 svm
49 vppinfra
50 vppapiclient
51 Threads::Threads
Damjan Marionbea69932021-11-11 19:46:08 +010052 dl
Ole Troan793be462020-12-04 13:15:30 +010053)
54#target_link_options(test_vat2 PUBLIC "LINKER:-fsanitize=address")
Ole Troan94323402021-11-11 19:22:12 +010055if(VPP_BUILD_TESTS_WITH_COVERAGE)
Ole Troanfb0afab2021-02-11 11:13:46 +010056 set(TARGET_NAME test_vat2)
Ole Troanfb0afab2021-02-11 11:13:46 +010057
58 message("Building with llvm Code Coverage Tools ${TARGET_NAME}")
59 target_compile_options(${TARGET_NAME} PRIVATE -fprofile-instr-generate -fcoverage-mapping)
60 target_link_options(${TARGET_NAME} PRIVATE -fprofile-instr-generate -fcoverage-mapping)
61 target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address)
62 target_link_options(${TARGET_NAME} PRIVATE -fsanitize=address)
63
64 # llvm-cov
65 add_custom_target(${TARGET_NAME}-ccov-preprocessing
66 COMMAND LLVM_PROFILE_FILE=${TARGET_NAME}.profraw $<TARGET_FILE:${TARGET_NAME}>
67 COMMAND llvm-profdata merge -sparse ${TARGET_NAME}.profraw -o ${TARGET_NAME}.profdata
68 DEPENDS ${TARGET_NAME})
69
70 add_custom_target(${TARGET_NAME}-ccov-show
71 COMMAND llvm-cov show $<TARGET_FILE:${TARGET_NAME}> -instr-profile=${TARGET_NAME}.profdata -show-line-counts-or-regions ${COV_SOURCES}
72 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
73
74 add_custom_target(${TARGET_NAME}-ccov-report
75 COMMAND llvm-cov report -show-functions $<TARGET_FILE:${TARGET_NAME}> -instr-profile=${TARGET_NAME}.profdata ${COV_SOURCES}
76 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
77
78 add_custom_target(${TARGET_NAME}-ccov
79 COMMAND llvm-cov show $<TARGET_FILE:${TARGET_NAME}> -instr-profile=${TARGET_NAME}.profdata -show-line-counts-or-regions -output-dir=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}-llvm-cov -format="html" ${COV_SOURCES}
80 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
81
82 add_custom_command(TARGET ${TARGET_NAME}-ccov POST_BUILD
83 COMMAND ;
84 COMMENT "Open ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}-llvm-cov/index.html in your browser to view the coverage report."
85)
86endif()
87
88
89
Ole Troandf87f802020-11-18 19:17:48 +010090##############################################################################
91# vat2 headers
92##############################################################################
93install(
94 FILES
Ole Troandf87f802020-11-18 19:17:48 +010095 vat2_helpers.h
Nick Browne3cf4d02021-09-15 14:25:40 +010096 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vat2
Ole Troandf87f802020-11-18 19:17:48 +010097 COMPONENT vpp-dev
98)