blob: 1c234cce234722effe8df6ef17f4f4ced4a09891 [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
27configure_file(
28 ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in
29 ${CMAKE_BINARY_DIR}/vppinfra/config.h
30)
31
32install(
33 FILES ${CMAKE_BINARY_DIR}/vppinfra/config.h
34 DESTINATION include/vppinfra
Damjan Marion43b06062018-08-29 22:20:45 +020035 COMPONENT vpp-dev
Damjan Marion612dd6a2018-07-30 12:45:07 +020036)
37
38##############################################################################
39# vppinfra sources
40##############################################################################
41set(VPPINFRA_SRCS
Damjan Marion612dd6a2018-07-30 12:45:07 +020042 backtrace.c
Dave Barach32dcd3b2019-07-08 12:25:38 -040043 bihash_all_vector.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020044 cpu.c
45 cuckoo_template.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020046 elf.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020047 elog.c
48 error.c
49 fheap.c
50 fifo.c
51 format.c
52 graph.c
53 hash.c
54 heap.c
55 longjmp.S
56 macros.c
57 maplog.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020058 mhash.c
Gary Boona9ed6f72019-07-22 10:57:56 -040059 mpcap.c
Dave Barach3ae28732018-11-16 17:19:00 -050060 pcap.c
Damjan Marion68b4da62018-09-30 18:26:20 +020061 pmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020062 pool.c
63 ptclosure.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020064 random.c
65 random_buffer.c
66 random_isaac.c
Florin Coras672d5fc2019-04-15 17:28:51 -070067 rbtree.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020068 serialize.c
69 slist.c
70 socket.c
71 std-formats.c
72 string.c
73 time.c
74 time_range.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020075 timing_wheel.c
76 tw_timer_2t_1w_2048sl.c
77 tw_timer_16t_2w_512sl.c
78 tw_timer_16t_1w_2048sl.c
79 tw_timer_4t_3w_256sl.c
80 tw_timer_1t_3w_1024sl_ov.c
81 unformat.c
82 unix-formats.c
83 unix-misc.c
84 valloc.c
85 vec.c
86 vector.c
87 zvec.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020088)
89
Damjan Marion4553c952018-08-26 11:04:40 +020090set(VPPINFRA_HEADERS
BenoƮt Ganne9fb6d402019-04-15 15:28:21 +020091 sanitizer.h
Damjan Marion612dd6a2018-07-30 12:45:07 +020092 bihash_16_8.h
93 bihash_24_8.h
94 bihash_40_8.h
95 bihash_48_8.h
96 bihash_8_8.h
97 bihash_template.c
98 bihash_template.h
99 bihash_vec8_8.h
100 bitmap.h
101 bitops.h
102 byte_order.h
103 cache.h
Dave Barach5f2cfb22019-05-20 10:28:57 -0400104 callback.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200105 clib_error.h
106 clib.h
107 cpu.h
108 crc32.h
109 dlist.h
110 dlmalloc.h
111 elf_clib.h
112 elf.h
113 elog.h
114 error_bootstrap.h
115 error.h
116 fheap.h
117 fifo.h
118 file.h
119 flowhash_24_16.h
120 flowhash_8_8.h
121 flowhash_template.h
122 format.h
123 graph.h
124 hash.h
125 heap.h
126 lb_hash_hash.h
Florin Corasb957d802019-07-09 19:02:33 -0700127 llist.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200128 lock.h
129 longjmp.h
130 macros.h
131 maplog.h
132 math.h
133 memcpy_avx2.h
134 memcpy_avx512.h
135 memcpy_sse3.h
136 mem.h
137 mhash.h
138 mheap_bootstrap.h
139 mheap.h
Gary Boona9ed6f72019-07-22 10:57:56 -0400140 mpcap.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200141 os.h
Dave Barach3ae28732018-11-16 17:19:00 -0500142 pcap.h
143 pcap_funcs.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200144 pipeline.h
Damjan Marion68b4da62018-09-30 18:26:20 +0200145 pmalloc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200146 pool.h
Dave Barach4d1a8662018-09-10 12:31:15 -0400147 pmc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200148 ptclosure.h
149 random_buffer.h
150 random.h
151 random_isaac.h
Florin Coras672d5fc2019-04-15 17:28:51 -0700152 rbtree.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200153 serialize.h
Damjan Marioncf18ca92019-04-13 00:13:34 +0200154 sha2.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200155 slist.h
156 smp.h
157 socket.h
158 sparse_vec.h
159 string.h
160 time.h
161 time_range.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200162 timing_wheel.h
163 tw_timer_16t_1w_2048sl.h
164 tw_timer_16t_2w_512sl.h
165 tw_timer_1t_3w_1024sl_ov.h
166 tw_timer_2t_1w_2048sl.h
167 tw_timer_4t_3w_256sl.h
168 tw_timer_template.c
169 tw_timer_template.h
170 types.h
Sirshak Das2f6d7bb2018-10-03 22:53:51 +0000171 atomics.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200172 unix.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200173 valloc.h
174 vec_bootstrap.h
175 vec.h
176 vector_altivec.h
177 vector_avx2.h
178 vector_avx512.h
179 vector_funcs.h
180 vector.h
181 vector_neon.h
182 vector_sse42.h
183 xxhash.h
184 xy.h
185 zvec.h
186 linux/syscall.h
187 linux/sysfs.h
188)
189
Damjan Marion4dffd1c2018-09-03 12:30:36 +0200190if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
191 list(APPEND VPPINFRA_SRCS
192 elf_clib.c
193 linux/mem.c
194 linux/sysfs.c
195 )
196endif()
197
Damjan Marion4553c952018-08-26 11:04:40 +0200198
199if(VPP_USE_DLMALLOC)
200 list(APPEND VPPINFRA_SRCS
201 dlmalloc.c
202 mem_dlmalloc.c
203 )
204else(VPP_USE_DLMALLOC)
205 list(APPEND VPPINFRA_SRCS
206 mheap.c
207 mem_mheap.c
208 )
209endif(VPP_USE_DLMALLOC)
210
211add_vpp_library(vppinfra
212 SOURCES ${VPPINFRA_SRCS}
213 LINK_LIBRARIES m
214 INSTALL_HEADERS ${VPPINFRA_HEADERS}
Damjan Marion43b06062018-08-29 22:20:45 +0200215 COMPONENT libvppinfra
Damjan Marion4553c952018-08-26 11:04:40 +0200216)
217
218##############################################################################
219# vppinfra headers
220##############################################################################
Damjan Marion612dd6a2018-07-30 12:45:07 +0200221option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF)
222if(VPP_BUILD_VPPINFRA_TESTS)
Damjan Marion4553c952018-08-26 11:04:40 +0200223 foreach(test
Damjan Marion612dd6a2018-07-30 12:45:07 +0200224 bihash_vec88
Damjan Marion612dd6a2018-07-30 12:45:07 +0200225 cuckoo_template
226 dlist
227 elf
228 elog
229 fifo
230 flowhash_template
231 format
232 fpool
233 hash
234 heap
235 longjmp
236 macros
237 maplog
Damjan Marion68b4da62018-09-30 18:26:20 +0200238 pmalloc
Damjan Marion612dd6a2018-07-30 12:45:07 +0200239 pool_iterate
240 ptclosure
241 random
242 random_isaac
jaszha0325ab6cf2019-07-01 17:20:52 -0500243 rwlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200244 serialize
245 slist
246 socket
jaszha039a4e6312019-06-19 14:07:05 -0500247 spinlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200248 time
249 time_range
250 timing_wheel
251 tw_timer
252 valloc
253 vec
Damjan Marion612dd6a2018-07-30 12:45:07 +0200254 zvec
255 )
Damjan Marion4553c952018-08-26 11:04:40 +0200256 add_vpp_executable(test_${test}
257 SOURCES test_${test}.c
Florin Coras4f944642019-08-01 10:54:06 -0700258 LINK_LIBRARIES vppinfra pthread
Damjan Marion4553c952018-08-26 11:04:40 +0200259 )
Damjan Marion612dd6a2018-07-30 12:45:07 +0200260 endforeach()
261
Damjan Marion4553c952018-08-26 11:04:40 +0200262 foreach(test bihash_template cuckoo_bihash)
263 add_vpp_executable(test_${test}
264 SOURCES test_${test}.c
265 LINK_LIBRARIES vppinfra Threads::Threads
266 )
267 endforeach()
Damjan Marion612dd6a2018-07-30 12:45:07 +0200268endif(VPP_BUILD_VPPINFRA_TESTS)