Falco Bridge: Fix building on Windows.

Fix Falco plugin installation in multi-config environments. Fix FindSinsp
on Windows.  Ignore a couple of warnings for now.
This commit is contained in:
Gerald Combs 2022-04-27 14:16:58 -07:00
parent 0f695875ac
commit 52db7e88bc
3 changed files with 32 additions and 11 deletions

View File

@ -2700,11 +2700,10 @@ if(BUILD_logwolf AND QT_FOUND)
endif() endif()
if (BUILD_logwolf AND SINSP_FOUND) if (BUILD_logwolf AND SINSP_FOUND)
file(MAKE_DIRECTORY ${LOGWOLF_PLUGIN_DIR}/falco)
add_custom_target(copy_falco_plugins) add_custom_target(copy_falco_plugins)
add_custom_command(TARGET copy_falco_plugins add_custom_command(TARGET copy_falco_plugins
COMMAND ${CMAKE_COMMAND} -E copy_if_different COMMAND ${CMAKE_COMMAND} -E make_directory ${LOGWOLF_PLUGIN_DIR}/falco
${SINSP_PLUGINS} ${LOGWOLF_PLUGIN_DIR}/falco COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SINSP_PLUGINS} ${LOGWOLF_PLUGIN_DIR}/falco
) )
add_dependencies(logwolf copy_falco_plugins) add_dependencies(logwolf copy_falco_plugins)
endif() endif()

View File

@ -39,10 +39,13 @@ find_path(SINSP_PLUGIN_DIR
HINTS "${SINSP_PLUGINDIR}" HINTS "${SINSP_PLUGINDIR}"
) )
# https://github.com/falcosecurity/libs doesn't yet have any official releases
# or tags. Add RelWithDebInfo to our sinsp and scap path suffixes so that we
# can find what we need in a local build.
find_library(SINSP_LIBRARY find_library(SINSP_LIBRARY
NAMES sinsp NAMES sinsp
HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib" HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib"
PATH_SUFFIXES libsinsp PATH_SUFFIXES libsinsp libsinsp/RelWithDebInfo
PATHS PATHS
/usr/lib /usr/lib
/usr/local/lib /usr/local/lib
@ -51,7 +54,7 @@ find_library(SINSP_LIBRARY
find_library(SCAP_LIBRARY find_library(SCAP_LIBRARY
NAMES scap NAMES scap
HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib" HINTS "${SINSP_LIBDIR}" "${SINSP_HINTS}/lib"
PATH_SUFFIXES libscap PATH_SUFFIXES libscap libscap/RelWithDebInfo
PATHS PATHS
/usr/lib /usr/lib
/usr/local/lib /usr/local/lib
@ -60,6 +63,7 @@ find_library(SCAP_LIBRARY
find_path(JSON_INCLUDE_DIR find_path(JSON_INCLUDE_DIR
NAMES json/json.h NAMES json/json.h
HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include" HINTS "${SINSP_INCLUDEDIR}" "${SINSP_HINTS}/include"
PATH_SUFFIXES userspace/libsinsp/third-party/jsoncpp
/usr/include /usr/include
/usr/include/jsoncpp /usr/include/jsoncpp
/usr/local/include /usr/local/include
@ -106,19 +110,27 @@ find_package_handle_standard_args(Sinsp
REQUIRED_VARS REQUIRED_VARS
SINSP_LIBRARY SINSP_INCLUDE_DIR SINSP_LIBRARY SINSP_INCLUDE_DIR
SCAP_LIBRARY SCAP_INCLUDE_DIR SCAP_LIBRARY SCAP_INCLUDE_DIR
JSONCPP_LIBRARY JSON_INCLUDE_DIR JSON_INCLUDE_DIR
TBB_LIBRARY TBB_INCLUDE_DIR
SINSP_PLUGIN_DIR SINSP_PLUGIN_DIR
# VERSION_VAR SINSP_VERSION # VERSION_VAR SINSP_VERSION
) )
if( SINSP_FOUND ) if( SINSP_FOUND )
set( SINSP_INCLUDE_DIRS ${SINSP_INCLUDE_DIR} ${SCAP_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${TBB_INCLUDE_DIR} ) set(SINSP_INCLUDE_DIRS ${SINSP_INCLUDE_DIR} ${SCAP_INCLUDE_DIR} ${JSON_INCLUDE_DIR})
set( SINSP_LIBRARIES ${SINSP_LIBRARY} ${SCAP_LIBRARY} ${JSONCPP_LIBRARY} ${TBB_LIBRARY} ) if(TBB_INCLUDE_DIR)
list(APPEND SINSP_INCLUDE_DIRS ${TBB_INCLUDE_DIR})
endif()
set(SINSP_LIBRARIES ${SINSP_LIBRARY} ${SCAP_LIBRARY})
if (JSONCPP_LIBRARY)
list(APPEND SINSP_LIBRARIES ${JSONCPP_LIBRARY})
endif()
if (TBB_LIBRARY)
list(APPEND SINSP_LIBRARIES ${TBB_LIBRARY})
endif()
if (WIN32) if (WIN32)
set( SINSP_PLUGINS ${SINSP_PLUGIN_DIR}/plugins/cloudtrail/cloudtrail.dll ) set(SINSP_PLUGINS ${SINSP_PLUGIN_DIR}/plugins/cloudtrail/cloudtrail.dll)
else() else()
set( SINSP_PLUGINS ${SINSP_PLUGIN_DIR}/plugins/cloudtrail/libcloudtrail.so ) set(SINSP_PLUGINS ${SINSP_PLUGIN_DIR}/plugins/cloudtrail/libcloudtrail.so)
endif() endif()
# if (WIN32) # if (WIN32)
# set ( SINSP_DLL_DIR "${SINSP_HINTS}/bin" # set ( SINSP_DLL_DIR "${SINSP_HINTS}/bin"

View File

@ -17,6 +17,12 @@
#include <glib.h> #include <glib.h>
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable:4100)
#pragma warning(disable:4267)
#endif
// epan/address.h and driver/ppm_events_public.h both define PT_NONE, so // epan/address.h and driver/ppm_events_public.h both define PT_NONE, so
// handle libsinsp calls here. // handle libsinsp calls here.
@ -197,3 +203,7 @@ bool extract_sisnp_source_fields(sinsp_source_info_t *ssi, uint32_t evt_num, uin
} }
return status; return status;
} }
#ifdef _MSC_VER
#pragma warning(pop)
#endif