Skip to content

Instantly share code, notes, and snippets.

@klehigh
Created March 4, 2020 20:43
Show Gist options
  • Save klehigh/e9bfb566f4707bd8e45b7ff37902f97d to your computer and use it in GitHub Desktop.
Save klehigh/e9bfb566f4707bd8e45b7ff37902f97d to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# Wrapper for viewing/setting options that the plugin's CMake
# scripts will recognize.
#
# Don't edit this. Edit configure.plugin to add plugin-specific options.
#
set -e
command="$0 $*"
if [ -e `dirname $0`/configure.plugin ]; then
# Include custom additions.
. `dirname $0`/configure.plugin
fi
# Check for `cmake` command.
type cmake > /dev/null 2>&1 || {
echo "\
This package requires CMake, please install it first, then you may
use this configure script to access CMake equivalent functionality.\
" >&2;
exit 1;
}
usage() {
cat 1>&2 <<EOF
Usage: $0 [OPTIONS]
Plugin Options:
--zeek-dist=DIR Path to Zeek source tree
--install-root=DIR Path where to install plugin into
--with-binpac=DIR Path to BinPAC installation root
--with-broker=DIR Path to Broker installation root
--with-caf=DIR Path to CAF installation root
--with-bifcl=PATH Path to bifcl executable
--enable-debug Compile in debugging mode
EOF
if type plugin_usage >/dev/null 2>&1; then
plugin_usage 1>&2
fi
echo
exit 1
}
# Function to append a CMake cache entry definition to the
# CMakeCacheEntries variable
# $1 is the cache entry variable name
# $2 is the cache entry variable type
# $3 is the cache entry variable value
append_cache_entry () {
CMakeCacheEntries="$CMakeCacheEntries -D $1:$2=$3"
}
# set defaults
builddir=build
zeekdist=""
installroot="default"
CMakeCacheEntries=""
while [ $# -ne 0 ]; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case "$1" in
--help|-h)
usage
;;
--zeek-dist=*)
zeekdist=`cd $optarg && pwd`
;;
--install-root=*)
installroot=$optarg
;;
--with-binpac=*)
append_cache_entry BinPAC_ROOT_DIR PATH $optarg
binpac_root=$optarg
;;
--with-broker=*)
append_cache_entry BROKER_ROOT_DIR PATH $optarg
broker_root=$optarg
;;
--with-caf=*)
append_cache_entry CAF_ROOT_DIR PATH $optarg
caf_root=$optarg
;;
--with-bifcl=*)
append_cache_entry BifCl_EXE PATH $optarg
;;
--enable-debug)
append_cache_entry BRO_PLUGIN_ENABLE_DEBUG BOOL true
;;
*)
if type plugin_option >/dev/null 2>&1; then
plugin_option $1 && shift && continue;
fi
echo "Invalid option '$1'. Try $0 --help to see available options."
exit 1
;;
esac
shift
done
if [ -z "$zeekdist" ]; then
if type zeek-config >/dev/null 2>&1; then
if zeek-config --cmake_dir >/dev/null 2>&1; then
# Have a newer version of zeek-config that has needed flags
append_cache_entry BRO_CONFIG_PREFIX PATH `zeek-config --prefix`
append_cache_entry BRO_CONFIG_INCLUDE_DIR PATH `zeek-config --include_dir`
append_cache_entry BRO_CONFIG_PLUGIN_DIR PATH `zeek-config --plugin_dir`
append_cache_entry BRO_CONFIG_CMAKE_DIR PATH `zeek-config --cmake_dir`
append_cache_entry CMAKE_MODULE_PATH PATH `zeek-config --cmake_dir`
build_type=`zeek-config --build_type`
if [ "$build_type" = "debug" ]; then
append_cache_entry BRO_PLUGIN_ENABLE_DEBUG BOOL true
fi
if [ -z "$binpac_root" ]; then
append_cache_entry BinPAC_ROOT_DIR PATH `zeek-config --binpac_root`
fi
if [ -z "$broker_root" ]; then
append_cache_entry BROKER_ROOT_DIR PATH `zeek-config --broker_root`
fi
if [ -z "$caf_root" ]; then
append_cache_entry CAF_ROOT_DIR PATH `zeek-config --caf_root`
fi
zeekdist=`zeek-config --zeek_dist 2> /dev/null`
append_cache_entry BRO_DIST PATH $zeekdist
else
zeekdist=`zeek-config --zeek_dist 2> /dev/null`
if [ ! -e "$zeekdist/zeek-path-dev.in" ]; then
echo "$zeekdist does not appear to be a valid Zeek source tree."
exit 1
fi
append_cache_entry BRO_DIST PATH $zeekdist
append_cache_entry CMAKE_MODULE_PATH PATH $zeekdist/cmake
fi
else
echo "Either 'zeek-config' must be in PATH or '--zeek-dist=<path>' used"
exit 1
fi
else
if [ ! -e "$zeekdist/zeek-path-dev.in" ]; then
echo "$zeekdist does not appear to be a valid Zeek source tree."
exit 1
fi
append_cache_entry BRO_DIST PATH $zeekdist
append_cache_entry CMAKE_MODULE_PATH PATH $zeekdist/cmake
fi
if [ "$installroot" != "default" ]; then
mkdir -p $installroot
append_cache_entry BRO_PLUGIN_INSTALL_ROOT PATH $installroot
fi
echo "Build Directory : $builddir"
echo "Zeek Source Directory : $zeekdist"
mkdir -p $builddir
cd $builddir
cmake $CMakeCacheEntries ..
echo "# This is the command used to configure this build" > config.status
echo $command >> config.status
chmod u+x config.status
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment