blob: 6f843c3466188fba4016767f68d987f6c659e89c [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
Ole Troan793be462020-12-04 13:15:30 +010047 vppinfra
Damjan Marionb7049712022-05-20 13:05:38 +020048 vlibmemoryclient
49 vlibapi
50 svm
Ole Troan793be462020-12-04 13:15:30 +010051 vppapiclient
52 Threads::Threads
Damjan Marionbea69932021-11-11 19:46:08 +010053 dl
Ole Troan793be462020-12-04 13:15:30 +010054)
55#target_link_options(test_vat2 PUBLIC "LINKER:-fsanitize=address")
Ole Troan94323402021-11-11 19:22:12 +010056if(VPP_BUILD_TESTS_WITH_COVERAGE)
Ole Troanfb0afab2021-02-11 11:13:46 +010057 set(TARGET_NAME test_vat2)
Ole Troanfb0afab2021-02-11 11:13:46 +010058
59 message("Building with llvm Code Coverage Tools ${TARGET_NAME}")
60 target_compile_options(${TARGET_NAME} PRIVATE -fprofile-instr-generate -fcoverage-mapping)
61 target_link_options(${TARGET_NAME} PRIVATE -fprofile-instr-generate -fcoverage-mapping)
62 target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address)
63 target_link_options(${TARGET_NAME} PRIVATE -fsanitize=address)
64
65 # llvm-cov
66 add_custom_target(${TARGET_NAME}-ccov-preprocessing
67 COMMAND LLVM_PROFILE_FILE=${TARGET_NAME}.profraw $<TARGET_FILE:${TARGET_NAME}>
68 COMMAND llvm-profdata merge -sparse ${TARGET_NAME}.profraw -o ${TARGET_NAME}.profdata
69 DEPENDS ${TARGET_NAME})
70
71 add_custom_target(${TARGET_NAME}-ccov-show
72 COMMAND llvm-cov show $<TARGET_FILE:${TARGET_NAME}> -instr-profile=${TARGET_NAME}.profdata -show-line-counts-or-regions ${COV_SOURCES}
73 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
74
75 add_custom_target(${TARGET_NAME}-ccov-report
76 COMMAND llvm-cov report -show-functions $<TARGET_FILE:${TARGET_NAME}> -instr-profile=${TARGET_NAME}.profdata ${COV_SOURCES}
77 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
78
79 add_custom_target(${TARGET_NAME}-ccov
80 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}
81 DEPENDS ${TARGET_NAME}-ccov-preprocessing)
82
83 add_custom_command(TARGET ${TARGET_NAME}-ccov POST_BUILD
84 COMMAND ;
85 COMMENT "Open ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_NAME}-llvm-cov/index.html in your browser to view the coverage report."
86)
87endif()
88
89
90
Ole Troandf87f802020-11-18 19:17:48 +010091##############################################################################
92# vat2 headers
93##############################################################################
94install(
95 FILES
Ole Troandf87f802020-11-18 19:17:48 +010096 vat2_helpers.h
Nick Browne3cf4d02021-09-15 14:25:40 +010097 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vat2
Ole Troandf87f802020-11-18 19:17:48 +010098 COMPONENT vpp-dev
99)