#!/bin/sh # Convenience wrapper for easily viewing/setting options that # the project's CMake scripts will recognize # 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/bro] --datadir=DIR policy file installation subdirectory [PREFIX/share/bro] Optional Features: --enable-debug compile with debugging symbols --enable-release compile with optimizations --enable-brov6 enable IPv6 processing --enable-perftools use Google's perftools --build-binpac build BinPAC from source located in 'binpac' subdirectory --install-binpac if --build-binpac, this option adds BinPAC build files to the install target --install-auxtools build and install auxilliary tools located in 'aux' subdirectory Required Packages in Non-Standard Locations: --with-openssl=PATH path to OpenSSL install root --with-bind=PATH path to BIND install root --with-pcap=PATH path to libpcap install root --with-binpac=PATH path to BinPAC install root Optional Packages in Non-Standard Locations: --with-libmagic=PATH path to libmagic install root --with-geoip=PATH path to the libGeoIP install root --with-perftools=PATH path to Google Perftools install root Influential Environment Variables (only on first invocation per build directory): CC C compiler command CFLAGS C compiler flags CXX C++ compiler command CXXFLAGS C++ compiler flags " sourcedir=`dirname $0` if [ "$sourcedir" = "." ]; then sourcedir=`pwd` fi # 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 CMakeCacheEntries="" append_cache_entry CMAKE_INSTALL_PREFIX PATH /usr/local/bro append_cache_entry DATADIR STRING share/bro append_cache_entry ENABLE_DEBUG BOOL false append_cache_entry ENABLE_RELEASE BOOL false append_cache_entry BROv6 BOOL false append_cache_entry ENABLE_PERFTOOLS BOOL false # these settings should be set depending on whether the submodule exists append_cache_entry BinPAC_PREFER_BUILD BOOL false append_cache_entry BinPAC_SKIP_INSTALL BOOL true append_cache_entry INSTALL_AUX_TOOLS BOOL false # 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=*) append_cache_entry CMAKE_INSTALL_PREFIX PATH $optarg ;; --datadir=*) append_cache_entry DATADIR STRING $optarg ;; --enable-debug) append_cache_entry ENABLE_DEBUG BOOL true ;; --enable-release) append_cache_entry ENABLE_RELEASE BOOL true ;; --enable-brov6) append_cache_entry BROv6 BOOL true ;; --enable-perftools) append_cache_entry ENABLE_PERFTOOLS BOOL true ;; --build-binpac) if [ -f $sourcedir/binpac/CMakeLists.txt ]; then append_cache_entry BinPAC_PREFER_BUILD BOOL true else echo "Error: BinPAC source not found in $sourcedir/binpac" >&2 exit 1 fi ;; --install-binpac) append_cache_entry BinPAC_SKIP_INSTALL BOOL false ;; --install-auxtools) if [ -f $sourcedir/aux/CMakeLists.txt ]; then append_cache_entry INSTALL_AUX_TOOLS BOOL false else echo "Error: Bro-Aux source not found in $sourcedir/aux" >&2 exit 1 fi ;; --with-openssl=*) append_cache_entry OpenSSL_ROOT_DIR PATH $optarg ;; --with-bind=*) append_cache_entry BIND_ROOT_DIR PATH $optarg ;; --with-pcap=*) append_cache_entry PCAP_ROOT_DIR PATH $optarg ;; --with-binpac=*) append_cache_entry BinPAC_ROOT_DIR PATH $optarg ;; --with-libmagic=*) append_cache_entry LibMagic_ROOT_DIR PATH $optarg ;; --with-geoip=*) append_cache_entry LibGeoIP_ROOT_DIR PATH $optarg ;; --with-perftools=*) append_cache_entry GooglePerftools_ROOT_DIR PATH $optarg ;; *) echo "Invalid option '$1'. Try $0 --help to see available options." exit 1 ;; esac shift done # Create build directory mkdir -p $builddir echo "Build Directory : $builddir" echo "Source Directory: $sourcedir" cd $builddir cmake $CMakeCacheEntries $sourcedir