#!/usr/bin/env bash set -e function usage() { echo "$0 args1 args2 .." echo "available args detail:" echo "-d : Build with Debug mode, defaule Release mode" echo "-c : Build with CUDA, default without CUDA" echo "-t : Build with training mode, default inference only" echo "example: $0 -d" exit -1 } BUILD_TYPE=Release MGE_WITH_CUDA=OFF MGE_INFERENCE_ONLY=ON while getopts "dct" arg do case $arg in d) echo "Build with Debug mode" BUILD_TYPE=Debug ;; c) echo "Build with CUDA" MGE_WITH_CUDA=ON ;; t) echo "Build with training mode" MGE_INFERENCE_ONLY=OFF ;; ?) echo "unkonw argument" usage ;; esac done echo "------------------------------------" echo "build config summary:" echo "BUILD_TYPE: $BUILD_TYPE" echo "MGE_WITH_CUDA: $MGE_WITH_CUDA" echo "MGE_INFERENCE_ONLY: $MGE_INFERENCE_ONLY" echo "------------------------------------" READLINK=readlink OS=$(uname -s) if [ $OS = "Darwin" ];then READLINK=greadlink if [ $MGE_WITH_CUDA = "ON" ];then echo "MACOS DO NOT SUPPORT TensorRT, ABORT NOW!!" exit -1 fi fi SRC_DIR=$($READLINK -f "`dirname $0`/../../") function cmake_build() { BUILD_DIR=$SRC_DIR/build_dir/host/MGE_WITH_CUDA_$1/MGE_INFERENCE_ONLY_$2/$3/build INSTALL_DIR=$BUILD_DIR/../install MGE_WITH_CUDA=$1 MGE_INFERENCE_ONLY=$2 BUILD_TYPE=$3 echo "build dir: $BUILD_DIR" echo "install dir: $INSTALL_DIR" echo "build type: $BUILD_TYPE" echo "MGE_WITH_CUDA: $MGE_WITH_CUDA" echo "MGE_INFERENCE_ONLY: $MGE_INFERENCE_ONLY" if [ -e $BUILD_DIR ];then echo "clean old dir: $BUILD_DIR" rm -rf $BUILD_DIR fi if [ -e $INSTALL_DIR ];then echo "clean old dir: $INSTALL_DIR" rm -rf $INSTALL_DIR fi echo "create build dir" mkdir -p $BUILD_DIR mkdir -p $INSTALL_DIR cd $BUILD_DIR cmake \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ -DMGE_INFERENCE_ONLY=$MGE_INFERENCE_ONLY \ -DMGE_WITH_CUDA=$MGE_WITH_CUDA \ -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \ $SRC_DIR make -j$(nproc) make install/strip } cmake_build $MGE_WITH_CUDA $MGE_INFERENCE_ONLY $BUILD_TYPE