blob: 3c354b764dd44f094eba2ecb9cdb156c1b79a76f [file] [log] [blame]
Damjan Marion612dd6a2018-07-30 12:45:07 +02001# Copyright (c) 2018 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
Dave Barachc74b43c2020-04-09 17:24:07 -040014option(VPP_BUFFER_FAULT_INJECTOR "Include the buffer fault injector" OFF)
15
Damjan Marion612dd6a2018-07-30 12:45:07 +020016##############################################################################
17# Generate vlib/config.h
18##############################################################################
Dave Barachc74b43c2020-04-09 17:24:07 -040019if(VPP_BUFFER_FAULT_INJECTOR)
20 set(BUFFER_ALLOC_FAULT_INJECTOR 1 CACHE STRING "fault injector on")
21else()
22 set(BUFFER_ALLOC_FAULT_INJECTOR 0 CACHE STRING "fault injector off")
23endif()
24
Damjan Marion038dad72024-01-19 21:19:57 +010025if(VPP_PLATFORM_BUFFER_ALIGN)
26 set(VLIB_BUFFER_ALIGN ${VPP_PLATFORM_BUFFER_ALIGN})
27else()
28 set(VLIB_BUFFER_ALIGN ${VPP_CACHE_LINE_SIZE})
29endif()
30
Damjan Marion612dd6a2018-07-30 12:45:07 +020031set(PRE_DATA_SIZE 128 CACHE STRING "Buffer headroom size.")
Damjan Marionef587582020-05-20 22:01:44 +020032
33if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
34 set(_ss 16)
35else()
36 set(_ss 15)
37endif()
38set(VLIB_PROCESS_LOG2_STACK_SIZE
39 ${_ss}
40 CACHE
41 STRING "Process node default stack size (log2)"
42)
43
Damjan Marion612dd6a2018-07-30 12:45:07 +020044configure_file(
45 ${CMAKE_SOURCE_DIR}/vlib/config.h.in
Damjan Marion88b2e362021-04-29 18:47:25 +020046 ${CMAKE_CURRENT_BINARY_DIR}/config.h
Damjan Marion612dd6a2018-07-30 12:45:07 +020047)
Damjan Marion833de8c2018-09-07 12:39:02 +020048install(
Damjan Marion88b2e362021-04-29 18:47:25 +020049 FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h
Nick Browne3cf4d02021-09-15 14:25:40 +010050 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vlib
Damjan Marion833de8c2018-09-07 12:39:02 +020051 COMPONENT vpp-dev
52)
Damjan Marion612dd6a2018-07-30 12:45:07 +020053
54##############################################################################
55# vlib shared library
56##############################################################################
Tom Jones532a1ce2024-01-29 10:33:36 +000057
Tom Jonese625d0e2024-04-25 14:19:03 +000058if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
Tom Jones532a1ce2024-01-29 10:33:36 +000059set(PLATFORM_SOURCES
60 linux/pci.c
61 linux/vfio.c
62 linux/vmbus.c
63)
64
65set(PLATFORM_HEADERS
66 linux/vfio.h
67)
Tom Jonese625d0e2024-04-25 14:19:03 +000068elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
69set(PLATFORM_SOURCES
70 freebsd/pci.c
71)
72endif()
Tom Jones532a1ce2024-01-29 10:33:36 +000073
Damjan Marion4553c952018-08-26 11:04:40 +020074add_vpp_library(vlib
75 SOURCES
Damjan Marion612dd6a2018-07-30 12:45:07 +020076 buffer.c
Damjan Marion1c229712021-04-21 12:55:15 +020077 buffer_funcs.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020078 cli.c
79 counter.c
Neale Ranns22e1f1d2019-03-01 15:53:11 +000080 drop.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020081 error.c
82 format.c
Dave Baracha638c182019-06-21 18:24:07 -040083 handoff_trace.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020084 init.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020085 log.c
86 main.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020087 node.c
88 node_cli.c
89 node_format.c
Ray Kinsella4830e4f2020-03-10 14:35:32 +000090 node_init.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020091 pci/pci.c
Jakub Grajciar53f06a02020-03-30 08:12:57 +020092 pci/pci_types_api.c
Damjan Marion68b4da62018-09-30 18:26:20 +020093 physmem.c
Neale Ranns76b56492018-09-28 15:16:14 +000094 punt.c
95 punt_node.c
Damjan Marion8973b072022-03-01 15:51:18 +010096 stats/cli.c
97 stats/collector.c
98 stats/format.c
99 stats/init.c
100 stats/provider_mem.c
101 stats/stats.c
Damjan Marion612dd6a2018-07-30 12:45:07 +0200102 threads.c
103 threads_cli.c
Benoît Ganne56eccdb2021-08-20 09:18:31 +0200104 time.c
Damjan Marion612dd6a2018-07-30 12:45:07 +0200105 trace.c
Damjan Marion612dd6a2018-07-30 12:45:07 +0200106 unix/cli.c
107 unix/input.c
108 unix/main.c
Damjan Marion612dd6a2018-07-30 12:45:07 +0200109 unix/plugin.c
110 unix/util.c
Stephen Hemminger6fbef232018-10-15 12:52:30 -0700111 vmbus/vmbus.c
Marvin Liuabd56692022-08-17 09:38:40 +0800112 dma/dma.c
113 dma/cli.c
Tom Jones532a1ce2024-01-29 10:33:36 +0000114 ${PLATFORM_SOURCES}
Damjan Marion612dd6a2018-07-30 12:45:07 +0200115
Neale Ranns22e1f1d2019-03-01 15:53:11 +0000116 MULTIARCH_SOURCES
Damjan Marion1c229712021-04-21 12:55:15 +0200117 buffer_funcs.c
Neale Ranns22e1f1d2019-03-01 15:53:11 +0000118 drop.c
Neale Ranns76b56492018-09-28 15:16:14 +0000119 punt_node.c
Ray Kinsella4830e4f2020-03-10 14:35:32 +0000120 node_init.c
Neale Ranns22e1f1d2019-03-01 15:53:11 +0000121
Damjan Marion4553c952018-08-26 11:04:40 +0200122 INSTALL_HEADERS
Damjan Marion612dd6a2018-07-30 12:45:07 +0200123 buffer_funcs.h
124 buffer.h
125 buffer_node.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200126 cli.h
127 counter.h
Ole Troan58492a82018-09-04 13:19:12 +0200128 counter_types.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200129 defs.h
Mohammed Hawari463d5f92023-01-17 12:18:15 +0100130 dma/dma.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200131 error_funcs.h
132 error.h
133 format_funcs.h
134 global_funcs.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200135 init.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200136 log.h
137 main.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200138 node_funcs.h
139 node.h
140 pci/pci_config.h
141 pci/pci.h
Jakub Grajciar53f06a02020-03-30 08:12:57 +0200142 pci/pci_types_api.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200143 physmem_funcs.h
144 physmem.h
Neale Ranns76b56492018-09-28 15:16:14 +0000145 punt.h
Damjan Marion8973b072022-03-01 15:51:18 +0100146 stats/shared.h
147 stats/stats.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200148 threads.h
Benoît Ganne56eccdb2021-08-20 09:18:31 +0200149 time.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200150 trace_funcs.h
151 trace.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200152 unix/mc_socket.h
153 unix/plugin.h
154 unix/unix.h
155 vlib.h
Stephen Hemminger6fbef232018-10-15 12:52:30 -0700156 vmbus/vmbus.h
Tom Jones532a1ce2024-01-29 10:33:36 +0000157 ${PLATFORM_HEADERS}
Damjan Marion612dd6a2018-07-30 12:45:07 +0200158
Jakub Grajciar53f06a02020-03-30 08:12:57 +0200159 API_FILES
160 pci/pci_types.api
161
Tom Jones5ed27ef2024-01-29 14:38:19 +0000162 LINK_LIBRARIES vppinfra svm ${CMAKE_DL_LIBS} ${EPOLL_LIB}
Jakub Grajciar53f06a02020-03-30 08:12:57 +0200163
164 DEPENDS api_headers
Damjan Marion4553c952018-08-26 11:04:40 +0200165)