blob: 02e5322e1fcb796968daac49dd94e1c49f86351c [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
43 cpu.c
44 cuckoo_template.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020045 elf.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020046 elog.c
47 error.c
48 fheap.c
49 fifo.c
50 format.c
51 graph.c
52 hash.c
53 heap.c
54 longjmp.S
55 macros.c
56 maplog.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020057 mhash.c
Dave Barach3ae28732018-11-16 17:19:00 -050058 pcap.c
Damjan Marion68b4da62018-09-30 18:26:20 +020059 pmalloc.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020060 pool.c
61 ptclosure.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020062 random.c
63 random_buffer.c
64 random_isaac.c
Florin Coras672d5fc2019-04-15 17:28:51 -070065 rbtree.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020066 serialize.c
67 slist.c
68 socket.c
69 std-formats.c
70 string.c
71 time.c
72 time_range.c
73 timer.c
74 timing_wheel.c
75 tw_timer_2t_1w_2048sl.c
76 tw_timer_16t_2w_512sl.c
77 tw_timer_16t_1w_2048sl.c
78 tw_timer_4t_3w_256sl.c
79 tw_timer_1t_3w_1024sl_ov.c
80 unformat.c
81 unix-formats.c
82 unix-misc.c
83 valloc.c
84 vec.c
85 vector.c
86 zvec.c
Damjan Marion612dd6a2018-07-30 12:45:07 +020087)
88
Damjan Marion4553c952018-08-26 11:04:40 +020089set(VPPINFRA_HEADERS
Damjan Marion612dd6a2018-07-30 12:45:07 +020090 bihash_16_8.h
91 bihash_24_8.h
92 bihash_40_8.h
93 bihash_48_8.h
94 bihash_8_8.h
95 bihash_template.c
96 bihash_template.h
97 bihash_vec8_8.h
98 bitmap.h
99 bitops.h
100 byte_order.h
101 cache.h
102 clib_error.h
103 clib.h
104 cpu.h
105 crc32.h
106 dlist.h
107 dlmalloc.h
108 elf_clib.h
109 elf.h
110 elog.h
111 error_bootstrap.h
112 error.h
113 fheap.h
114 fifo.h
115 file.h
116 flowhash_24_16.h
117 flowhash_8_8.h
118 flowhash_template.h
119 format.h
120 graph.h
121 hash.h
122 heap.h
123 lb_hash_hash.h
124 lock.h
125 longjmp.h
126 macros.h
127 maplog.h
128 math.h
129 memcpy_avx2.h
130 memcpy_avx512.h
131 memcpy_sse3.h
132 mem.h
133 mhash.h
134 mheap_bootstrap.h
135 mheap.h
136 os.h
Dave Barach3ae28732018-11-16 17:19:00 -0500137 pcap.h
138 pcap_funcs.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200139 pipeline.h
Damjan Marion68b4da62018-09-30 18:26:20 +0200140 pmalloc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200141 pool.h
Dave Barach4d1a8662018-09-10 12:31:15 -0400142 pmc.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200143 ptclosure.h
144 random_buffer.h
145 random.h
146 random_isaac.h
Florin Coras672d5fc2019-04-15 17:28:51 -0700147 rbtree.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200148 serialize.h
Damjan Marioncf18ca92019-04-13 00:13:34 +0200149 sha2.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200150 slist.h
151 smp.h
152 socket.h
153 sparse_vec.h
154 string.h
155 time.h
156 time_range.h
157 timer.h
158 timing_wheel.h
159 tw_timer_16t_1w_2048sl.h
160 tw_timer_16t_2w_512sl.h
161 tw_timer_1t_3w_1024sl_ov.h
162 tw_timer_2t_1w_2048sl.h
163 tw_timer_4t_3w_256sl.h
164 tw_timer_template.c
165 tw_timer_template.h
166 types.h
Sirshak Das2f6d7bb2018-10-03 22:53:51 +0000167 atomics.h
Damjan Marion612dd6a2018-07-30 12:45:07 +0200168 unix.h
169 valgrind.h
170 valloc.h
171 vec_bootstrap.h
172 vec.h
173 vector_altivec.h
174 vector_avx2.h
175 vector_avx512.h
176 vector_funcs.h
177 vector.h
178 vector_neon.h
179 vector_sse42.h
180 xxhash.h
181 xy.h
182 zvec.h
183 linux/syscall.h
184 linux/sysfs.h
185)
186
Damjan Marion4dffd1c2018-09-03 12:30:36 +0200187if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
188 list(APPEND VPPINFRA_SRCS
189 elf_clib.c
190 linux/mem.c
191 linux/sysfs.c
192 )
193endif()
194
Damjan Marion4553c952018-08-26 11:04:40 +0200195
196if(VPP_USE_DLMALLOC)
197 list(APPEND VPPINFRA_SRCS
198 dlmalloc.c
199 mem_dlmalloc.c
200 )
201else(VPP_USE_DLMALLOC)
202 list(APPEND VPPINFRA_SRCS
203 mheap.c
204 mem_mheap.c
205 )
206endif(VPP_USE_DLMALLOC)
207
208add_vpp_library(vppinfra
209 SOURCES ${VPPINFRA_SRCS}
210 LINK_LIBRARIES m
211 INSTALL_HEADERS ${VPPINFRA_HEADERS}
Damjan Marion43b06062018-08-29 22:20:45 +0200212 COMPONENT libvppinfra
Damjan Marion4553c952018-08-26 11:04:40 +0200213)
214
215##############################################################################
216# vppinfra headers
217##############################################################################
Damjan Marion612dd6a2018-07-30 12:45:07 +0200218option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF)
219if(VPP_BUILD_VPPINFRA_TESTS)
Damjan Marion4553c952018-08-26 11:04:40 +0200220 foreach(test
Damjan Marion612dd6a2018-07-30 12:45:07 +0200221 bihash_vec88
Damjan Marion612dd6a2018-07-30 12:45:07 +0200222 cuckoo_template
223 dlist
224 elf
225 elog
226 fifo
227 flowhash_template
228 format
229 fpool
230 hash
231 heap
232 longjmp
233 macros
234 maplog
Damjan Marion68b4da62018-09-30 18:26:20 +0200235 pmalloc
Damjan Marion612dd6a2018-07-30 12:45:07 +0200236 pool_iterate
237 ptclosure
238 random
239 random_isaac
240 serialize
241 slist
242 socket
243 time
244 time_range
245 timing_wheel
246 tw_timer
247 valloc
248 vec
Damjan Marion612dd6a2018-07-30 12:45:07 +0200249 zvec
250 )
Damjan Marion4553c952018-08-26 11:04:40 +0200251 add_vpp_executable(test_${test}
252 SOURCES test_${test}.c
253 LINK_LIBRARIES vppinfra
254 )
Damjan Marion612dd6a2018-07-30 12:45:07 +0200255 endforeach()
256
Damjan Marion4553c952018-08-26 11:04:40 +0200257 foreach(test bihash_template cuckoo_bihash)
258 add_vpp_executable(test_${test}
259 SOURCES test_${test}.c
260 LINK_LIBRARIES vppinfra Threads::Threads
261 )
262 endforeach()
Damjan Marion612dd6a2018-07-30 12:45:07 +0200263endif(VPP_BUILD_VPPINFRA_TESTS)