156 lines
6.0 KiB
Diff
156 lines
6.0 KiB
Diff
libsinsp: Refine pkg-config file generation.
|
|
Upstream status: https://github.com/falcosecurity/libs/pull/1842
|
|
|
|
diff --git a/userspace/libscap/libscap.pc.in b/userspace/libscap/libscap.pc.in
|
|
index c5948489f..829bcd19b 100644
|
|
--- a/userspace/libscap/libscap.pc.in
|
|
+++ b/userspace/libscap/libscap.pc.in
|
|
@@ -1,4 +1,4 @@
|
|
-prefix=${pcfiledir}/../..
|
|
+prefix=@CMAKE_INSTALL_PREFIX@
|
|
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
|
|
|
@@ -6,5 +6,6 @@ Name: libscap
|
|
Description: lib for System CAPture
|
|
Version: @FALCOSECURITY_LIBS_VERSION@
|
|
|
|
-Libs: -L${libdir} @LIBSCAP_LINK_LIBDIRS_FLAGS@ @LIBSCAP_LINK_LIBRARIES_FLAGS@
|
|
+Requires: zlib
|
|
+Libs: -L${libdir} -L{libdir}/@LIBS_PACKAGE_NAME@/libscap @LIBSCAP_LINK_LIBDIRS_FLAGS@ @LIBSCAP_LINK_LIBRARIES_FLAGS@
|
|
Cflags: -I${includedir}/@LIBS_PACKAGE_NAME@/libscap -I${includedir}/@LIBS_PACKAGE_NAME@/driver -I${includedir}/@LIBS_PACKAGE_NAME@ -I@UTHASH_INCLUDE@
|
|
diff --git a/userspace/libsinsp/CMakeLists.txt b/userspace/libsinsp/CMakeLists.txt
|
|
index 6104603e8..832f86067 100644
|
|
--- a/userspace/libsinsp/CMakeLists.txt
|
|
+++ b/userspace/libsinsp/CMakeLists.txt
|
|
@@ -169,13 +169,9 @@ target_link_libraries(sinsp
|
|
"${RE2_LIB}"
|
|
)
|
|
|
|
-set(SINSP_PKGCONFIG_LIBRARIES
|
|
- scap
|
|
- "${ZLIB_LIB}"
|
|
- "${CURL_LIBRARIES}"
|
|
- "${JSONCPP_LIB}"
|
|
- "${RE2_LIB}"
|
|
-)
|
|
+set(SINSP_PKGCONFIG_LIBRARIES)
|
|
+set(SINSP_PKGCONFIG_REQUIRES jsoncpp)
|
|
+set(SINSP_PKGCONFIG_REQUIRES_PRIVATE libcurl re2)
|
|
|
|
if(NOT EMSCRIPTEN)
|
|
target_link_libraries(sinsp
|
|
@@ -184,7 +180,8 @@ if(NOT EMSCRIPTEN)
|
|
PRIVATE
|
|
"${TBB_LIB}"
|
|
)
|
|
- list(APPEND SINSP_PKGCONFIG_LIBRARIES "${CARES_LIB}")
|
|
+ list(APPEND SINSP_PKGCONFIG_REQUIRES libcares)
|
|
+ list(APPEND SINSP_PKGCONFIG_REQUIRES_PRIVATE tbb)
|
|
endif()
|
|
|
|
if(USE_BUNDLED_VALIJSON)
|
|
@@ -248,14 +245,12 @@ if(NOT WIN32)
|
|
"${PROTOBUF_LIB}"
|
|
"${CARES_LIB}"
|
|
)
|
|
- list(APPEND SINSP_PKGCONFIG_LIBRARIES
|
|
- "${GRPC_LIBRARIES}"
|
|
- "${GRPCPP_LIB}"
|
|
- "${GRPC_LIB}"
|
|
- "${GPR_LIB}"
|
|
- "${PROTOBUF_LIB}"
|
|
- "${CARES_LIB}"
|
|
- )
|
|
+ list(APPEND SINSP_PKGCONFIG_REQUIRES
|
|
+ gpr
|
|
+ grpc
|
|
+ grpc++
|
|
+ protobuf
|
|
+ libcares)
|
|
|
|
if(NOT MUSL_OPTIMIZED_BUILD)
|
|
target_link_libraries(sinsp INTERFACE rt anl)
|
|
@@ -269,7 +264,7 @@ if(NOT WIN32)
|
|
endif() # NOT APPLE
|
|
|
|
target_link_libraries(sinsp INTERFACE "${OPENSSL_LIBRARIES}")
|
|
- list(APPEND SINSP_PKGCONFIG_LIBRARIES "${OPENSSL_LIBRARIES}")
|
|
+ list(APPEND SINSP_PKGCONFIG_REQUIRES libcrypto libssl)
|
|
|
|
target_link_libraries(sinsp INTERFACE dl pthread)
|
|
list(APPEND SINSP_PKGCONFIG_LIBRARIES dl pthread)
|
|
@@ -306,41 +301,17 @@ if(NOT DEFINED SINSP_AGENT_CGROUP_MEM_PATH_ENV_VAR)
|
|
endif()
|
|
add_definitions(-DSINSP_AGENT_CGROUP_MEM_PATH_ENV_VAR="${SINSP_AGENT_CGROUP_MEM_PATH_ENV_VAR}")
|
|
|
|
-# Build our pkg-config "Libs:" flags. For now, loop over SINSP_PKGCONFIG_LIBRARIES. If
|
|
-# we ever start using pkg_search_module or pkg_check_modules in cmake/modules
|
|
-# we could add each module to our "Requires:" line instead. We might need to
|
|
-# expand this to use some of the techniques in
|
|
-# https://github.com/curl/curl/blob/curl-7_84_0/CMakeLists.txt#L1539
|
|
-set(SINSP_PKG_CONFIG_LIBS)
|
|
-set(SINSP_PKG_CONFIG_LIBDIRS "")
|
|
-foreach(sinsp_lib ${SINSP_PKGCONFIG_LIBRARIES})
|
|
- if(${sinsp_lib} MATCHES "^-")
|
|
- # We have a flag. Pass it through unchanged.
|
|
- list(APPEND SINSP_PKG_CONFIG_LIBS ${sinsp_lib})
|
|
- elseif(${sinsp_lib} MATCHES "/")
|
|
- # We have a path. Convert it to -L<dir> + -l<lib>.
|
|
- get_filename_component(sinsp_lib_dir ${sinsp_lib} DIRECTORY)
|
|
- list(APPEND SINSP_PKG_CONFIG_LIBDIRS -L${sinsp_lib_dir})
|
|
- get_filename_component(sinsp_lib_base ${sinsp_lib} NAME_WE)
|
|
- string(REGEX REPLACE "^lib" "" sinsp_lib_base ${sinsp_lib_base})
|
|
- list(APPEND SINSP_PKG_CONFIG_LIBS -l${sinsp_lib_base})
|
|
- elseif(${sinsp_lib} STREQUAL "scap")
|
|
- # We require libscap.pc, so skip it.
|
|
- else()
|
|
- # Assume we have a plain library name. Prefix it with "-l".
|
|
- list(APPEND SINSP_PKG_CONFIG_LIBS -l${sinsp_lib})
|
|
- endif()
|
|
-endforeach()
|
|
+list(REMOVE_DUPLICATES SINSP_PKGCONFIG_LIBRARIES)
|
|
+list(REMOVE_DUPLICATES SINSP_PKGCONFIG_REQUIRES)
|
|
+list(REMOVE_DUPLICATES SINSP_PKGCONFIG_REQUIRES_PRIVATE)
|
|
|
|
-# Build our pkg-config "Cflags:" flags.
|
|
-set(SINSP_PKG_CONFIG_INCLUDES "")
|
|
-foreach(sinsp_include_directory ${LIBSINSP_INCLUDE_DIRS})
|
|
- list(APPEND SINSP_PKG_CONFIG_INCLUDES -I${sinsp_include_directory})
|
|
+set(SINSP_LINK_FLAGS)
|
|
+foreach(sinsp_link_library ${SINSP_PKGCONFIG_LIBRARIES})
|
|
+ list(APPEND SINSP_LINK_FLAGS "-l${sinsp_link_library}")
|
|
endforeach()
|
|
|
|
-string(REPLACE ";" " " SINSP_PKG_CONFIG_LIBS "${SINSP_PKG_CONFIG_LIBS}")
|
|
-list(REMOVE_DUPLICATES SINSP_PKG_CONFIG_LIBDIRS)
|
|
-string(REPLACE ";" " " SINSP_PKG_CONFIG_LIBDIRS "${SINSP_PKG_CONFIG_LIBDIRS}")
|
|
-list(REMOVE_DUPLICATES SINSP_PKG_CONFIG_INCLUDES)
|
|
-string(REPLACE ";" " " SINSP_PKG_CONFIG_INCLUDES "${SINSP_PKG_CONFIG_INCLUDES}")
|
|
+string(REPLACE ";" " " LIBSINSP_LINK_FLAGS "${SINSP_LINK_FLAGS}")
|
|
+string(REPLACE ";" " " LIBSINSP_REQUIRES "${SINSP_PKGCONFIG_REQUIRES}")
|
|
+string(REPLACE ";" " " LIBSINSP_REQUIRES_PRIVATE "${SINSP_PKGCONFIG_REQUIRES_PRIVATE}")
|
|
+
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libsinsp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libsinsp.pc @ONLY)
|
|
diff --git a/userspace/libsinsp/libsinsp.pc.in b/userspace/libsinsp/libsinsp.pc.in
|
|
index 9292e73ce..f20da76b3 100644
|
|
--- a/userspace/libsinsp/libsinsp.pc.in
|
|
+++ b/userspace/libsinsp/libsinsp.pc.in
|
|
@@ -1,4 +1,4 @@
|
|
-prefix=${pcfiledir}/../..
|
|
+prefix=@CMAKE_INSTALL_PREFIX@
|
|
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
|
|
|
@@ -6,6 +6,7 @@ Name: libsinsp
|
|
Description: lib for System INSPection
|
|
Version: @FALCOSECURITY_LIBS_VERSION@
|
|
|
|
-Requires: libscap
|
|
-Libs: -L${libdir} -lsinsp @SINSP_PKG_CONFIG_LIBDIRS@ @SINSP_PKG_CONFIG_LIBS@
|
|
-Cflags: -I${includedir}/@LIBS_PACKAGE_NAME@/libsinsp -I${includedir}/@LIBS_PACKAGE_NAME@/driver -I${includedir}/@LIBS_PACKAGE_NAME@ @SINSP_PKG_CONFIG_INCLUDES@
|
|
+Requires: libscap @LIBSINSP_REQUIRES@
|
|
+Requires.private: @LIBSINSP_REQUIRES_PRIVATE@
|
|
+Libs: -L${libdir} -lsinsp @LIBSINSP_LINK_FLAGS@
|
|
+Cflags: -I${includedir}/@LIBS_PACKAGE_NAME@/libsinsp -I${includedir}/@LIBS_PACKAGE_NAME@/driver -I${includedir}/@LIBS_PACKAGE_NAME@
|