.travis.yml: add a configuration to test compilation of AVX2 (but disable tests since...
[openjpeg.git] / .travis.yml
1 language: cpp
2
3 matrix:
4   include:
5 # OSX
6     - os: osx
7       compiler: clang
8       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1
9
10 # Test code style
11     - os: linux
12       compiler: clang-3.8
13       env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_CHECK_STYLE=1 OPJ_CI_SKIP_TESTS=1
14       addons:
15         apt:
16           sources:
17             - llvm-toolchain-precise-3.8
18             - ubuntu-toolchain-r-test
19           packages:
20             - clang-3.8
21             - flip
22
23 # Performance test with GCC
24     - os: linux
25       compiler: g++
26       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1 OPJ_CI_PERF_TESTS=1
27
28 # Test compilation with AVX2
29     - os: linux
30       compiler: clang-3.8
31       # skip tests since Travis doesn't have AVX2 compatible machines
32       env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_INSTRUCTION_SETS="-mavx2" OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_SKIP_TESTS=1
33       addons:
34         apt:
35           sources:
36             - llvm-toolchain-precise-3.8
37             - ubuntu-toolchain-r-test
38           packages:
39             - clang-3.8
40
41 # Test multi-threading
42     - os: linux
43       compiler: g++
44       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2
45
46 # Test 32-bit compilation
47     - os: linux
48       compiler: g++
49       env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
50       addons:
51         apt:
52           packages:
53             - gcc-multilib
54             - g++-multilib
55
56 # Profile code (gcc -pg)
57     - os: linux
58       compiler: g++
59       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_PROFILE=1
60       addons:
61         apt:
62           packages:
63             - valgrind
64
65 # Test under ASAN
66     - os: linux
67       compiler: clang
68       env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
69
70 # Test with CLang 3.8
71     - os: linux
72       compiler: clang-3.8
73       env: OPJ_CI_CC=clang-3.8 OPJ_CI_CXX=clang-3.8 OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_PERF_TESTS=1
74       addons:
75         apt:
76           sources:
77             - llvm-toolchain-precise-3.8
78             - ubuntu-toolchain-r-test
79           packages:
80             - clang-3.8
81
82 # Test with mingw 32 bit
83     - os: linux
84       compiler: x86_64-w64-mingw32-g++
85       env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
86       addons:
87         apt:
88           packages:
89             - gcc-mingw-w64-base
90             - binutils-mingw-w64-i686
91             - gcc-mingw-w64-i686
92             - gcc-mingw-w64      
93             - g++-mingw-w64-i686
94             - gcc-multilib
95             - g++-multilib
96
97 # Test with mingw 64 bit
98     - os: linux
99       compiler: x86_64-w64-mingw32-g++
100       env: OPJ_CI_CC=x86_64-w64-mingw32-gcc OPJ_CI_CXX=x86_64-w64-mingw32-g++ OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
101       addons:
102         apt:
103           packages:
104             - gcc-mingw-w64-base
105             - binutils-mingw-w64-x86-64
106             - gcc-mingw-w64-x86-64
107             - gcc-mingw-w64
108             - g++-mingw-w64-x86-64
109
110 # Test with gcc 4.8
111     - os: linux
112       compiler: g++-4.8
113       env: OPJ_CI_CC=gcc-4.8 OPJ_CI_CXX=g++-4.8 OPJ_CI_ABI_CHECK=1
114       addons:
115         apt:
116           sources:
117             - ubuntu-toolchain-r-test
118           packages:
119             - gcc-4.8
120             - g++-4.8
121             - libelf-dev
122             - elfutils
123             - texinfo
124             - exuberant-ctags
125
126 install:
127   - ./tools/travis-ci/install.sh
128
129 script:
130   - ./tools/travis-ci/run.sh
131   - ./tools/travis-ci/abi-check.sh
132
133 before_deploy:
134   - export OPJ_RELEASE_PKG_FILE=$(ls build/openjpeg-${TRAVIS_TAG}*)
135   - echo "deploying $OPJ_RELEASE_PKG_FILE to GitHub releases"
136
137 deploy:
138   provider: releases
139   api_key:
140     secure: Npi13uOffALCVNwea4p4q8v85Lo/WsRqaeZQcWrAkt8MxRnfvWQtmnuwmHnVB6Cig+T1lVUHrklOaJIApIb6nkGq3CS/9bD8+SCS2NEdAAP/QYWnBi0ubWXVMRyDLypmwRpzLNSZ0xLYGFUl2PjieZYKRcz1dd/J7S+FnXhPtdjXweq0FS63zTcMe7ggjfmzSOWUCEFmMjZPaM0Be+3PweieCO1dxlHuy7ugCkx2S7d+5hNsicIhQmTADjqtJAkHoMhYqu6/yLFxhjO/+f938PATFULdODTvjCsUwdN/ySWi1Oj4uPAntfytZP7H6YrzLh8dS73QCsdkhhDJIgJskHIBSbRyyEVUnOvQgD9VaBVGHtc1KtZQTwc41OUO3BGPHl97s3oX6bqWqo/L53dB3TPHGx+1+2HL/F0zaDZuHhAKMkPwe8LFPMPB/ur65zXMHjnWb2ZTVVdoIvkbQ7nu8ApI60ejxocYBsEyAuC2CPXU2ki4jdEhm0E1hIziWNE9/LTuM17ziQuJ6WpXOSMrfP4o5aVDmLp5ZGBSocrspOksgyI9XogHaO/r+Y6N3exy+giObFfMHkZVUpsKrKmtOJ7TC1Vg5HsYGlWW8RN8dkJV47bUXm9K4sMos9eYMUt/czykPAs+132cogpII3QxXpFZQqZg6SEPVfOiyqQzTUI=
141   file_glob: true
142   file: "${OPJ_RELEASE_PKG_FILE}"
143   skip_cleanup: true
144   on:
145     repo: uclouvain/openjpeg
146     tags: true
147     condition: "$OPJ_CI_INCLUDE_IF_DEPLOY = 1"
148