72 lines
2.3 KiB
CMake
72 lines
2.3 KiB
CMake
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)
|