diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 00000000000..165429a2e63 --- /dev/null +++ b/configure @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +# Experimental script, please consult with dmarion@me.com before +# submitting any changes + +# defaults +build_dir=. +install_dir=/usr/local +build_type=release +prefix_path=/opt/vpp/external/$(uname -m)/ + +help() +{ + cat << __EOF__ +VPP Build Configuration Script + +USAGE: ${0} [options] + +OPTIONS: + --help, -h This help + --build-dir, -b Build directory + --install-dir, -i Install directory + --type, -t Build type (release, debug, ... ) + --wipe, -w Wipe whole repo (except startup.* files) +__EOF__ +} + +while (( "$#" )); do + case "$1" in + -h|--help) + help + exit 1 + ;; + -b|--build-dir) + if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then + build_dir=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + exit 1 + fi + ;; + -i|--install-dir) + if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then + install_dir=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + exit 1 + fi + ;; + -t|--build-type) + if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then + build_type=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + exit 1 + fi + ;; + -w|--wipe) + git clean -fdx --exclude=startup.\* + exit 1 + ;; + -*|--*=) # unsupported flags + echo "Error: Unsupported flag $1" >&2 + exit 1 + ;; + *) # preserve positional arguments + PARAMS="$PARAMS $1" + shift + ;; + esac +done + +cmake \ + -G Ninja \ + -S src \ + -B ${build_dir} \ + -DCMAKE_PREFIX_PATH=${prefix_path} \ + -DCMAKE_INSTALL_PREFIX=${install_dir} \ + -DCMAKE_BUILD_TYPE:STRING=${build_type} + + cat << __EOF__ + + Useful build commands: + + ninja Build VPP + ninja menu Start build configuration TUI + ninja compdb Generate compile_commands.json + ninja run Runs VPP using startup.conf in the build directory + ninja debug Runs VPP inside GDB using startup.conf in the build directory + ninja pkg-deb Create .deb packages + ninja install Install VPP to $install_dir + +__EOF__ |