#!/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) " 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 )