X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvppinfra%2FCMakeLists.txt;h=1114092e246214990f7fd89a3e32afb47e153171;hp=ecd1528c391d644a25c1c7eeeed6a24476b630a0;hb=36217e3ca;hpb=d897adcebb0085942cbade024c3ccd8bafd448ef diff --git a/src/vppinfra/CMakeLists.txt b/src/vppinfra/CMakeLists.txt index ecd1528c391..1114092e246 100644 --- a/src/vppinfra/CMakeLists.txt +++ b/src/vppinfra/CMakeLists.txt @@ -16,105 +16,102 @@ 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) +set(LOG2_CACHE_LINE_BYTES ${VPP_LOG2_CACHE_LINE_SIZE}) + +option(VPP_VECTOR_GROW_BY_ONE "Vectors grow by one, instead of 3/2" OFF) +if(VPP_VECTOR_GROW_BY_ONE) + set(VECTOR_GROW_BY_ONE 1) +else(VPP_VECTOR_GROW_BY_ONE) + set(VECTOR_GROW_BY_ONE 0) +endif(VPP_VECTOR_GROW_BY_ONE) configure_file( ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in - ${CMAKE_BINARY_DIR}/vppinfra/config.h + ${CMAKE_CURRENT_BINARY_DIR}/config.h ) install( - FILES ${CMAKE_BINARY_DIR}/vppinfra/config.h - DESTINATION include/vppinfra - COMPONENT dev + FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vppinfra + COMPONENT vpp-dev ) +add_definitions(-fvisibility=hidden) + +# Ensure symbols from cJSON are exported +set_source_files_properties( cJSON.c jsonformat.c PROPERTIES + COMPILE_DEFINITIONS " CJSON_API_VISIBILITY " ) + + ############################################################################## # vppinfra sources ############################################################################## set(VPPINFRA_SRCS - asm_x86.c backtrace.c + bitmap.c + bihash_all_vector.c cpu.c - cuckoo_template.c + dlmalloc.c elf.c - elf_clib.c elog.c error.c - fheap.c fifo.c format.c + format_table.c graph.c hash.c heap.c + interrupt.c + jsonformat.c longjmp.S macros.c maplog.c + mem.c + mem_bulk.c + mem_dlmalloc.c mhash.c + mpcap.c + pcap.c + pmalloc.c pool.c ptclosure.c - qsort.c - random.c random_buffer.c + random.c random_isaac.c + rbtree.c + sanitizer.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_2t_2w_512sl.c tw_timer_16t_1w_2048sl.c - tw_timer_4t_3w_256sl.c + tw_timer_16t_2w_512sl.c tw_timer_1t_3w_1024sl_ov.c + tw_timer_2t_1w_2048sl.c + tw_timer_4t_3w_256sl.c unformat.c unix-formats.c unix-misc.c valloc.c vec.c vector.c - zvec.c - linux/mem.c - linux/sysfs.c + cJSON.c ) -if(VPP_USE_DLMALLOC) - list(APPEND VPPINFRA_SRCS - dlmalloc.c - mem_dlmalloc.c - ) -else(VPP_USE_DLMALLOC) - list(APPEND VPPINFRA_SRCS - mheap.c - mem_mheap.c - ) -endif(VPP_USE_DLMALLOC) - -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 +set(VPPINFRA_HEADERS + sanitizer.h bihash_16_8.h bihash_24_8.h + bihash_32_8.h bihash_40_8.h bihash_48_8.h bihash_8_8.h + bihash_8_16.h + bihash_24_16.h bihash_template.c bihash_template.h bihash_vec8_8.h @@ -122,6 +119,9 @@ vpp_add_header_files(vppinfra bitops.h byte_order.h cache.h + callback.h + callback_data.h + cJSON.h clib_error.h clib.h cpu.h @@ -133,46 +133,49 @@ vpp_add_header_files(vppinfra 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 + format_table.h graph.h hash.h heap.h + interrupt.h + jsonformat.h lb_hash_hash.h + llist.h lock.h longjmp.h macros.h maplog.h math.h + memcpy.h memcpy_avx2.h memcpy_avx512.h memcpy_sse3.h mem.h mhash.h - mheap_bootstrap.h - mheap.h + mpcap.h os.h - pipeline.h + pcap.h + pcap_funcs.h + pmalloc.h pool.h ptclosure.h random_buffer.h random.h random_isaac.h + rbtree.h serialize.h - slist.h + sha2.h smp.h socket.h sparse_vec.h string.h time.h time_range.h - timer.h timing_wheel.h + tw_timer_2t_2w_512sl.h tw_timer_16t_1w_2048sl.h tw_timer_16t_2w_512sl.h tw_timer_1t_3w_1024sl_ov.h @@ -181,37 +184,57 @@ vpp_add_header_files(vppinfra tw_timer_template.c tw_timer_template.h types.h + atomics.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/mask_compare.h + vector/compress.h + vector/array_mask.h vector.h vector_neon.h vector_sse42.h + warnings.h xxhash.h - xy.h - zvec.h - linux/syscall.h linux/sysfs.h ) +if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + list(APPEND VPPINFRA_SRCS + elf_clib.c + linux/mem.c + linux/sysfs.c + linux/netns.c + ) +endif() + +option(VPP_USE_EXTERNAL_LIBEXECINFO "Use external libexecinfo (useful for non-glibc targets)." OFF) +if(VPP_USE_EXTERNAL_LIBEXECINFO) + set(EXECINFO_LIB execinfo) +endif() +add_vpp_library(vppinfra + SOURCES ${VPPINFRA_SRCS} + LINK_LIBRARIES m ${EXECINFO_LIB} + INSTALL_HEADERS ${VPPINFRA_HEADERS} + COMPONENT libvppinfra + LTO +) + +############################################################################## +# vppinfra headers +############################################################################## option(VPP_BUILD_VPPINFRA_TESTS "Build vppinfra tests." OFF) if(VPP_BUILD_VPPINFRA_TESTS) - set(VPPINFRA_TESTS - bihash_template + foreach(test bihash_vec88 - cuckoo_bihash - cuckoo_template dlist elf elog fifo - flowhash_template format fpool hash @@ -219,27 +242,50 @@ if(VPP_BUILD_VPPINFRA_TESTS) longjmp macros maplog + pmalloc pool_iterate ptclosure random random_isaac + rwlock serialize - slist socket + spinlock 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) + add_vpp_executable(test_${test} + SOURCES test_${test}.c + LINK_LIBRARIES vppinfra pthread + ) + endforeach() + + foreach(test bihash_template) + add_vpp_executable(test_${test} + SOURCES test_${test}.c + LINK_LIBRARIES vppinfra Threads::Threads + ) endforeach() - target_link_libraries(test_bihash_template Threads::Threads) - target_link_libraries(test_cuckoo_bihash Threads::Threads) +set(test_files + vector/test/compress.c + vector/test/mask_compare.c + vector/test/array_mask.c +) + +add_vpp_executable(test_vector_funcs + SOURCES + vector/test/test.c + ${test_files} + LINK_LIBRARIES vppinfra +) + +vpp_library_set_multiarch_sources(test_vector_funcs + SOURCES + ${test_files} +) + endif(VPP_BUILD_VPPINFRA_TESTS)