You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
#!/bin/bash
|
|
#
|
|
# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
SOURCE="${BASH_SOURCE[0]}"
|
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
TARGET="$(readlink "$SOURCE")"
|
|
if [[ $TARGET == /* ]]; then
|
|
# "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"
|
|
SOURCE="$TARGET"
|
|
else
|
|
DIR="$( dirname "$SOURCE" )"
|
|
# "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"
|
|
SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
fi
|
|
done
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
CMD=$( basename "$0" )
|
|
|
|
usage() {
|
|
echo "Usage: $CMD [options]"
|
|
echo "Options: -t(type) <Debug or Release>"
|
|
echo " -c(lean) build"
|
|
echo " -s(tatic libraries) <1 or 0>"
|
|
echo " -w(indows) build"
|
|
exit 1
|
|
}
|
|
# defaults
|
|
TYPE=Release
|
|
CLEAN=0
|
|
STATIC=0
|
|
WINDOWS=0
|
|
|
|
# Parse the command line
|
|
while getopts "whct:s:" opt; do
|
|
case "$opt" in
|
|
h|\?) usage;;
|
|
t) TYPE=$OPTARG;;
|
|
c) CLEAN=1;;
|
|
s) STATIC=$OPTARG;;
|
|
w) WINDOWS=1;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
if [ $CLEAN == 1 ]; then
|
|
echo "removing ${DIR}/build"
|
|
rm -rf "${DIR}"/build
|
|
fi
|
|
|
|
BUILD_DIR="build"
|
|
[ -d build ] || ( mkdir build || exit )
|
|
echo $WINDOWS
|
|
if [ "$WINDOWS" -eq "1" ]; then
|
|
echo "doing windows"
|
|
cd $BUILD_DIR || exit
|
|
[ -d windows ] || mkdir windows
|
|
BUILD_DIR=$BUILD_DIR/windows
|
|
cd "$DIR" || exit
|
|
fi
|
|
# lower case TYPE in a posix compliant manner
|
|
LC_TYPE=$(echo "$TYPE" | tr '[:upper:]' '[:lower:]')
|
|
if [ "${LC_TYPE}" == "debug" ]; then
|
|
DEBUGDIR=("$DIR/$BUILD_DIR/debug")
|
|
# shellcheck disable=SC2128
|
|
[ -d "$DEBUGDIR" ] || (cd ${BUILD_DIR} && ( mkdir debug || exit ) && cd ..)
|
|
# shellcheck disable=SC2128
|
|
BUILD_DIR=$DEBUGDIR
|
|
else
|
|
RELEASEDIR=("$DIR/$BUILD_DIR/release")
|
|
# shellcheck disable=SC2128
|
|
[ -d "$RELEASEDIR" ] || (cd "${BUILD_DIR}" && ( mkdir release || exit ) && cd ..)
|
|
# shellcheck disable=SC2128
|
|
BUILD_DIR=$RELEASEDIR
|
|
fi
|
|
|
|
echo "Build Directory: ${BUILD_DIR}"
|
|
|
|
CMAKE=cmake
|
|
CMARGS="-DCMAKE_BUILD_TYPE=$TYPE \
|
|
-DBUILD_STATIC_PIPE_LIBS=$STATIC \
|
|
-DBUILD_PIPE_ONLY=1"
|
|
if [ "$WINDOWS" -eq "1" ]; then
|
|
CMARGS="$CMARGS \
|
|
-DCMAKE_TOOLCHAIN_FILE=${DIR}/toolchain-x86-ubuntu-mingw64.cmake"
|
|
fi
|
|
MAKE="make"
|
|
|
|
cd "${BUILD_DIR}" || exit
|
|
pwd
|
|
( eval $CMAKE "$CMARGS" "$DIR" && eval ${MAKE} "$MAKEFLAGS" )
|