mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00

Notable changes: - libmagic is no longer used at all. All MIME type detection is done through new Bro signatures, and there's no longer a means to get verbose file type descriptions (e.g. "PNG image data, 1435 x 170"). The majority of the default file magic signatures are derived from the default magic database of libmagic ~5.17. - File magic signatures consist of two new constructs in the signature rule parsing grammar: "file-magic" gives a regular expression to match against, and "file-mime" gives the MIME type string of content that matches the magic and an optional strength value for the match. - Modified signature/rule syntax for identifiers: they can no longer start with a '-', which made for ambiguous syntax when doing negative strength values in "file-mime". Also brought syntax for Bro script identifiers in line with reality (they can't start with numbers or include '-' at all). - A new Built-In Function, "file_magic", can be used to get all file magic matches and their corresponding strength against a given chunk of data - The second parameter of the "identify_data" Built-In Function can no longer be used to get verbose file type descriptions, though it can still be used to get the strongest matching file magic signature. - The "file_transferred" event's "descr" parameter no longer contains verbose file type descriptions. - The BROMAGIC environment variable no longer changes any behavior in Bro as magic databases are no longer used/installed. - Reverted back to minimum requirement of CMake 2.6.3 from 2.8.0 (it's back to being the same requirement as the Bro v2.2 release). The bump was to accomodate building libmagic as an external project, which is no longer needed. Addresses BIT-1143.
83 lines
3.9 KiB
CMake
83 lines
3.9 KiB
CMake
set(BROCCOLI_DOCS_SRC ${CMAKE_BINARY_DIR}/aux/broccoli/doc/html)
|
|
set(BROCCOLI_DOCS_DST ${CMAKE_BINARY_DIR}/html/broccoli-api)
|
|
set(SPHINX_INPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/sphinx_input)
|
|
set(SPHINX_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/sphinx_output)
|
|
set(BROXYGEN_SCRIPT_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/broxygen_script_output)
|
|
set(BROXYGEN_CACHE_DIR ${CMAKE_CURRENT_BINARY_DIR}/broxygen_cache)
|
|
|
|
# Find out what BROPATH to use when executing bro.
|
|
execute_process(COMMAND ${CMAKE_BINARY_DIR}/bro-path-dev
|
|
OUTPUT_VARIABLE BROPATH
|
|
RESULT_VARIABLE retval
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
if (NOT ${retval} EQUAL 0)
|
|
message(FATAL_ERROR "Problem setting BROPATH")
|
|
endif ()
|
|
|
|
# Configure the Sphinx config file (expand variables CMake might know about).
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/conf.py
|
|
@ONLY)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/broxygen.conf.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/broxygen.conf
|
|
@ONLY)
|
|
|
|
add_custom_target(sphinxdoc
|
|
# Copy the template documentation to build directory to use as input tree
|
|
# for Sphinx. This is needed because some parts are dynamically generated
|
|
# in to that tree by Bro/Broxygen.
|
|
COMMAND rsync -q -r --copy-links --times --delete
|
|
--filter='protect scripts/*'
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ ${SPHINX_INPUT_DIR}
|
|
# Use Bro/Broxygen to dynamically generate reST for all Bro scripts.
|
|
COMMAND BROPATH=${BROPATH}
|
|
${CMAKE_BINARY_DIR}/src/bro
|
|
-X ${CMAKE_CURRENT_BINARY_DIR}/broxygen.conf
|
|
broxygen >/dev/null
|
|
# Rsync over the generated reST to the Sphinx source tree in the build dir.
|
|
COMMAND rsync -q -r --copy-links --times --delete --filter='protect *.bro'
|
|
${BROXYGEN_SCRIPT_OUTPUT}/ ${SPHINX_INPUT_DIR}/scripts
|
|
# Rsync over Bro scripts to the Sphinx source tree in the build dir.
|
|
# These are used by :download: references in the generated script docs.
|
|
COMMAND rsync -q -r --copy-links --times --delete
|
|
--filter='protect /base/bif/*' --filter='protect *.rst'
|
|
--filter='include */' --filter='include *.bro' --filter='exclude *'
|
|
${CMAKE_SOURCE_DIR}/scripts/ ${SPHINX_INPUT_DIR}/scripts
|
|
# Rsync over Bro scripts created by BIF compiler to the Sphinx source tree.
|
|
COMMAND rsync -q -r --copy-links --times --delete
|
|
--filter='protect *.rst' --filter='include */'
|
|
--filter='include *.bro' --filter='exclude *'
|
|
${CMAKE_BINARY_DIR}/scripts/base/bif/
|
|
${SPHINX_INPUT_DIR}/scripts/base/bif
|
|
# Use Sphinx to build HTML.
|
|
COMMAND sphinx-build
|
|
-b html
|
|
-c ${CMAKE_CURRENT_BINARY_DIR}
|
|
-d ${SPHINX_OUTPUT_DIR}/doctrees
|
|
${SPHINX_INPUT_DIR}
|
|
${SPHINX_OUTPUT_DIR}/html
|
|
# Create symlink to the html output directory for convenience.
|
|
COMMAND "${CMAKE_COMMAND}" -E create_symlink
|
|
${SPHINX_OUTPUT_DIR}/html
|
|
${CMAKE_BINARY_DIR}/html
|
|
# Copy Broccoli API reference into output dir if it exists.
|
|
COMMAND test -d ${BROCCOLI_DOCS_SRC} &&
|
|
( rm -rf ${BROCCOLI_DOCS_DST} &&
|
|
cp -r ${BROCCOLI_DOCS_SRC} ${BROCCOLI_DOCS_DST} ) || true
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "[Sphinx] Generate HTML documentation in ${CMAKE_BINARY_DIR}/html")
|
|
|
|
add_dependencies(sphinxdoc bro)
|
|
|
|
add_custom_target(sphinxdoc_clean
|
|
COMMAND "${CMAKE_COMMAND}" -E remove_directory ${SPHINX_INPUT_DIR}
|
|
COMMAND "${CMAKE_COMMAND}" -E remove_directory ${SPHINX_OUTPUT_DIR}
|
|
COMMAND "${CMAKE_COMMAND}" -E remove_directory ${BROXYGEN_SCRIPT_OUTPUT}
|
|
COMMAND "${CMAKE_COMMAND}" -E remove_directory ${BROXYGEN_CACHE_DIR}
|
|
VERBATIM)
|
|
|
|
add_custom_target(doc)
|
|
add_custom_target(docclean)
|
|
add_dependencies(doc sphinxdoc)
|
|
add_dependencies(docclean sphinxdoc_clean)
|