cmake_minimum_required(VERSION 3.15.0 FATAL_ERROR) project(BifCl C CXX) include(cmake/CommonCMakeConfig.cmake) find_package(BISON REQUIRED) find_package(FLEX REQUIRED) if (MSVC) add_compile_options(/J) # Similar to -funsigned-char on other platforms set_property(SOURCE bif_lex.cc APPEND_STRING PROPERTY COMPILE_FLAGS "/wd4018") else () set_property(SOURCE bif_lex.cc APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-sign-compare") endif () include_directories(BEFORE ${BifCl_SOURCE_DIR}/include ${BifCl_BINARY_DIR}) set(BISON_FLAGS "--debug") # BIF parser/scanner bison_target(BIFParser builtin-func.y ${BifCl_BINARY_DIR}/bif_parse.cc DEFINES_FILE ${BifCl_BINARY_DIR}/bif_parse.h COMPILE_FLAGS "${BISON_FLAGS}") flex_target(BIFScanner builtin-func.l ${BifCl_BINARY_DIR}/bif_lex.cc) add_flex_bison_dependency(BIFScanner BIFParser) set(bifcl_SRCS ${BISON_BIFParser_INPUT} ${FLEX_BIFScanner_INPUT} ${BISON_BIFParser_OUTPUTS} ${FLEX_BIFScanner_OUTPUTS} bif_arg.cc include/bif_arg.h module_util.cc include/module_util.h) add_executable(bifcl ${bifcl_SRCS}) target_compile_features(bifcl PRIVATE cxx_std_17) set_target_properties(bifcl PROPERTIES CXX_EXTENSIONS OFF) if (MSVC) # If building separately from zeek, we need to add the libunistd subdirectory # so that linking doesn't fail. if ("${CMAKE_PROJECT_NAME}" STREQUAL "BifCl") add_subdirectory(auxil/libunistd EXCLUDE_FROM_ALL) endif () target_link_libraries(bifcl PRIVATE libunistd) endif () install(TARGETS bifcl DESTINATION bin) if (CMAKE_BUILD_TYPE) string(TOUPPER ${CMAKE_BUILD_TYPE} BuildType) endif () message( "\n====================| Bifcl Build Summary |=====================" "\n" "\nBuild type: ${CMAKE_BUILD_TYPE}" "\nBuild dir: ${PROJECT_BINARY_DIR}" "\nInstall prefix: ${CMAKE_INSTALL_PREFIX}" "\nDebug mode: ${ENABLE_DEBUG}" "\n" "\nCC: ${CMAKE_C_COMPILER}" "\nCFLAGS: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BuildType}}" "\nCXX: ${CMAKE_CXX_COMPILER}" "\nCXXFLAGS: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BuildType}}" "\nCPP: ${CMAKE_CXX_COMPILER}" "\n" "\n================================================================\n") include(UserChangedWarning)