blob: 60e6eeff9fea2c3ee298f56f94681cdaff32b154 [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
14enable_language(ASM)
15
16##############################################################################
17# Generate vppinfra/config.h
18##############################################################################
Damjan Marionedc43872018-09-02 11:16:00 +020019set(LOG2_CACHE_LINE_BYTES ${VPP_LOG2_CACHE_LINE_SIZE})
Damjan Marion612dd6a2018-07-30 12:45:07 +020020option(VPP_USE_DLMALLOC "Use dlmalloc memory allocator." ON)
21if(VPP_USE_DLMALLOC)
22 set(DLMALLOC 1)
23else(VPP_USE_DLMALLOC)
24 set(DLMALLOC 0)
25endif(VPP_USE_DLMALLOC)
26
Dave Baracha690fdb2020-01-21 12:34:55 -050027find_library(NUMA numa)
28if (NUMA)
29 set(NUMA_LIBRARY_FOUND 1)
30else(NUMA)
31 set(NUMA_LIBRARY_FOUND 0)
32endif()
33
Damjan Marion612dd6a2018-07-30 12:45:07 +020034configure_file(
35 ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in
36 ${CMAKE_BINARY_DIR}/vppinfra/config.h
37)
38
39install(
40 FILES ${CMAKE_BINARY_DIR}/vppinfra/config.h
41 DESTINATION include/vppinfra
Damjan Marion43b06062018-08-29 22:20:45 +020042 COMPONENT vpp-dev
Damjan Marion612dd6a2018-07-30 12:45:07 +020043)
44
45##############################################################################
46# vppinfra sources
47##############################################################################
48set(VPPINFRA_SRCS
Damjan Marion612dd6a2018-07-30 12:45:07 +020049 backtrace.c
Dave Barach32dcd3b2019-07-08 12:25:38 -040050 bihash_all_vector.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020051 cpu.c
52 cuckoo_template.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020053 elf.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020054 elog.c
55 error.c
56 fheap.c
57 fifo.c
58 format.c
59 graph.c
60 hash.c
61 heap.c
62 longjmp.S
63 macros.c
64 maplog.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020065 mhash.c
Gary Boona9ed6f72019-07-22 10:57:56 -040066 mpcap.c
Dave Barach3ae28732018-11-16 17:19:00 -050067 pcap.c
Damjan Marion68b4da62018-09-30 18:26:20 +020068 pmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020069 pool.c
70 ptclosure.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020071 random.c
72 random_buffer.c
73 random_isaac.c
Florin Coras672d5fc2019-04-15 17:28:51 -070074 rbtree.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020075 serialize.c
76 slist.c
77 socket.c
78 std-formats.c
79 string.c
80 time.c
81 time_range.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020082 timing_wheel.c
83 tw_timer_2t_1w_2048sl.c
84 tw_timer_16t_2w_512sl.c
85 tw_timer_16t_1w_2048sl.c
86 tw_timer_4t_3w_256sl.c
87 tw_timer_1t_3w_1024sl_ov.c
88 unformat.c
89 unix-formats.c
90 unix-misc.c
91 valloc.c
92 vec.c
93 vector.c
94 zvec.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020095)
96
Damjan Marion4553c952018-08-26 11:04:40 +020097set(VPPINFRA_HEADERS
BenoƮt Ganne9fb6d402019-04-15 15:28:21 +020098 sanitizer.h
Damjan Marion612dd6a2018-07-30 12:45:07 +020099 bihash_16_8.h
100 bihash_24_8.h
101 bihash_40_8.h
102 bihash_48_8.h
103 bihash_8_8.h
104 bihash_template.c
105 bihash_template.h
106 bihash_vec8_8.h
107 bitmap.h
108 bitops.h
109 byte_order.h
110 cache.h
Dave Barach5f2cfb22019-05-20 10:28:57 -0400111 callback.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200112 clib_error.h
113 clib.h
114 cpu.h
115 crc32.h
116 dlist.h
117 dlmalloc.h
118 elf_clib.h
119 elf.h
120 elog.h
121 error_bootstrap.h
122 error.h
123 fheap.h
124 fifo.h
125 file.h
126 flowhash_24_16.h
127 flowhash_8_8.h
128 flowhash_template.h
129 format.h
130 graph.h
131 hash.h
132 heap.h
133 lb_hash_hash.h
Florin Corasb957d802019-07-09 19:02:33 -0700134 llist.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200135 lock.h
136 longjmp.h
137 macros.h
138 maplog.h
139 math.h
140 memcpy_avx2.h
141 memcpy_avx512.h
142 memcpy_sse3.h
143 mem.h
144 mhash.h
145 mheap_bootstrap.h
146 mheap.h
Gary Boona9ed6f72019-07-22 10:57:56 -0400147 mpcap.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200148 os.h
Dave Barach3ae28732018-11-16 17:19:00 -0500149 pcap.h
150 pcap_funcs.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200151 pipeline.h
Damjan Marion68b4da62018-09-30 18:26:20 +0200152 pmalloc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200153 pool.h
Dave Barach4d1a8662018-09-10 12:31:15 -0400154 pmc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200155 ptclosure.h
156 random_buffer.h
157 random.h
158 random_isaac.h
Florin Coras672d5fc2019-04-15 17:28:51 -0700159 rbtree.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200160 serialize.h
Damjan Marioncf18ca92019-04-13 00:13:34 +0200161 sha2.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200162 slist.h
163 smp.h
164 socket.h
165 sparse_vec.h
166 string.h
167 time.h
168 time_range.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200169 timing_wheel.h
170 tw_timer_16t_1w_2048sl.h
171 tw_timer_16t_2w_512sl.h
172 tw_timer_1t_3w_1024sl_ov.h
173 tw_timer_2t_1w_2048sl.h
174 tw_timer_4t_3w_256sl.h
175 tw_timer_template.c
176 tw_timer_template.h
177 types.h
Sirshak Das2f6d7bb2018-10-03 22:53:51 +0000178 atomics.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200179 unix.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200180 valloc.h
181 vec_bootstrap.h
182 vec.h
183 vector_altivec.h
184 vector_avx2.h
185 vector_avx512.h
186 vector_funcs.h
187 vector.h
188 vector_neon.h
189 vector_sse42.h
190 xxhash.h
191 xy.h
192 zvec.h
193 linux/syscall.h
194 linux/sysfs.h
195)
196
Damjan Marion4dffd1c2018-09-03 12:30:36 +0200197if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
198 list(APPEND VPPINFRA_SRCS
199 elf_clib.c
200 linux/mem.c
201 linux/sysfs.c
202 )
203endif()
204
Damjan Marion4553c952018-08-26 11:04:40 +0200205
206if(VPP_USE_DLMALLOC)
207 list(APPEND VPPINFRA_SRCS
208 dlmalloc.c
209 mem_dlmalloc.c
210 )
211else(VPP_USE_DLMALLOC)
212 list(APPEND VPPINFRA_SRCS
213 mheap.c
214 mem_mheap.c
215 )
216endif(VPP_USE_DLMALLOC)
217
218add_vpp_library(vppinfra
219 SOURCES ${VPPINFRA_SRCS}
Dave Baracha690fdb2020-01-21 12:34:55 -0500220 LINK_LIBRARIES m ${NUMA}
Damjan Marion4553c952018-08-26 11:04:40 +0200221 INSTALL_HEADERS ${VPPINFRA_HEADERS}
Damjan Marion43b06062018-08-29 22:20:45 +0200222 COMPONENT libvppinfra
Damjan Marion4553c952018-08-26 11:04:40 +0200223)
224
225##############################################################################
226# vppinfra headers
227##############################################################################
Damjan Marion612dd6a2018-07-30 12:45:07 +0200228option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF)
229if(VPP_BUILD_VPPINFRA_TESTS)
Damjan Marion4553c952018-08-26 11:04:40 +0200230 foreach(test
Damjan Marion612dd6a2018-07-30 12:45:07 +0200231 bihash_vec88
Damjan Marion612dd6a2018-07-30 12:45:07 +0200232 cuckoo_template
233 dlist
234 elf
235 elog
236 fifo
237 flowhash_template
238 format
239 fpool
240 hash
241 heap
242 longjmp
243 macros
244 maplog
Damjan Marion68b4da62018-09-30 18:26:20 +0200245 pmalloc
Damjan Marion612dd6a2018-07-30 12:45:07 +0200246 pool_iterate
247 ptclosure
248 random
249 random_isaac
jaszha0325ab6cf2019-07-01 17:20:52 -0500250 rwlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200251 serialize
252 slist
253 socket
jaszha039a4e6312019-06-19 14:07:05 -0500254 spinlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200255 time
256 time_range
257 timing_wheel
258 tw_timer
259 valloc
260 vec
Damjan Marion612dd6a2018-07-30 12:45:07 +0200261 zvec
262 )
Damjan Marion4553c952018-08-26 11:04:40 +0200263 add_vpp_executable(test_${test}
264 SOURCES test_${test}.c
Florin Coras4f944642019-08-01 10:54:06 -0700265 LINK_LIBRARIES vppinfra pthread
Damjan Marion4553c952018-08-26 11:04:40 +0200266 )
Damjan Marion612dd6a2018-07-30 12:45:07 +0200267 endforeach()
268
Damjan Marion4553c952018-08-26 11:04:40 +0200269 foreach(test bihash_template cuckoo_bihash)
270 add_vpp_executable(test_${test}
271 SOURCES test_${test}.c
272 LINK_LIBRARIES vppinfra Threads::Threads
273 )
274 endforeach()
Damjan Marion612dd6a2018-07-30 12:45:07 +0200275endif(VPP_BUILD_VPPINFRA_TESTS)