Skip to content
Snippets Groups Projects
build.sh 2.17 KiB
Newer Older
#!/bin/bash
##############################################################################
# Setup script for CEPCSW:
# - build the cepcsw
#
# Usage:
lintao@ihep.ac.cn's avatar
lintao@ihep.ac.cn committed
# $ bash build.sh
#
# Author: Tao Lin <lintao@ihep.ac.cn>
##############################################################################

function info:() {
    echo "INFO: $*" 1>&2
}

function error:() {
    echo "ERROR: $*" 1>&2
}

function check-cepcsw-envvar() {
    # CEPCSWEXTERNAL is defined in /cvmfs/cepcsw.ihep.ac.cn/prototype/releases/externals/
    if [ -z "${CEPCSWEXTERNAL}" ]; then
        error: "The CEPCSW is not setup. Please source setup.sh."
        return 1
    fi
}

function build-dir() {
    local blddir=build

    if [ -n "${bldtool}" ]; then
        blddir=${blddir}.${bldtool}
    fi

    # If detect the extra env var, append it to the build dir
    if [ -n "${lcg_version}" ]; then
        blddir=${blddir}.${lcg_version}
    fi
    if [ -n "${lcg_platform}" ]; then
        blddir=${blddir}.${lcg_platform}
    fi

    echo $blddir
}

function check-working-builddir() {
    local blddir=$(build-dir)
    if [ ! -d "$blddir" ]; then
        mkdir $blddir || {
            error: "Failed to create $blddir"
            return 1
        }
    fi
}

function run-cmake() {
    local blddir=$(build-dir)

    if [ ! -d "$blddir" ]; then
        error: "Failed to create $blddir"
        return 1
    fi
    local bldgen
    if [ -n "$bldtool" ] ; then
        case $bldtool in
            ninja)
                bldgen="-G Ninja"
                ;;
            *)
                ;;
        esac
    fi
    cmake .. -DHOST_BINARY_TAG=${lcg_platform} ${bldgen} || {
        error: "Failed to cmake"
        return 1
    }

}

function run-make() {
    cmake --build .
}

##############################################################################
# Parse the command line options
##############################################################################

# The current default platform
lcg_platform=x86_64-centos7-gcc8-opt
lcg_version=101.0.0
bldtool=${CEPCSW_BLDTOOL} # make, ninja # set in env var

check-cepcsw-envvar || exit -1

check-working-builddir || exit -1

run-cmake || exit -1

lintao@ihep.ac.cn's avatar
lintao@ihep.ac.cn committed
run-make || exit -1