diff --git a/BuiltInSpicyAnalyzer.cmake b/BuiltInSpicyAnalyzer.cmake index 7d69d6e..b8a934b 100644 --- a/BuiltInSpicyAnalyzer.cmake +++ b/BuiltInSpicyAnalyzer.cmake @@ -96,10 +96,28 @@ function (spicy_add_analyzer) target_compile_features(${lib} PRIVATE ${ZEEK_CXX_STD}) set_target_properties(${lib} PROPERTIES CXX_EXTENSIONS OFF) + if (MSVC) + target_compile_options(${lib} PRIVATE /bigobj /wd4716) + endif () + target_include_directories(${lib} PRIVATE ${SPICY_PLUGIN_PATH}/include ${SPICY_PLUGIN_BINARY_PATH}/include) target_compile_definitions(${lib} PRIVATE HILTI_MANUAL_PREINIT) - target_link_libraries(${lib} hilti spicy $) + + if (SPICY_ROOT_DIR) + target_link_libraries(${lib} PRIVATE hilti spicy $) + else () + target_link_libraries(${lib} PRIVATE $) + + if (BINARY_PACKAGING_MODE) + hilti_link_object_libraries_in_tree(${lib} PRIVATE) + spicy_link_object_libraries_in_tree(${lib} PRIVATE) + else () + hilti_link_libraries_in_tree(${lib} PRIVATE) + spicy_link_libraries_in_tree(${lib} PRIVATE) + endif () + endif () + prefer_configured_spicy_include_dirs(${lib}) # Feed into the main Zeek target(s). diff --git a/ConfigureSpicyBuild.cmake b/ConfigureSpicyBuild.cmake index fb58c93..3f81324 100644 --- a/ConfigureSpicyBuild.cmake +++ b/ConfigureSpicyBuild.cmake @@ -23,13 +23,18 @@ set(_spicy_targets spicy-dump) include(CheckCXXCompilerFlag) -check_cxx_compiler_flag("-Wno-changes-meaning" _has_no_changes_meaning_flag) +if (NOT MSVC) + check_cxx_compiler_flag("-Wno-changes-meaning" _has_no_changes_meaning_flag) +endif () foreach (_target ${_spicy_targets}) # Spicy uses slightly less strict warnings than Zeek proper. Mute a few # warnings for Spicy. - target_compile_options(${_target} PRIVATE -Wno-missing-braces -Wno-vla) - if (_has_no_changes_meaning_flag) + if (NOT MSVC) + target_compile_options(${_target} PRIVATE -Wno-missing-braces -Wno-vla) + endif () + + if (NOT MSVC AND _has_no_changes_meaning_flag) # GCC 13 adds a new flag to check whether a symbol changes meaning. Due # to an issue in one of the dependencies used by Spicy, this causes # Zeek to fail to build on that compiler. Until this is fixed, ignore