194 lines
6.6 KiB
Bash
Executable File
194 lines
6.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# Convenience wrapper for easily viewing/setting options that
|
|
# the project's CMake scripts will recognize
|
|
set -e
|
|
command="$0 $*"
|
|
|
|
# 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="\
|
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
|
|
|
Build Directory:
|
|
--builddir=DIR place build files in directory [build]
|
|
|
|
Installation Directories:
|
|
--prefix=PREFIX installation directory [/usr/local/zeek]
|
|
--scriptdir=PATH root installation directory for Zeek scripts
|
|
[PREFIX/share/zeek]
|
|
--conf-files-dir=DIR config files installation directory [PREFIX/etc]
|
|
--localstatedir=PATH path to store log files and run-time data
|
|
(within log/ and spool/ subdirs) [PREFIX]
|
|
--spooldir=PATH path to store run-time data [PREFIX/spool]
|
|
--logdir=PATH path to store log file [PREFIX/logs]
|
|
--libdir=PATH installation directory for library files [PREFIX/lib]
|
|
--python-home=PATH installation directory for Python module
|
|
[PATH/lib/python], the path tracks --prefix if
|
|
that option is used
|
|
--python-prefix=PATH versioned installation directory for Python module
|
|
[PATH/lib/python<Python Version>/site-packages]
|
|
|
|
Required Packages in Non-Standard Locations:
|
|
--with-pcap=PATH path to libpcap install root
|
|
--with-python=PATH path to Python interpreter
|
|
--with-python-lib=PATH path to libpython
|
|
--with-python-inc=PATH path to Python headers
|
|
--with-swig=PATH path to SWIG executable
|
|
|
|
Packaging Options (for developers):
|
|
--binary-package toggle special logic for binary packaging
|
|
--ignore-dirs=PATHS paths to ignore when creating source package
|
|
(semicolon delimited and quoted when multiple)
|
|
--pkg-name-prefix=NAME use the given name as the package prefix instead
|
|
of the default CMake project name
|
|
--osx-sysroot=PATH path to the OS X SDK to compile against
|
|
--osx-min-version=VER minimum OS X version (the deployment target)
|
|
|
|
Required Packages in Non-Standard Locations:
|
|
--with-zeek=PATH path to Zeek install root
|
|
"
|
|
|
|
sourcedir="$( cd "$( dirname "$0" )" && pwd )"
|
|
|
|
# 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
|
|
prefix=/usr/local/zeek
|
|
CMakeCacheEntries=""
|
|
append_cache_entry CMAKE_INSTALL_PREFIX PATH $prefix
|
|
append_cache_entry ZEEK_SCRIPT_INSTALL_PATH STRING $prefix/share/zeek
|
|
append_cache_entry CPACK_SOURCE_IGNORE_FILES STRING
|
|
|
|
# parse arguments
|
|
while [ $# -ne 0 ]; do
|
|
case "$1" in
|
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) optarg= ;;
|
|
esac
|
|
|
|
case "$1" in
|
|
--help|-h)
|
|
echo "${usage}" 1>&2
|
|
exit 1
|
|
;;
|
|
--builddir=*)
|
|
builddir=$optarg
|
|
;;
|
|
--prefix=*)
|
|
prefix=$optarg
|
|
append_cache_entry CMAKE_INSTALL_PREFIX PATH $optarg
|
|
append_cache_entry ZEEKCTL_PYTHON_HOME PATH $optarg
|
|
;;
|
|
--libdir=*)
|
|
libdir=$optarg
|
|
append_cache_entry CMAKE_INSTALL_LIBDIR PATH $optarg
|
|
;;
|
|
--python-home=*)
|
|
append_cache_entry ZEEKCTL_PYTHON_HOME PATH $optarg
|
|
;;
|
|
--python-prefix=*)
|
|
append_cache_entry ZEEKCTL_PYTHON_PREFIX PATH $optarg
|
|
;;
|
|
--scriptdir=*)
|
|
append_cache_entry ZEEK_SCRIPT_INSTALL_PATH STRING $optarg
|
|
user_set_scriptdir="true"
|
|
;;
|
|
--conf-files-dir=*)
|
|
append_cache_entry ZEEK_ETC_INSTALL_DIR PATH $optarg
|
|
user_set_conffilesdir="true"
|
|
;;
|
|
--localstatedir=*)
|
|
append_cache_entry ZEEK_LOCAL_STATE_DIR PATH $optarg
|
|
;;
|
|
--spooldir=*)
|
|
append_cache_entry ZEEK_SPOOL_DIR PATH $optarg
|
|
;;
|
|
--logdir=*)
|
|
append_cache_entry ZEEK_LOG_DIR PATH $optarg
|
|
;;
|
|
--with-zeek=*)
|
|
append_cache_entry ZEEK_ROOT_DIR PATH $optarg
|
|
;;
|
|
--with-pcap=*)
|
|
append_cache_entry PCAP_ROOT_DIR PATH $optarg
|
|
;;
|
|
--with-python=*)
|
|
append_cache_entry Python_EXECUTABLE PATH $optarg
|
|
;;
|
|
--with-python-lib=*)
|
|
append_cache_entry PYTHON_LIBRARY PATH $optarg
|
|
;;
|
|
--with-python-inc=*)
|
|
append_cache_entry PYTHON_INCLUDE_DIR PATH $optarg
|
|
append_cache_entry PYTHON_INCLUDE_PATH PATH $optarg
|
|
;;
|
|
--with-swig=*)
|
|
append_cache_entry SWIG_EXECUTABLE PATH $optarg
|
|
;;
|
|
--binary-package)
|
|
append_cache_entry BINARY_PACKAGING_MODE BOOL true
|
|
;;
|
|
--ignore-dirs=*)
|
|
append_cache_entry CPACK_SOURCE_IGNORE_FILES STRING $optarg
|
|
;;
|
|
--pkg-name-prefix=*)
|
|
append_cache_entry PACKAGE_NAME_PREFIX STRING $optarg
|
|
;;
|
|
--osx-sysroot=*)
|
|
append_cache_entry CMAKE_OSX_SYSROOT PATH $optarg
|
|
;;
|
|
--osx-min-version=*)
|
|
append_cache_entry CMAKE_OSX_DEPLOYMENT_TARGET STRING $optarg
|
|
;;
|
|
*)
|
|
echo "Invalid option '$1'. Try $0 --help to see available options."
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ "$user_set_scriptdir" != "true" ]; then
|
|
append_cache_entry ZEEK_SCRIPT_INSTALL_PATH STRING $prefix/share/zeek
|
|
fi
|
|
|
|
if [ "$user_set_conffilesdir" != "true" ]; then
|
|
append_cache_entry ZEEK_ETC_INSTALL_DIR PATH $prefix/etc
|
|
fi
|
|
|
|
if [ -d $builddir ]; then
|
|
# If build directory exists, check if it has a CMake cache
|
|
if [ -f $builddir/CMakeCache.txt ]; then
|
|
# If the CMake cache exists, delete it so that this configuration
|
|
# is not tainted by a previous one
|
|
rm -f $builddir/CMakeCache.txt
|
|
fi
|
|
else
|
|
# Create build directory
|
|
mkdir -p $builddir
|
|
fi
|
|
|
|
echo "Build Directory : $builddir"
|
|
echo "Source Directory: $sourcedir"
|
|
cd $builddir
|
|
cmake $CMakeCacheEntries $sourcedir
|
|
|
|
echo "# This is the command used to configure this build" > config.status
|
|
echo $command >> config.status
|
|
chmod u+x config.status
|