blob: 978b71e5c61bcacf44486984c266d27733c53798 [file] [log] [blame]
#!/usr/bin/env bash
set -o pipefail -o errtrace -o nounset -o errexit
# 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)/
src_dir="$(dirname "$(readlink -f "$0")")"
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
--build-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_dir}/src \
-B ${build_dir} \
-DCMAKE_PREFIX_PATH=${prefix_path} \
-DCMAKE_INSTALL_PREFIX=${install_dir} \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=${build_type}
cat << __EOF__
Useful build commands:
ninja Build VPP
ninja set-build-type-* Change build type to <debug|release|gcov|...>
ninja config Start build configuration TUI
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__