Travis add mingw
[openjpeg.git] / tools / travis-ci / run.sh
index 36bcc0d45ed70d72bb25b13841759f49053dd844..7d056100a436a63f06a9d2c45b8d06b3d9707210 100755 (executable)
@@ -8,9 +8,14 @@ set -o errexit   ## set -e : exit the script if any statement returns a non-true
 set -o pipefail  ## Fail on error in pipe
 
 # Set-up some variables
+if [ "${OPJ_CI_BUILD_CONFIGURATION:-}" == "" ]; then
+       export OPJ_CI_BUILD_CONFIGURATION=Release #default
+fi
 OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd)
 
-OPJ_DO_SUBMIT=0 # Do not flood cdash
+if [ "${OPJ_DO_SUBMIT:-}" == "" ]; then
+       OPJ_DO_SUBMIT=0 # Do not flood cdash by default
+fi
 if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then
        OPJ_OWNER=$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/')
        OPJ_SITE="${OPJ_OWNER}.travis-ci.org"
@@ -47,15 +52,31 @@ elif [ "${TRAVIS_OS_NAME}" == "linux" ]; then
        if which lsb_release > /dev/null; then
                OPJ_OS_NAME=$(lsb_release -si)$(lsb_release -sr | sed 's/\([^0-9]*\.[0-9]*\).*/\1/')
        fi
-       if [ "${CC}" == "gcc" ]; then
-               OPJ_CC_VERSION=gcc$(${CC} --version | head -1 | sed 's/.*\ \([0-9.]*[0-9]\)/\1/')
-       elif [ "${CC}" == "clang" ]; then
+       if [ -z "${CC##*gcc*}" ]; then
+               OPJ_CC_VERSION=$(${CC} --version | head -1 | sed 's/.*\ \([0-9.]*[0-9]\)/\1/')
+               if [ -z "${CC##*mingw*}" ]; then
+                       OPJ_CC_VERSION=mingw${OPJ_CC_VERSION}
+                       # disable testing for now
+                       export OPJ_CI_SKIP_TESTS=1
+               else
+                       OPJ_CC_VERSION=gcc${OPJ_CC_VERSION}
+               fi
+       elif [ -z "${CC##*clang*}" ]; then
                OPJ_CC_VERSION=clang$(${CC} --version | grep version | sed 's/.*version \([^0-9.]*[0-9.]*\).*/\1/')
        else
-               echo "Compiler not supported: ${CC}"
+               echo "Compiler not supported: ${CC}"; exit 1
        fi
 else
-       echo "OS not supported: ${TRAVIS_OS_NAME}"
+       echo "OS not supported: ${TRAVIS_OS_NAME}"; exit 1
+fi
+
+if [ "${OPJ_CI_ARCH:-}" == "" ]; then
+       echo "Guessing build architecture"
+       MACHINE_ARCH=$(uname -m)
+       if [ "${MACHINE_ARCH}" == "x86_64" ]; then
+               export OPJ_CI_ARCH=x86_64
+       fi
+       echo "${OPJ_CI_ARCH}"
 fi
 
 if [ "${TRAVIS_BRANCH:-}" == "" ]; then
@@ -63,13 +84,16 @@ if [ "${TRAVIS_BRANCH:-}" == "" ]; then
        TRAVIS_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') #default to master
 fi
 
-OPJ_BUILDNAME=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${TRAVIS_BRANCH}
+OPJ_BUILDNAME=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH}-${TRAVIS_BRANCH}
 if [ "${TRAVIS_PULL_REQUEST:-}" != "false" ] && [ "${TRAVIS_PULL_REQUEST:-}" != "" ]; then
        OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${TRAVIS_PULL_REQUEST}
 fi
-OPJ_BUILDNAME=${OPJ_BUILDNAME}-Release-3rdP
+OPJ_BUILDNAME=${OPJ_BUILDNAME}-${OPJ_CI_BUILD_CONFIGURATION}-3rdP
+if [ "${OPJ_CI_ASAN:-}" == "1" ]; then
+       OPJ_BUILDNAME=${OPJ_BUILDNAME}-ASan
+fi
 
-if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ] && [ -d kdu ]; then
+if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ] && [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ] && [ -d kdu ]; then
        echo "
 Testing will use Kakadu trial binaries. Here's the copyright notice from kakadu:
 Copyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney.
@@ -79,18 +103,19 @@ Note: Binaries can only be used for non-commercial purposes.
 "
 fi
 
-set -x
-if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ] && [ -d kdu ]; then
-       if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
-               export LD_LIBRARY_PATH=${PWD}/kdu:${LD_LIBRARY_PATH}
-       fi
-       export PATH=${PWD}/kdu:${PATH}
+if [ -d cmake-install ]; then
+       export PATH=${PWD}/cmake-install/bin:${PATH}
 fi
 
-mkdir build
-cd build
-cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_CODEC=ON -DBUILD_THIRDPARTY=ON -DBUILD_TESTING=ON -DOPJ_DATA_ROOT=${PWD}/../data -DJPYLYZER_EXECUTABLE=${PWD}/../jpylyzer/jpylyzer/jpylyzer.py -DSITE=${OPJ_SITE} -DBUILDNAME=${OPJ_BUILDNAME} ${OPJ_SOURCE_DIR}
-ctest -D ExperimentalStart
-ctest -D ExperimentalBuild -V
-ctest -D ExperimentalTest -j2 || true
-ctest -D ExperimentalSubmit || true
+set -x
+# This will print configuration
+# travis-ci doesn't dump cmake version in system info, let's print it 
+cmake --version
+
+export OPJ_SITE=${OPJ_SITE}
+export OPJ_BUILDNAME=${OPJ_BUILDNAME}
+export OPJ_SOURCE_DIR=${OPJ_SOURCE_DIR}
+export OPJ_BUILD_CONFIGURATION=${OPJ_CI_BUILD_CONFIGURATION}
+export OPJ_DO_SUBMIT=${OPJ_DO_SUBMIT}
+
+ctest -S ${OPJ_SOURCE_DIR}/tools/ctest_scripts/travis-ci.cmake -V