aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2022-02-22 13:50:22 -0800
committerGerald Combs <gerald@wireshark.org>2022-03-22 17:51:32 +0000
commitbe03aa1a4d4e68ca7740e0fa737ad7f9f076da7c (patch)
tree70e8782c6bed674a2d9d926400ea72e7a0b3a973 /cmake/modules
parent90bd33e4e2580fcfe79daeb29b21ddc3c634b7ad (diff)
CMake+Sysdig Bridge: Add a FindSinsp module.
Add a FindSinsp CMake module, and use it in the Sysdig Bridge plugin CMakeLists.txt. It still needs work, but should at least be usable on more machines. Conflicts: plugins/epan/sysdig_bridge/CMakeLists.txt
Diffstat (limited to 'cmake/modules')
-rw-r--r--cmake/modules/FindSinsp.cmake128
1 files changed, 128 insertions, 0 deletions
diff --git a/cmake/modules/FindSinsp.cmake b/cmake/modules/FindSinsp.cmake
new file mode 100644
index 0000000000..ee5af28493
--- /dev/null
+++ b/cmake/modules/FindSinsp.cmake
@@ -0,0 +1,128 @@
+#
+# - Find libsinsp
+# Find libsinsp and libscap includes and libraries
+# Adapted from FindZSTD.cmake.
+#
+# SINSP_INCLUDE_DIRS - where to find sinsp.h, scap.h, etc.
+# SINSP_LIBRARIES - List of libraries when using libsinsp.
+# SINSP_FOUND - True if libsinsp found.
+# SINSP_DLL_DIR - (Windows) Path to the libsinsp and libscap DLLs
+# SINSP_DLL - (Windows) Name of the libsinsp and libscap DLLs
+
+include( FindWSWinLibs )
+FindWSWinLibs( "libsinsp-.*" "SINSP_HINTS" )
+
+if( NOT WIN32)
+ find_package(PkgConfig)
+ pkg_search_module(Sinsp libsinsp)
+endif()
+
+find_path(SINSP_INCLUDE_DIR
+ NAMES sinsp.h
+ HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include"
+ PATH_SUFFIXES userspace/libsinsp
+ /usr/include
+ /usr/local/include
+)
+
+find_path(SCAP_INCLUDE_DIR
+ NAMES scap.h
+ HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include"
+ PATH_SUFFIXES userspace/libscap
+ /usr/include
+ /usr/local/include
+)
+
+find_library(SINSP_LIBRARY
+ NAMES sinsp
+ HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib"
+ PATH_SUFFIXES libsinsp
+ PATHS
+ /usr/lib
+ /usr/local/lib
+)
+
+find_library(SCAP_LIBRARY
+ NAMES scap
+ HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib"
+ PATH_SUFFIXES libscap
+ PATHS
+ /usr/lib
+ /usr/local/lib
+)
+
+find_path(JSON_INCLUDE_DIR
+ NAMES json/json.h
+ HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include"
+ /usr/include
+ /usr/local/include
+)
+
+find_library(JSONCPP_LIBRARY
+ NAMES jsoncpp
+ HINTS "${SINSP_LIBDIR}" "${SCAP_HINTS}/lib"
+ PATHS
+ /usr/lib
+ /usr/local/lib
+)
+
+find_path(TBB_INCLUDE_DIR
+ NAMES tbb/tbb.h
+ HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include"
+ /usr/include
+ /usr/local/include
+)
+
+find_library(TBB_LIBRARY
+ NAMES tbb
+ HINTS "${SINSP_LIBDIR}" "${SCAP_HINTS}/lib"
+ PATHS
+ /usr/lib
+ /usr/local/lib
+)
+
+# if( SINSP_INCLUDE_DIR AND SCAP_INCLUDE_DIR AND SINSP_LIBRARY AND SCAP_LIBRARY )
+# file(STRINGS ${SINSP_INCLUDE_DIR}/sinsp.h SINSP_VERSION_MAJOR
+# REGEX "#define[ ]+SINSP_VERSION_MAJOR[ ]+[0-9]+")
+# string(REGEX MATCH "[0-9]+" SINSP_VERSION_MAJOR ${SINSP_VERSION_MAJOR})
+# file(STRINGS ${SINSP_INCLUDE_DIR}/sinsp.h SINSP_VERSION_MINOR
+# REGEX "#define[ ]+SINSP_VERSION_MINOR[ ]+[0-9]+")
+# string(REGEX MATCH "[0-9]+" SINSP_VERSION_MINOR ${SINSP_VERSION_MINOR})
+# file(STRINGS ${SINSP_INCLUDE_DIR}/sinsp.h SINSP_VERSION_RELEASE
+# REGEX "#define[ ]+SINSP_VERSION_RELEASE[ ]+[0-9]+")
+# string(REGEX MATCH "[0-9]+" SINSP_VERSION_RELEASE ${SINSP_VERSION_RELEASE})
+# set(SINSP_VERSION ${SINSP_VERSION_MAJOR}.${SINSP_VERSION_MINOR}.${SINSP_VERSION_RELEASE})
+# endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Sinsp
+ REQUIRED_VARS
+ SINSP_LIBRARY SINSP_INCLUDE_DIR
+ SCAP_LIBRARY SCAP_INCLUDE_DIR
+ JSONCPP_LIBRARY JSON_INCLUDE_DIR
+ TBB_LIBRARY TBB_INCLUDE_DIR
+# VERSION_VAR SINSP_VERSION
+)
+
+if( SINSP_FOUND )
+ set( SINSP_INCLUDE_DIRS ${SINSP_INCLUDE_DIR} ${SCAP_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${TBB_INCLUDE_DIR} )
+ set( SINSP_LIBRARIES ${SINSP_LIBRARY} ${SCAP_LIBRARY} ${JSONCPP_LIBRARY} ${TBB_LIBRARY} )
+# if (WIN32)
+# set ( SINSP_DLL_DIR "${SINSP_HINTS}/bin"
+# CACHE PATH "Path to sinsp DLL"
+# )
+# file( GLOB _SINSP_dll RELATIVE "${SINSP_DLL_DIR}"
+# "${SINSP_DLL_DIR}/sinsp*.dll"
+# )
+# set ( SINSP_DLL ${_SINSP_dll}
+# # We're storing filenames only. Should we use STRING instead?
+# CACHE FILEPATH "sinsp DLL file name"
+# )
+# mark_as_advanced( SINSP_DLL_DIR SINSP_DLL )
+# endif()
+else()
+ set( SINSP_INCLUDE_DIRS )
+ set( SINSP_LIBRARIES )
+endif()
+
+mark_as_advanced( SINSP_LIBRARIES SINSP_INCLUDE_DIRS )