Skip to content
Snippets Groups Projects
CompileAllOptionPermutations.sh 5.25 KiB
Newer Older
SW=/home/frankm/SW;

INSTALL_LCIO=${SW}/lcio/v02-04-03;
INSTALL_XERCESC=${SW}/xercesc;

INSTALL_G4=${SW}/g4_10.01.p02_dbg/lib/Geant4-10.1.2;
CHECKOUT=${dir_name}/../../DD4hep.trunk/checkout;
GEANT_VERSION=10.01.p02;
Markus Frank's avatar
Markus Frank committed
#ROOT_VERSION=5.34.25
Markus Frank's avatar
Markus Frank committed
GEANT_VERSION=10.02.p02;
INSTALL_G4=${SW}/g4_${GEANT_VERSION}_dbg/lib/Geant4-10.2.2;
#ROOT_VERSION=6.06.06;
ROOT_VERSION=6.08.00;
source ${INSTALL_G4}/../../bin/geant4.sh;
Markus Frank's avatar
Markus Frank committed
#
# Root version < 6.08 : 
#export CXX="`which g++-5` -D_GLIBCXX_USE_CXX11_ABI=0";
#export CC="`which gcc-5` -D_GLIBCXX_USE_CXX11_ABI=0";
#
export CXX="`which g++-5`";
export CC="`which gcc-5`";
# ==============================================================================
# Parse arguments
# ==============================================================================
parse_command_line_args()
{
    MULTITHREADED="";
    ARG_ERROR="";
    PLATFORMS="dbg opt";
    while [[ "$1" == -* ]]; do
        #echo "Arg:$1 $2";
        a1=`echo $1 | tr A-Z a-z`;
	case ${a1} in
	    -root)
		ROOT_VERSION=$2;
		shift
		;;

	    -geant4)
		GEANT_VERSION=$2;
		shift
		;;

	    -build)
		PLATFORMS="$2";
		shift
		;;

            -mt)
                MULTITHREADED="YES";
                ;;

            -st)
                MULTITHREADED="";
                ;;

	    -threads)
		num_threads=$2;
		shift
		;;

	    -j)
		num_threads=$2;
		shift
		;;

	    *)
		ARG_ERROR=$1;
		;;
	esac
	shift
    done
}
Markus Frank's avatar
Markus Frank committed
#cat ${ROOTSYS}/bin/thisroot.sh;
LINE="===================================================================================================";
BARS="=====  ";
Markus Frank's avatar
Markus Frank committed
make_output()
{
    echo "${LINE}";
    echo "${BARS}";
    echo "=====>>     `pwd` ";
Markus Frank's avatar
Markus Frank committed
    if test -n "${1}"; then 
        echo " +++++ ${1}";
    fi;
    if test -n "${2}"; then 
        echo " +++++ ${2}";
    fi;
    echo "${BARS}";
    echo "${LINE}";
make_opt()
{
    if test "$1" = "ON"; then
Markus Frank's avatar
Markus Frank committed
        arg="${2}=${1}";shift;shift;
	echo ${arg} $*;
        #else
        #	echo ${1};
Markus Frank's avatar
Markus Frank committed

make_build()
{
Markus Frank's avatar
Markus Frank committed
    eval ${CMD};
    if [ $? -ne  0 ]; then
        make_output "DANGER WILL ROBINSON DANGER!" "++++ Failed CMAKE command:"
        echo ${CMD};
	exit 1
    fi
    make install VERBOSE=1 -j ${num_threads};
Markus Frank's avatar
Markus Frank committed
    if [ $? -ne  0 ]; then
        make_output "DANGER WILL ROBINSON DANGER!" "++++ Failed BUILD!"
Markus Frank's avatar
Markus Frank committed
        echo ${CMD};
	exit 1
    fi;
    make test;
    if [ $? -ne  0 ]; then
        make_output "DANGER WILL ROBINSON DANGER!" "++++ Failed TESTS!"
Markus Frank's avatar
Markus Frank committed
        echo ${CMD};
Markus Frank's avatar
Markus Frank committed
    fi;
    echo "${LINE}";
    echo "${BARS}";
    echo "=======>>  Successfully build configuration `pwd` ";
    echo "${BARS}";
    echo "${LINE}";
Markus Frank's avatar
Markus Frank committed
build_all()
{
    DEF_MODES="ON OFF";
    G4_MODES="${DEF_MODES}";
    XERCES_MODES="${DEF_MODES}";
    LCIO_MODES="${DEF_MODES}";
    #XERCES_MODES="OFF";
    BUILD_TYPE=;
    BUILD_TYPE="-DCMAKE_BUILD_TYPE=Debug";
    for DOGEANT4 in ${G4_MODES}; do
	for DOXERCESC in ${XERCES_MODES}; do
Markus Frank's avatar
Markus Frank committed
	    for DOGEAR in OFF; do
Markus Frank's avatar
Markus Frank committed
		    folder=build_Xer${DOXERCESC}_Geant${DOGEANT4}_Gear${DOGEAR}_Lcio${DOLCIO}
                    WORK_DIR=${dir_name}/${folder};
		    mkdir -p ${WORK_DIR}/EX;
		    cd ${WORK_DIR};
                    make_output;
                    #-DDD4HEP_DEBUG_CMAKE=ON \
		    unset DD4hep_DIR;
                    OPTS="`make_opt ${DOGEANT4} -DDD4HEP_USE_GEANT4 -DGeant4_DIR=${INSTALL_G4}`\
Markus Frank's avatar
Markus Frank committed
		    `make_opt ${DOLCIO}     -DDD4HEP_USE_LCIO -DLCIO_DIR=${INSTALL_LCIO}` \
		    `make_opt ${DOXERCESC}  -DDD4HEP_USE_XERCESC -DXERCESC_ROOT_DIR=${INSTALL_XERCESC}` \
Markus Frank's avatar
Markus Frank committed
                    -DCLHEP_INCLUDE_DIR=${INSTALL_G4}/../../include/Geant4/CLHEP \
                    -DCLHEP_LIBRARY=${INSTALL_G4}/libG4clhep.so \
                    -DDD4HEP_NO_REFLEX=ON -DDD4HEP_USE_CXX11=ON \
                    -DROOTSYS=${ROOTSYS} -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/DD4hep";
		    CMD="cd ${dir_name}/$folder ; cmake ${BUILD_TYPE} ${OPTS} ${CHECKOUT};";
Markus Frank's avatar
Markus Frank committed
                    make_build;

		    unset ROOTSYS;
                    DD4hep_DIR=${WORK_DIR}/DD4hep;
Markus Frank's avatar
Markus Frank committed
                    OPTS_ex="`make_opt ${DOGEANT4} -DDD4HEP_USE_GEANT4 -DGeant4_DIR=${INSTALL_G4}`\
		    `make_opt ${DOLCIO}     -DDD4HEP_USE_LCIO    -DLCIO_DIR=${INSTALL_LCIO}` \
		    `make_opt ${DOXERCESC}  -DDD4HEP_USE_XERCESC -DXERCESC_ROOT_DIR=${INSTALL_XERCESC}` \
Markus Frank's avatar
Markus Frank committed
                    -DCLHEP_INCLUDE_DIR=${INSTALL_G4}/../../include/Geant4/CLHEP \
                    -DCLHEP_LIBRARY=${INSTALL_G4}/libG4clhep.so \
                    -DDD4HEP_NO_REFLEX=ON -DDD4HEP_USE_CXX11=ON \
                    -DROOTSYS=${ROOTSYS}";
		    source ${DD4hep_DIR}/bin/thisdd4hep.sh;
   		    CMD="cd ${WORK_DIR}/EX; cmake ${BUILD_TYPE} ${OPTS} -DDD4hep_DIR=${DD4hep_DIR} ${CHECKOUT}/examples;";
Markus Frank's avatar
Markus Frank committed
                    make_build;
                    #
		    cd ../..;
		done;
	    done;
	done;
    done;
}


parse_command_line_args $*;
if [ "$ARG_ERROR" != "" ]; then
    echo "Unknown option: ERROR CONDITION";
    exit 0;
elif [ "$ROOT_VERSION" == "" ] || [ "$PLATFORMS" == "" ]; then
    echo "ERROR CONDITION ROOT_VERSION=${ROOT_VERSION}  PLATFORMS=${PLATFORMS}";
    exit 0;
fi;
export INSTALL_G4=${SW}/g4_${GEANT_VERSION}_dbg/lib/Geant4-10.1.2;
export ROOTSYS=${SW}/root_v${ROOT_VERSION}_dbg;
. ${ROOTSYS}/bin/thisroot.sh;
#
#
Markus Frank's avatar
Markus Frank committed
build_all;