diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..3d28406c068f10129f2288729ce46b803704779d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,27 @@ +stages: + - build + +gcc-c++11: + stage: build + script: "CI/ci-linux.sh gcc C++11" + tags: + - Linux + +clang-c++11: + stage: build + script: "CI/ci-linux.sh clang C++11" + tags: + - Linux + +gcc-c++14: + stage: build + script: "CI/ci-linux.sh gcc C++14" + tags: + - Linux + +clang-c++14: + stage: build + script: "CI/ci-linux.sh clang C++14" + tags: + - Linux + diff --git a/CI/ci-linux.sh b/CI/ci-linux.sh new file mode 100755 index 0000000000000000000000000000000000000000..a911a5d073c875a6afec67f8c74269673181b620 --- /dev/null +++ b/CI/ci-linux.sh @@ -0,0 +1,147 @@ +#!/bin/bash + +COMPILER=$1 +LANGUAGE=$2 + +# Exit script on any error +set -e + +OPTIONS="" +MAKE_OPTIONS="" +BUILDPATH="" + +if [ "$COMPILER" == "gcc" ]; then + echo "Building with GCC"; + BUILDPATH="gcc" + + # without icecc: no options required + OPTIONS="-DCMAKE_CXX_COMPILER=/usr/lib/icecc/bin/g++ -DCMAKE_C_COMPILER=/usr/lib/icecc/bin/gcc" + MAKE_OPTIONS="-j16" + export ICECC_CXX=/usr/bin/g++ ; export ICECC_CC=/usr/bin/gcc + +elif [ "$COMPILER" == "clang" ]; then + + OPTIONS="$OPTIONS -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang" + echo "Building with CLANG"; + BUILDPATH="clang" +fi + +if [ "$LANGUAGE" == "C++98" ]; then + echo "Building with C++98"; + BUILDPATH="$BUILDPATH-cpp98" +elif [ "$LANGUAGE" == "C++11" ]; then + echo "Building with C++11"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++11' " + BUILDPATH="$BUILDPATH-cpp11" +elif [ "$LANGUAGE" == "C++14" ]; then + echo "Building with C++14"; + OPTIONS="$OPTIONS -DCMAKE_CXX_FLAGS='-std=c++14' " + BUILDPATH="$BUILDPATH-cpp14" +fi + +#===================================== +# Color Settings: +#===================================== +NC='\033[0m' +OUTPUT='\033[0;32m' +WARNING='\033[0;93m' + +#clone OpenVolumeMesh +if [ ! -d OpenVolueMesh ]; then + git clone https://graphics.rwth-aachen.de:9000/OpenVolumeMesh/OpenVolumeMesh +else + cd OpenVolueMesh + git pull + cd .. +fi + + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Basic configuration details:" +echo "======================================================================" +echo -e "${NC}" + +echo "Compiler: $COMPILER" +echo "Options: $OPTIONS" +echo "Language: $LANGUAGE" +echo "Make Options: $OPTIONS" +echo "BuildPath: $BUILDPATH" +echo "Path: $PATH" +echo "Language: $LANGUAGE" + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building Release version" +echo "======================================================================" +echo -e "${NC}" + + +if [ ! -d build-release-$BUILDPATH-Vector-Checks ]; then + mkdir build-release-$BUILDPATH-Vector-Checks +fi + +cd build-release-$BUILDPATH-Vector-Checks + +cmake -DCMAKE_BUILD_TYPE=Release -DHEXEX_BUILD_UNIT_TESTS=TRUE $OPTIONS ../ + +#build it +make $MAKE_OPTIONS + +#build the unit tests +make $MAKE_OPTIONS unittests + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests Release version" +echo "======================================================================" +echo -e "${NC}" + +cd Build + +#execute tests +./unittests --gtest_color=yes --gtest_output=xml + +cd .. +cd .. + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Building Debug version" +echo "======================================================================" +echo -e "${NC}" + + +if [ ! -d build-debug-$BUILDPATH-Vector-Checks ]; then + mkdir build-debug-$BUILDPATH-Vector-Checks +fi + +cd build-debug-$BUILDPATH-Vector-Checks + +cmake -DCMAKE_BUILD_TYPE=Debug -DHEXEX_BUILD_UNIT_TESTS=TRUE $OPTIONS ../ + +#build it +make $MAKE_OPTIONS + +#build the unit tests +make $MAKE_OPTIONS unittests + +echo -e "${OUTPUT}" +echo "" +echo "======================================================================" +echo "Running unittests Debug version" +echo "======================================================================" +echo -e "${NC}" + + +cd Build + +#execute tests +./unittests --gtest_color=yes --gtest_output=xml + +cd .. +cd ..