blob: 611b7b96e0d5841b9e4d6f95ccc61ca6536434f5 [file] [log] [blame]
#!/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
RDIR="$( dirname "$SOURCE" )"
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
echo $WINDOWS
if [ "$WINDOWS" -eq "1" ]; then
echo "doing windows"
cd $BUILD_DIR
[ -d windows ] || mkdir windows
BUILD_DIR=$BUILD_DIR/windows
cd $DIR
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)
[ -d $DEBUGDIR ] || (cd ${BUILD_DIR} && mkdir debug && cd ..)
BUILD_DIR=$DEBUGDIR
else
RELEASEDIR=($DIR/$BUILD_DIR/release)
[ -d $RELEASEDIR ] || (cd ${BUILD_DIR} && mkdir release && cd ..)
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}
pwd
( eval $CMAKE $CMARGS $DIR && eval ${MAKE} $MAKEFLAGS )