Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(cmake): fixed shared libs and pkg config files #1842

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmake/modules/libscap.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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<dir> + -l<lib>.
get_filename_component(scap_lib_dir ${install_lib_link_library} DIRECTORY)
Expand Down
5 changes: 5 additions & 0 deletions driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand Down
1 change: 1 addition & 0 deletions test/libscap/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ set(LIBSCAP_TESTS_LIBRARIES
"${GTEST_LIB}"
"${GTEST_MAIN_LIB}"
"${CMAKE_THREAD_LIBS_INIT}"
"${PROTOBUF_LIB}"
scap
)

Expand Down
3 changes: 3 additions & 0 deletions userspace/libpman/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
8 changes: 8 additions & 0 deletions userspace/libscap/engine/gvisor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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_OBJECTS:scap_engine_gvisor_o>)

target_include_directories(scap_engine_gvisor_o
PRIVATE
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/userspace
)
Apteryks marked this conversation as resolved.
Show resolved Hide resolved
else()
add_library(scap_engine_gvisor
${scap_engine_gvisor_sources}
Expand Down
7 changes: 4 additions & 3 deletions userspace/libscap/libscap.pc.in
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
prefix=${pcfiledir}/../..
prefix=@CMAKE_INSTALL_PREFIX@
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@

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@
73 changes: 22 additions & 51 deletions userspace/libsinsp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
9 changes: 5 additions & 4 deletions userspace/libsinsp/libsinsp.pc.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
prefix=${pcfiledir}/../..
prefix=@CMAKE_INSTALL_PREFIX@
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@

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@
Loading