diff --git a/cmake/modules/falcosecurity-libs.cmake b/cmake/modules/falcosecurity-libs.cmake index e817922fbe8..1c1b6f56491 100644 --- a/cmake/modules/falcosecurity-libs.cmake +++ b/cmake/modules/falcosecurity-libs.cmake @@ -86,6 +86,7 @@ set(BUILD_LIBSCAP_EXAMPLES OFF CACHE BOOL "") set(USE_BUNDLED_TBB ON CACHE BOOL "") set(USE_BUNDLED_B64 ON CACHE BOOL "") set(USE_BUNDLED_JSONCPP ON CACHE BOOL "") +set(USE_BUNDLED_NLOHMANN_JSON ON CACHE BOOL "") set(USE_BUNDLED_VALIJSON ON CACHE BOOL "") set(USE_BUNDLED_RE2 ON CACHE BOOL "") set(USE_BUNDLED_UTHASH ON CACHE BOOL "") diff --git a/cmake/modules/njson.cmake b/cmake/modules/njson.cmake index f4b3c79f985..7d27bddf60d 100644 --- a/cmake/modules/njson.cmake +++ b/cmake/modules/njson.cmake @@ -12,24 +12,10 @@ # specific language governing permissions and limitations under the License. # -# -# nlohmann-json -# -if(NJSON_INCLUDE) - # Adding the custom target we can use it with `add_dependencies()` - if(NOT TARGET njson) - add_custom_target(njson) - endif() -else() - # We always use the bundled version - set(NJSON_SRC "${PROJECT_BINARY_DIR}/njson-prefix/src/njson") - set(NJSON_INCLUDE "${NJSON_SRC}/single_include") - ExternalProject_Add( - njson +if(USE_BUNDLED_NLOHMANN_JSON) + ExternalProject_Add(njson URL "https://github.com/nlohmann/json/archive/v3.3.0.tar.gz" URL_HASH "SHA256=2fd1d207b4669a7843296c41d3b6ac5b23d00dec48dba507ba051d14564aa801" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "") - message(STATUS "Using bundled nlohmann-json in '${NJSON_SRC}'") + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DJSON_BuildTests=OFF -DBUILD_TESTING=OFF + ) endif() diff --git a/userspace/engine/CMakeLists.txt b/userspace/engine/CMakeLists.txt index bfe91c40e13..24befc2cbed 100644 --- a/userspace/engine/CMakeLists.txt +++ b/userspace/engine/CMakeLists.txt @@ -11,7 +11,9 @@ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the # specific language governing permissions and limitations under the License. -set(FALCO_ENGINE_SOURCE_FILES +find_package(nlohmann_json CONFIG REQUIRED) + +add_library(falco_engine STATIC falco_common.cpp falco_engine.cpp falco_load_result.cpp @@ -25,24 +27,26 @@ set(FALCO_ENGINE_SOURCE_FILES rule_loader.cpp rule_loader_reader.cpp rule_loader_collector.cpp - rule_loader_compiler.cpp) - -add_library(falco_engine STATIC ${FALCO_ENGINE_SOURCE_FILES}) + rule_loader_compiler.cpp +) if (EMSCRIPTEN) target_compile_options(falco_engine PRIVATE "-sDISABLE_EXCEPTION_CATCHING=0") endif() -add_dependencies(falco_engine yamlcpp njson) +add_dependencies(falco_engine yamlcpp) -target_include_directories( - falco_engine - PUBLIC - "${NJSON_INCLUDE}" - "${TBB_INCLUDE_DIR}" - "${LIBSCAP_INCLUDE_DIRS}" - "${LIBSINSP_INCLUDE_DIRS}" - "${YAMLCPP_INCLUDE_DIR}" - "${PROJECT_BINARY_DIR}/userspace/engine") +target_include_directories(falco_engine +PUBLIC + ${LIBSCAP_INCLUDE_DIRS} + ${LIBSINSP_INCLUDE_DIRS} + ${PROJECT_BINARY_DIR}/userspace/engine + ${TBB_INCLUDE_DIR} + ${YAMLCPP_INCLUDE_DIR} +) -target_link_libraries(falco_engine "${FALCO_SINSP_LIBRARY}" "${YAMLCPP_LIB}") +target_link_libraries(falco_engine + nlohmann_json::nlohmann_json + ${FALCO_SINSP_LIBRARY} + ${YAMLCPP_LIB} +)