diff --git a/cmake/modules/libscap.cmake b/cmake/modules/libscap.cmake
index 81ad2d28df..8b6b4197e0 100644
--- a/cmake/modules/libscap.cmake
+++ b/cmake/modules/libscap.cmake
@@ -95,7 +95,7 @@ foreach(libscap_install_lib ${LIBSCAP_INSTALL_LIBS})
list(APPEND libscap_link_libraries ${libscap_install_lib})
get_target_property(install_lib_link_libraries ${libscap_install_lib} LINK_LIBRARIES)
foreach (install_lib_link_library ${install_lib_link_libraries})
- if (NOT ${install_lib_link_library} IN_LIST libscap_subdir_targets)
+ if (${install_lib_link_library} AND (NOT ${install_lib_link_library} IN_LIST libscap_subdir_targets))
if(${install_lib_link_library} MATCHES "/")
# We have a path. Convert it to -L
+ -l.
get_filename_component(scap_lib_dir ${install_lib_link_library} DIRECTORY)
diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt
index 80229cc034..70c9ba65b6 100644
--- a/driver/CMakeLists.txt
+++ b/driver/CMakeLists.txt
@@ -152,6 +152,11 @@ set(DRIVER_SOURCES
ppm_consumer.h
capture_macro.h
socketcall_to_syscall.h
+ syscall_compat_loongarch64.h
+ syscall_compat_ppc64le.h
+ syscall_compat_riscv64.h
+ syscall_compat_s390x.h
+ syscall_compat_x86_64.h
syscall_ia32_64_map.c
)
diff --git a/test/libscap/CMakeLists.txt b/test/libscap/CMakeLists.txt
index e88603ebd0..fa26ba7ee4 100644
--- a/test/libscap/CMakeLists.txt
+++ b/test/libscap/CMakeLists.txt
@@ -45,6 +45,7 @@ set(LIBSCAP_TESTS_LIBRARIES
"${GTEST_LIB}"
"${GTEST_MAIN_LIB}"
"${CMAKE_THREAD_LIBS_INIT}"
+ "${PROTOBUF_LIB}"
scap
)
diff --git a/userspace/libpman/CMakeLists.txt b/userspace/libpman/CMakeLists.txt
index da92e9f275..4b57365feb 100644
--- a/userspace/libpman/CMakeLists.txt
+++ b/userspace/libpman/CMakeLists.txt
@@ -58,3 +58,6 @@ endif()
if(USE_BUNDLED_LIBBPF)
add_dependencies(pman libbpf)
endif()
+
+install(TARGETS pman LIBRARY ARCHIVE FRAMEWORK)
+install(FILES include/libpman.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
diff --git a/userspace/libscap/engine/gvisor/CMakeLists.txt b/userspace/libscap/engine/gvisor/CMakeLists.txt
index 6dfbafb146..875847b5da 100644
--- a/userspace/libscap/engine/gvisor/CMakeLists.txt
+++ b/userspace/libscap/engine/gvisor/CMakeLists.txt
@@ -76,6 +76,14 @@ if (BUILD_SHARED_LIBS)
add_dependencies(scap_engine_gvisor_o uthash)
add_dependencies(scap scap_engine_gvisor_o)
target_sources(scap PRIVATE $)
+
+ target_include_directories(scap_engine_gvisor_o
+ PRIVATE
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/userspace
+ )
else()
add_library(scap_engine_gvisor
${scap_engine_gvisor_sources}
diff --git a/userspace/libscap/libscap.pc.in b/userspace/libscap/libscap.pc.in
index 40b6e96ed8..829bcd19b7 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@
-Cflags: -I${includedir}/@LIBS_PACKAGE_NAME@/libscap
+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 5d9ebacd9b..4d31931130 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 + -l.
- 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 c1cc4a1e2a..f20da76b39 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 @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@