#!/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 Options: --builddir=DIR place build files in directory [build] --build-type=TYPE set CMake build type [RelWithDebInfo]: - Debug: optimizations off, debug symbols + flags - MinSizeRel: size optimizations, debugging off - Release: optimizations on, debugging off - RelWithDebInfo: optimizations on, debug symbols on, debug flags off --generator=GENERATOR CMake generator to use (see cmake --help) Installation Directories: --prefix=PREFIX installation directory [/usr/local/zeek] Optional Features: --enable-debug compile in debugging mode (like --build-type=Debug) Required Packages in Non-Standard Locations: --with-flex=PATH path to flex executable --with-bison=PATH path to bison executable 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="$(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" } # Function to remove a CMake cache entry definition from the # CMakeCacheEntries variable # $1 is the cache entry variable name remove_cache_entry() { CMakeCacheEntries="$CMakeCacheEntries -U $1" # Even with -U, cmake still warns by default if # added previously with -D. CMakeCacheEntries="$CMakeCacheEntries --no-warn-unused-cli" } # set defaults builddir=build prefix=/usr/local/zeek CMakeCacheEntries="" append_cache_entry CMAKE_INSTALL_PREFIX PATH $prefix append_cache_entry ENABLE_DEBUG 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 ;; --build-type=*) append_cache_entry CMAKE_BUILD_TYPE STRING $optarg if [ $(echo "$optarg" | tr [:upper:] [:lower:]) = "debug" ]; then append_cache_entry ENABLE_DEBUG BOOL true fi ;; --generator=*) CMakeGenerator="$optarg" ;; --prefix=*) prefix=$optarg append_cache_entry CMAKE_INSTALL_PREFIX PATH $optarg ;; --enable-debug) append_cache_entry ENABLE_DEBUG BOOL true ;; --with-flex=*) append_cache_entry FLEX_EXECUTABLE PATH $optarg ;; --with-bison=*) append_cache_entry BISON_EXECUTABLE PATH $optarg ;; *) echo "Invalid option '$1'. Try $0 --help to see available options." exit 1 ;; esac shift done 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 if [ -n "$CMakeGenerator" ]; then cmake -G "$CMakeGenerator" $CMakeCacheEntries $sourcedir else cmake $CMakeCacheEntries $sourcedir fi echo "# This is the command used to configure this build" >config.status echo $command >>config.status chmod u+x config.status