diff --git a/tools/binpac/CMakeLists.txt b/tools/binpac/CMakeLists.txt index 92d9abc0f8..5076cfa68e 100644 --- a/tools/binpac/CMakeLists.txt +++ b/tools/binpac/CMakeLists.txt @@ -14,49 +14,48 @@ set(BINPAC_SOVERSION 0) set(ENABLE_SHARED true) -if ( ENABLE_STATIC_ONLY ) +if(ENABLE_STATIC_ONLY) set(ENABLE_STATIC true) set(ENABLE_SHARED false) -endif () +endif() # Set default install paths include(GNUInstallDirs) -######################################################################## -## Dependency Configuration +# ############################################################################## +# Dependency Configuration find_package(FLEX REQUIRED) find_package(BISON REQUIRED) -if (MSVC) +if(MSVC) add_compile_options(/J) # Similar to -funsigned-char on other platforms endif() -######################################################################## -## System Introspection +# ############################################################################## +# System Introspection -configure_file(${PROJECT_SOURCE_DIR}/config.h.in - ${PROJECT_BINARY_DIR}/config.h) +configure_file(${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h) include_directories(BEFORE ${PROJECT_BINARY_DIR}) -######################################################################## -## Recurse on sub-directories +# ############################################################################## +# Recurse on sub-directories add_subdirectory(lib) add_subdirectory(src) -######################################################################## -## Build Summary +# ############################################################################## +# Build Summary -if (CMAKE_BUILD_TYPE) - string(TOUPPER ${CMAKE_BUILD_TYPE} BuildType) -endif () +if(CMAKE_BUILD_TYPE) + string(TOUPPER ${CMAKE_BUILD_TYPE} BuildType) +endif() macro(display test desc summary) - if ( ${test} ) + if(${test}) set(${summary} ${desc}) - else () + else() set(${summary} no) endif() endmacro() @@ -65,23 +64,22 @@ display(ENABLE_SHARED yes shared_summary) display(ENABLE_STATIC yes static_summary) message( - "\n==================| BinPAC Build Summary |====================" - "\nVersion: ${BINPAC_VERSION}" - "\nSO version: ${BINPAC_SOVERSION}" - "\n" - "\nBuild Type: ${CMAKE_BUILD_TYPE}" - "\nDebug mode: ${ENABLE_DEBUG}" - "\nInstall prefix: ${CMAKE_INSTALL_PREFIX}" - "\nShared libs: ${shared_summary}" - "\nStatic libs: ${static_summary}" - "\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" -) + "\n==================| BinPAC Build Summary |====================" + "\nVersion: ${BINPAC_VERSION}" + "\nSO version: ${BINPAC_SOVERSION}" + "\n" + "\nBuild Type: ${CMAKE_BUILD_TYPE}" + "\nDebug mode: ${ENABLE_DEBUG}" + "\nInstall prefix: ${CMAKE_INSTALL_PREFIX}" + "\nShared libs: ${shared_summary}" + "\nStatic libs: ${static_summary}" + "\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) diff --git a/tools/binpac/lib/CMakeLists.txt b/tools/binpac/lib/CMakeLists.txt index 219018edb6..0c5bf15a57 100644 --- a/tools/binpac/lib/CMakeLists.txt +++ b/tools/binpac/lib/CMakeLists.txt @@ -7,61 +7,55 @@ check_type_size("unsigned int" SIZEOF_UNSIGNED_INT) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/binpac.h.in ${CMAKE_CURRENT_BINARY_DIR}/binpac.h) -include_directories(${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) set(binpac_headers - ${CMAKE_CURRENT_BINARY_DIR}/binpac.h - binpac_analyzer.h - binpac_buffer.h - binpac_bytestring.h - binpac_exception.h - binpac_regex.h -) + ${CMAKE_CURRENT_BINARY_DIR}/binpac.h binpac_analyzer.h binpac_buffer.h + binpac_bytestring.h binpac_exception.h binpac_regex.h) -set(binpac_lib_SRCS - binpac_buffer.cc - binpac_bytestring.cc - binpac_regex.cc - ${binpac_headers} -) +set(binpac_lib_SRCS binpac_buffer.cc binpac_bytestring.cc binpac_regex.cc + ${binpac_headers}) -if ( ENABLE_SHARED ) +if(ENABLE_SHARED) add_library(binpac_lib SHARED ${binpac_lib_SRCS}) target_compile_features(binpac_lib PRIVATE cxx_std_17) - set_target_properties(binpac_lib PROPERTIES - CXX_EXTENSIONS OFF - SOVERSION ${BINPAC_SOVERSION} - VERSION ${BINPAC_VERSION_MAJOR}.${BINPAC_VERSION_MINOR} - MACOSX_RPATH true - OUTPUT_NAME binpac) + set_target_properties( + binpac_lib + PROPERTIES CXX_EXTENSIONS OFF + SOVERSION ${BINPAC_SOVERSION} + VERSION ${BINPAC_VERSION_MAJOR}.${BINPAC_VERSION_MINOR} + MACOSX_RPATH true + OUTPUT_NAME binpac) install(TARGETS binpac_lib DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif () +endif() -if ( ENABLE_STATIC ) +if(ENABLE_STATIC) add_library(binpac_static STATIC ${binpac_lib_SRCS}) target_compile_features(binpac_static PRIVATE cxx_std_17) - set_target_properties(binpac_static PROPERTIES - CXX_EXTENSIONS OFF - OUTPUT_NAME binpac) + set_target_properties(binpac_static PROPERTIES CXX_EXTENSIONS OFF OUTPUT_NAME + binpac) install(TARGETS binpac_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif () +endif() -if ( ZEEK_ROOT_DIR ) - # Installed in binpac subdir just for organization purposes. - install(FILES ${binpac_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/binpac) -else () - install(FILES ${binpac_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -endif () +if(ZEEK_ROOT_DIR) + # Installed in binpac subdir just for organization purposes. + install(FILES ${binpac_headers} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/binpac) +else() + install(FILES ${binpac_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +endif() -# This is set to assist superprojects that want to build BinPac -# from source and rely on it as a target -if ( ENABLE_SHARED ) - set(BinPAC_LIBRARY binpac_lib CACHE STRING "BinPAC library" FORCE) -else () - set(BinPAC_LIBRARY binpac_static CACHE STRING "BinPAC library" FORCE) -endif () +# This is set to assist superprojects that want to build BinPac from source and +# rely on it as a target +if(ENABLE_SHARED) + set(BinPAC_LIBRARY + binpac_lib + CACHE STRING "BinPAC library" FORCE) +else() + set(BinPAC_LIBRARY + binpac_static + CACHE STRING "BinPAC library" FORCE) +endif() set(BinPAC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - CACHE STRING "BinPAC header directories" FORCE -) + CACHE STRING "BinPAC header directories" FORCE) diff --git a/tools/binpac/lib/binpac.h.in b/tools/binpac/lib/binpac.h.in index 59dab550c3..ad11509953 100644 --- a/tools/binpac/lib/binpac.h.in +++ b/tools/binpac/lib/binpac.h.in @@ -72,6 +72,8 @@ inline uint16 pac_swap(const uint16 x) inline int16 pac_swap(const int16 x) { + // Forward to unsigned version with argument/result casted + // appropriately. uint16 (*p)(const uint16) = &pac_swap; return (*p)(x); } @@ -86,6 +88,8 @@ inline uint32 pac_swap(const uint32 x) inline int32 pac_swap(const int32 x) { + // Forward to unsigned version with argument/result casted + // appropriately. uint32 (*p)(const uint32) = &pac_swap; return (*p)(x); } @@ -104,6 +108,8 @@ inline uint64 pac_swap(const uint64 x) inline int64 pac_swap(const int64 x) { + // Forward to unsigned version with argument/result casted + // appropriately. uint64 (*p)(const uint64) = &pac_swap; return (*p)(x); } diff --git a/tools/binpac/lib/binpac_buffer.h b/tools/binpac/lib/binpac_buffer.h index 3eb118e71c..a4de6d66e9 100644 --- a/tools/binpac/lib/binpac_buffer.h +++ b/tools/binpac/lib/binpac_buffer.h @@ -31,7 +31,7 @@ public: // Interface for delayed parsing. Sometimes BinPAC doesn't get the // buffering right and then one can use these to feed parts // individually and assemble them internally. After calling - // FinishBuffer(), one can send the uppper-layer flow an FlowEOF() to + // FinishBuffer(), one can send the upper-layer flow an FlowEOF() to // trigger parsing. void BufferData(const_byteptr data, const_byteptr end); void FinishBuffer(); diff --git a/tools/binpac/patches/binpac-patch-doc.txt b/tools/binpac/patches/binpac-patch-doc.txt index 052285eaea..ab0f406c75 100644 --- a/tools/binpac/patches/binpac-patch-doc.txt +++ b/tools/binpac/patches/binpac-patch-doc.txt @@ -62,7 +62,7 @@ numbers of issues below correspond to the patch numbers in cases - problem: initialization of buffer occurs in every Parse call, regardless if it was initialized before or not; initialization - is correct only on first such occurence + is correct only on first such occurrence - solution: check to buffer_state is to be created always when buffering_state_id is in environment in Type::GenBufferConfig - changed condition from buffering_state_var_field_ to diff --git a/tools/binpac/src/CMakeLists.txt b/tools/binpac/src/CMakeLists.txt index 1cfb83f505..0c21b9024c 100644 --- a/tools/binpac/src/CMakeLists.txt +++ b/tools/binpac/src/CMakeLists.txt @@ -1,16 +1,22 @@ -bison_target(PACParser pac_parse.yy ${BinPAC_BINARY_DIR}/src/pac_parse.cc - DEFINES_FILE ${BinPAC_BINARY_DIR}/src/pac_parse.h - COMPILE_FLAGS "--debug") +bison_target( + PACParser pac_parse.yy ${BinPAC_BINARY_DIR}/src/pac_parse.cc + DEFINES_FILE ${BinPAC_BINARY_DIR}/src/pac_parse.h + COMPILE_FLAGS "--debug") flex_target(PACScanner pac_scan.ll ${BinPAC_BINARY_DIR}/pac_scan.cc) add_flex_bison_dependency(PACScanner PACParser) -if (MSVC) - set_property(SOURCE pac_scan.cc APPEND_STRING PROPERTY COMPILE_FLAGS "/wd4018") +if(MSVC) + set_property( + SOURCE pac_scan.cc + APPEND_STRING + PROPERTY COMPILE_FLAGS "/wd4018") else() - set_property(SOURCE pac_scan.cc APPEND_STRING PROPERTY COMPILE_FLAGS "-Wno-sign-compare") + set_property( + SOURCE pac_scan.cc + APPEND_STRING + PROPERTY COMPILE_FLAGS "-Wno-sign-compare") endif() -include_directories(${PROJECT_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/src) +include_directories(${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src) set(binpac_SRCS ${BISON_PACParser_INPUT} @@ -98,25 +104,25 @@ set(binpac_SRCS pac_typedecl.h pac_utils.h pac_varfield.h - pac_withinput.h -) + pac_withinput.h) add_executable(binpac ${binpac_SRCS}) target_compile_features(binpac PRIVATE cxx_std_17) set_target_properties(binpac 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 "BinPAC") - add_subdirectory(auxil/libunistd EXCLUDE_FROM_ALL) - endif() - target_link_libraries(binpac PRIVATE libunistd) +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 "BinPAC") + add_subdirectory(auxil/libunistd EXCLUDE_FROM_ALL) + endif() + target_link_libraries(binpac PRIVATE libunistd) endif() install(TARGETS binpac DESTINATION bin) -# This is set to assist superprojects that want to build BinPac -# from source and rely on it as a target -set(BinPAC_EXE binpac +# This is set to assist superprojects that want to build BinPac from source and +# rely on it as a target +set(BinPAC_EXE + binpac CACHE STRING "BinPAC executable" FORCE) diff --git a/tools/binpac/src/pac_expr.h b/tools/binpac/src/pac_expr.h index 8d50c904e3..07c33f9dc1 100644 --- a/tools/binpac/src/pac_expr.h +++ b/tools/binpac/src/pac_expr.h @@ -55,7 +55,7 @@ public: // const char* EvalExpr(Output* out, Env* env); - // force evaulation of IDs contained in this expression; + // force evaluation of IDs contained in this expression; // necessary with case expr and conditional let fields (&if) // for correct parsing of fields void ForceIDEval(Output* out_cc, Env* env); diff --git a/tools/binpac/src/pac_exttype.h b/tools/binpac/src/pac_exttype.h index a5eaaa35be..1abe5e50dc 100644 --- a/tools/binpac/src/pac_exttype.h +++ b/tools/binpac/src/pac_exttype.h @@ -5,8 +5,8 @@ // ExternType represent external C++ types that are not defined in // PAC specification (therefore they cannot appear in data layout -// spefication, e.g., in a record field). The type name is copied -// literally to the compiled code. +// specification, e.g., in a record field). The type name is copied +// literally to the compiled code. class ExternType : public Type { public: