blob: f2279d0857ca4821ec3a4a285ca8a4bae4a52631 [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 +020020
Dave Barach98bd7572020-02-10 10:16:40 -050021option(VPP_VECTOR_GROW_BY_ONE "Vectors grow by one, instead of 3/2" OFF)
22if(VPP_VECTOR_GROW_BY_ONE)
23 set(VECTOR_GROW_BY_ONE 1)
24else(VPP_VECTOR_GROW_BY_ONE)
25 set(VECTOR_GROW_BY_ONE 0)
26endif(VPP_VECTOR_GROW_BY_ONE)
27
Damjan Marion612dd6a2018-07-30 12:45:07 +020028configure_file(
29 ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in
30 ${CMAKE_BINARY_DIR}/vppinfra/config.h
31)
32
33install(
34 FILES ${CMAKE_BINARY_DIR}/vppinfra/config.h
35 DESTINATION include/vppinfra
Damjan Marion43b06062018-08-29 22:20:45 +020036 COMPONENT vpp-dev
Damjan Marion612dd6a2018-07-30 12:45:07 +020037)
38
39##############################################################################
40# vppinfra sources
41##############################################################################
42set(VPPINFRA_SRCS
Damjan Marion612dd6a2018-07-30 12:45:07 +020043 backtrace.c
Dave Barach32dcd3b2019-07-08 12:25:38 -040044 bihash_all_vector.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020045 cpu.c
Dave Barach2c8e0022020-02-11 15:06:34 -050046 dlmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020047 elf.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020048 elog.c
49 error.c
50 fheap.c
51 fifo.c
52 format.c
53 graph.c
54 hash.c
55 heap.c
56 longjmp.S
57 macros.c
58 maplog.c
Dave Barach2c8e0022020-02-11 15:06:34 -050059 mem_dlmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020060 mhash.c
Gary Boona9ed6f72019-07-22 10:57:56 -040061 mpcap.c
Dave Barach3ae28732018-11-16 17:19:00 -050062 pcap.c
Damjan Marion68b4da62018-09-30 18:26:20 +020063 pmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020064 pool.c
65 ptclosure.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020066 random_buffer.c
Dave Barach2c8e0022020-02-11 15:06:34 -050067 random.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020068 random_isaac.c
Florin Coras672d5fc2019-04-15 17:28:51 -070069 rbtree.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020070 serialize.c
71 slist.c
72 socket.c
73 std-formats.c
74 string.c
75 time.c
76 time_range.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020077 timing_wheel.c
Dave Barachd7b828f2020-04-01 16:54:00 -040078 tw_timer_2t_2w_512sl.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020079 tw_timer_16t_1w_2048sl.c
Dave Barach2c8e0022020-02-11 15:06:34 -050080 tw_timer_16t_2w_512sl.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020081 tw_timer_1t_3w_1024sl_ov.c
Dave Barach2c8e0022020-02-11 15:06:34 -050082 tw_timer_2t_1w_2048sl.c
83 tw_timer_4t_3w_256sl.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020084 unformat.c
85 unix-formats.c
86 unix-misc.c
87 valloc.c
88 vec.c
89 vector.c
90 zvec.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020091)
92
Damjan Marion4553c952018-08-26 11:04:40 +020093set(VPPINFRA_HEADERS
BenoƮt Ganne9fb6d402019-04-15 15:28:21 +020094 sanitizer.h
Damjan Marion612dd6a2018-07-30 12:45:07 +020095 bihash_16_8.h
96 bihash_24_8.h
97 bihash_40_8.h
98 bihash_48_8.h
99 bihash_8_8.h
100 bihash_template.c
101 bihash_template.h
102 bihash_vec8_8.h
103 bitmap.h
104 bitops.h
105 byte_order.h
106 cache.h
Dave Barach5f2cfb22019-05-20 10:28:57 -0400107 callback.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200108 clib_error.h
109 clib.h
110 cpu.h
111 crc32.h
Klement Sekera39d02852020-02-20 11:39:58 +0000112 cuckoo_8_8.h
113 cuckoo_16_8.h
Damjan Marion44227532020-04-15 17:44:27 +0200114 cuckoo_common.h
115 cuckoo_debug.h
Klement Sekera39d02852020-02-20 11:39:58 +0000116 cuckoo_template.h
117 cuckoo_template.c
Damjan Marion612dd6a2018-07-30 12:45:07 +0200118 dlist.h
119 dlmalloc.h
120 elf_clib.h
121 elf.h
122 elog.h
123 error_bootstrap.h
124 error.h
125 fheap.h
126 fifo.h
127 file.h
128 flowhash_24_16.h
129 flowhash_8_8.h
130 flowhash_template.h
131 format.h
132 graph.h
133 hash.h
134 heap.h
135 lb_hash_hash.h
Florin Corasb957d802019-07-09 19:02:33 -0700136 llist.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200137 lock.h
138 longjmp.h
139 macros.h
140 maplog.h
141 math.h
142 memcpy_avx2.h
143 memcpy_avx512.h
144 memcpy_sse3.h
145 mem.h
146 mhash.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200147 mheap.h
Gary Boona9ed6f72019-07-22 10:57:56 -0400148 mpcap.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200149 os.h
Dave Barach3ae28732018-11-16 17:19:00 -0500150 pcap.h
151 pcap_funcs.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200152 pipeline.h
Damjan Marion68b4da62018-09-30 18:26:20 +0200153 pmalloc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200154 pool.h
Dave Barach4d1a8662018-09-10 12:31:15 -0400155 pmc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200156 ptclosure.h
157 random_buffer.h
158 random.h
159 random_isaac.h
Florin Coras672d5fc2019-04-15 17:28:51 -0700160 rbtree.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200161 serialize.h
Damjan Marioncf18ca92019-04-13 00:13:34 +0200162 sha2.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200163 slist.h
164 smp.h
165 socket.h
166 sparse_vec.h
167 string.h
168 time.h
169 time_range.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200170 timing_wheel.h
Yu Sun6f5b72e2020-04-16 13:56:12 -0400171 tw_timer_2t_2w_512sl.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200172 tw_timer_16t_1w_2048sl.h
173 tw_timer_16t_2w_512sl.h
174 tw_timer_1t_3w_1024sl_ov.h
175 tw_timer_2t_1w_2048sl.h
176 tw_timer_4t_3w_256sl.h
177 tw_timer_template.c
178 tw_timer_template.h
179 types.h
Sirshak Das2f6d7bb2018-10-03 22:53:51 +0000180 atomics.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200181 unix.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200182 valloc.h
183 vec_bootstrap.h
184 vec.h
185 vector_altivec.h
186 vector_avx2.h
187 vector_avx512.h
188 vector_funcs.h
189 vector.h
190 vector_neon.h
191 vector_sse42.h
192 xxhash.h
193 xy.h
194 zvec.h
195 linux/syscall.h
196 linux/sysfs.h
197)
198
Damjan Marion4dffd1c2018-09-03 12:30:36 +0200199if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
200 list(APPEND VPPINFRA_SRCS
201 elf_clib.c
202 linux/mem.c
203 linux/sysfs.c
204 )
205endif()
206
Damjan Marion4553c952018-08-26 11:04:40 +0200207add_vpp_library(vppinfra
208 SOURCES ${VPPINFRA_SRCS}
Florin Coras4c959952020-02-09 18:09:31 +0000209 LINK_LIBRARIES m
Damjan Marion4553c952018-08-26 11:04:40 +0200210 INSTALL_HEADERS ${VPPINFRA_HEADERS}
Damjan Marion43b06062018-08-29 22:20:45 +0200211 COMPONENT libvppinfra
Damjan Marion4553c952018-08-26 11:04:40 +0200212)
213
214##############################################################################
215# vppinfra headers
216##############################################################################
Damjan Marion612dd6a2018-07-30 12:45:07 +0200217option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF)
218if(VPP_BUILD_VPPINFRA_TESTS)
Damjan Marion4553c952018-08-26 11:04:40 +0200219 foreach(test
Damjan Marion612dd6a2018-07-30 12:45:07 +0200220 bihash_vec88
Damjan Marion612dd6a2018-07-30 12:45:07 +0200221 cuckoo_template
222 dlist
223 elf
224 elog
225 fifo
226 flowhash_template
227 format
228 fpool
229 hash
230 heap
231 longjmp
232 macros
233 maplog
Damjan Marion68b4da62018-09-30 18:26:20 +0200234 pmalloc
Damjan Marion612dd6a2018-07-30 12:45:07 +0200235 pool_iterate
236 ptclosure
237 random
238 random_isaac
jaszha0325ab6cf2019-07-01 17:20:52 -0500239 rwlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200240 serialize
241 slist
242 socket
jaszha039a4e6312019-06-19 14:07:05 -0500243 spinlock
Damjan Marion612dd6a2018-07-30 12:45:07 +0200244 time
245 time_range
246 timing_wheel
247 tw_timer
248 valloc
249 vec
Damjan Marion612dd6a2018-07-30 12:45:07 +0200250 zvec
251 )
Damjan Marion4553c952018-08-26 11:04:40 +0200252 add_vpp_executable(test_${test}
253 SOURCES test_${test}.c
Florin Coras4f944642019-08-01 10:54:06 -0700254 LINK_LIBRARIES vppinfra pthread
Damjan Marion4553c952018-08-26 11:04:40 +0200255 )
Damjan Marion612dd6a2018-07-30 12:45:07 +0200256 endforeach()
257
Damjan Marion4553c952018-08-26 11:04:40 +0200258 foreach(test bihash_template cuckoo_bihash)
259 add_vpp_executable(test_${test}
260 SOURCES test_${test}.c
261 LINK_LIBRARIES vppinfra Threads::Threads
262 )
263 endforeach()
Damjan Marion612dd6a2018-07-30 12:45:07 +0200264endif(VPP_BUILD_VPPINFRA_TESTS)