From 612dd6a955e44d2c0fed1801fb8de585ca695c63 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 30 Jul 2018 12:45:07 +0200 Subject: CMake as an alternative to autotools (experimental) Change-Id: Ibc59323e849810531dd0963e85493efad3b86857 Signed-off-by: Damjan Marion --- src/vppinfra/CMakeLists.txt | 235 ++++++++++++++++++++++++++++++++++++++++++++ src/vppinfra/vector_sse42.h | 2 +- 2 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 src/vppinfra/CMakeLists.txt (limited to 'src/vppinfra') diff --git a/src/vppinfra/CMakeLists.txt b/src/vppinfra/CMakeLists.txt new file mode 100644 index 00000000000..17daecd8ec1 --- /dev/null +++ b/src/vppinfra/CMakeLists.txt @@ -0,0 +1,235 @@ +# Copyright (c) 2018 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +enable_language(ASM) + +############################################################################## +# Generate vppinfra/config.h +############################################################################## +set(LOG2_CACHE_LINE_BYTES 6) +option(VPP_USE_DLMALLOC "Use dlmalloc memory allocator." ON) +if(VPP_USE_DLMALLOC) + set(DLMALLOC 1) +else(VPP_USE_DLMALLOC) + set(DLMALLOC 0) +endif(VPP_USE_DLMALLOC) + +configure_file( + ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in + ${CMAKE_BINARY_DIR}/vppinfra/config.h +) + +install( + FILES ${CMAKE_BINARY_DIR}/vppinfra/config.h + DESTINATION include/vppinfra + COMPONENT dev +) + +############################################################################## +# vppinfra sources +############################################################################## +set(VPPINFRA_SRCS + asm_x86.c + backtrace.c + cpu.c + cuckoo_template.c + dlmalloc.c + elf.c + elf_clib.c + elog.c + error.c + fheap.c + fifo.c + format.c + graph.c + hash.c + heap.c + longjmp.S + macros.c + maplog.c + mem_dlmalloc.c + mhash.c + pool.c + ptclosure.c + qsort.c + random.c + random_buffer.c + random_isaac.c + serialize.c + slist.c + socket.c + std-formats.c + string.c + time.c + time_range.c + timer.c + timing_wheel.c + tw_timer_2t_1w_2048sl.c + tw_timer_16t_2w_512sl.c + tw_timer_16t_1w_2048sl.c + tw_timer_4t_3w_256sl.c + tw_timer_1t_3w_1024sl_ov.c + unformat.c + unix-formats.c + unix-misc.c + valloc.c + vec.c + vector.c + zvec.c + linux/mem.c + linux/sysfs.c +) + +add_library(vppinfra SHARED ${VPPINFRA_SRCS}) +target_link_libraries(vppinfra m) +install(TARGETS vppinfra DESTINATION lib) + +############################################################################## +# vppinfra headers +############################################################################## +vpp_add_header_files(vppinfra + asm_mips.h + asm_x86.h + bihash_16_8.h + bihash_24_8.h + bihash_40_8.h + bihash_48_8.h + bihash_8_8.h + bihash_template.c + bihash_template.h + bihash_vec8_8.h + bitmap.h + bitops.h + byte_order.h + cache.h + clib_error.h + clib.h + cpu.h + crc32.h + dlist.h + dlmalloc.h + elf_clib.h + elf.h + elog.h + error_bootstrap.h + error.h + fheap.h + fifo.h + file.h + flowhash_24_16.h + flowhash_8_8.h + flowhash_template.h + format.h + graph.h + hash.h + heap.h + lb_hash_hash.h + lock.h + longjmp.h + macros.h + maplog.h + math.h + memcpy_avx2.h + memcpy_avx512.h + memcpy_sse3.h + mem.h + mhash.h + mheap_bootstrap.h + mheap.h + os.h + pipeline.h + pool.h + ptclosure.h + random_buffer.h + random.h + random_isaac.h + serialize.h + slist.h + smp.h + socket.h + sparse_vec.h + string.h + time.h + time_range.h + timer.h + timing_wheel.h + tw_timer_16t_1w_2048sl.h + tw_timer_16t_2w_512sl.h + tw_timer_1t_3w_1024sl_ov.h + tw_timer_2t_1w_2048sl.h + tw_timer_4t_3w_256sl.h + tw_timer_template.c + tw_timer_template.h + types.h + unix.h + valgrind.h + valloc.h + vec_bootstrap.h + vec.h + vector_altivec.h + vector_avx2.h + vector_avx512.h + vector_funcs.h + vector.h + vector_neon.h + vector_sse42.h + xxhash.h + xy.h + zvec.h + linux/syscall.h + linux/sysfs.h +) + +option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF) +if(VPP_BUILD_VPPINFRA_TESTS) + set(VPPINFRA_TESTS + bihash_template + bihash_vec88 + cuckoo_bihash + cuckoo_template + dlist + elf + elog + fifo + flowhash_template + format + fpool + hash + heap + longjmp + macros + maplog + pool_iterate + ptclosure + random + random_isaac + serialize + slist + socket + time + time_range + timing_wheel + tw_timer + valloc + vec + vhash + zvec + ) + foreach(test ${VPPINFRA_TESTS}) + add_executable(test_${test} test_${test}.c) + target_link_libraries(test_${test} vppinfra) + endforeach() + + target_link_libraries(test_bihash_template Threads::Threads) + target_link_libraries(test_cuckoo_bihash Threads::Threads) +endif(VPP_BUILD_VPPINFRA_TESTS) diff --git a/src/vppinfra/vector_sse42.h b/src/vppinfra/vector_sse42.h index 381db37200e..2b6246e97f8 100644 --- a/src/vppinfra/vector_sse42.h +++ b/src/vppinfra/vector_sse42.h @@ -616,7 +616,7 @@ u8x16_shuffle (u8x16 v, u8x16 m) static_always_inline u32x4 u32x4_shuffle (u32x4 v, const int a, const int b, const int c, const int d) { -#if defined(__clang__) || CLIB_DEBUG > 0 +#if defined(__clang__) || !__OPTIMIZE__ u32x4 r = { v[a], v[b], v[c], v[d] }; return r; #else -- cgit 1.2.3-korg