vppinfra: add option to use libexecinfo
[vpp.git] / src / vppinfra / CMakeLists.txt
index de88062..8ec843a 100644 (file)
@@ -38,6 +38,11 @@ install(
 
 add_definitions(-fvisibility=hidden)
 
+# Ensure symbols from cJSON are exported
+set_source_files_properties( cJSON.c PROPERTIES
+  COMPILE_DEFINITIONS " CJSON_API_VISIBILITY " )
+
+
 ##############################################################################
 # vppinfra sources
 ##############################################################################
@@ -58,6 +63,7 @@ set(VPPINFRA_SRCS
   macros.c
   maplog.c
   mem.c
+  mem_bulk.c
   mem_dlmalloc.c
   mhash.c
   mpcap.c
@@ -88,6 +94,7 @@ set(VPPINFRA_SRCS
   valloc.c
   vec.c
   vector.c
+  cJSON.c
 )
 
 set(VPPINFRA_HEADERS
@@ -97,6 +104,8 @@ set(VPPINFRA_HEADERS
   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
@@ -106,6 +115,7 @@ set(VPPINFRA_HEADERS
   cache.h
   callback.h
   callback_data.h
+  cJSON.h
   clib_error.h
   clib.h
   cpu.h
@@ -141,7 +151,6 @@ set(VPPINFRA_HEADERS
   pcap_funcs.h
   pmalloc.h
   pool.h
-  pmc.h
   ptclosure.h
   random_buffer.h
   random.h
@@ -191,11 +200,16 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
    )
 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
+  LINK_LIBRARIES m ${EXECINFO_LIB}
   INSTALL_HEADERS ${VPPINFRA_HEADERS}
   COMPONENT libvppinfra
+  LTO
 )
 
 ##############################################################################