Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
261 changes: 230 additions & 31 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,241 @@
sudo: false
language: cpp
sudo: false

cache:
ccache: true
directories:
- $HOME/.ccache

env:
global:
- USE_CCACHE=1
- CCACHE_COMPRESS=1
- CCACHE_MAXSIZE=200M
- CCACHE_CPP2=1
- PYTHON_PACKAGES="pip setuptools pytest cffi pep8 cpp-coveralls"
os:
- linux
- osx
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.9
- g++-4.9
- gfortran-4.9
- valgrind
- cmake
- libblas-dev
- libblas3gf
before_install:
- if test ${TRAVIS_OS_NAME} = osx; then brew update; fi
- if test ${TRAVIS_OS_NAME} = osx; then brew outdated xctool || brew upgrade xctool; fi
- if test ${TRAVIS_OS_NAME} = osx; then brew unlink gcc; fi
- if test ${TRAVIS_OS_NAME} = osx; then brew install python valgrind gcc; fi
- if test ${TRAVIS_OS_NAME} = osx; then brew linkapps python; fi

matrix:
include:

# 1/ Linux Clang Builds
- os: linux
compiler: clang
addons: &clang35
apt:
sources: ['llvm-toolchain-precise-3.5', 'ubuntu-toolchain-r-test']
packages: ['clang-3.5', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran']
env: CXX_COMPILER='clang++-3.5' C_COMPILER='clang-3.5' Fortran_COMPILER='gfortran' BUILD_TYPE='release'

- os: linux
compiler: clang
addons: *clang35
env: CXX_COMPILER='clang++-3.5' C_COMPILER='clang-3.5' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'


- os: linux
compiler: clang
addons: &clang36
apt:
sources: ['llvm-toolchain-precise-3.6', 'ubuntu-toolchain-r-test']
packages: ['clang-3.6', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran']
env: CXX_COMPILER='clang++-3.6' C_COMPILER='clang-3.6' Fortran_COMPILER='gfortran' BUILD_TYPE='release'

- os: linux
compiler: clang
addons: *clang36
env: CXX_COMPILER='clang++-3.6' C_COMPILER='clang-3.6' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'


- os: linux
compiler: clang
addons: &clang37
apt:
sources: ['llvm-toolchain-precise-3.7', 'ubuntu-toolchain-r-test']
packages: ['clang-3.7', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran']
env: CXX_COMPILER='clang++-3.7' C_COMPILER='clang-3.7' Fortran_COMPILER='gfortran' BUILD_TYPE='release'

- os: linux
compiler: clang
addons: *clang37
env: CXX_COMPILER='clang++-3.7' C_COMPILER='clang-3.7' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'


- os: linux
compiler: clang
addons: &clang38
apt:
sources: ['llvm-toolchain-precise', 'ubuntu-toolchain-r-test']
packages: ['clang-3.8', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran']
env: CXX_COMPILER='clang++-3.8' C_COMPILER='clang-3.8' Fortran_COMPILER='gfortran' BUILD_TYPE='release'

- os: linux
compiler: clang
addons: *clang38
env: CXX_COMPILER='clang++-3.8' C_COMPILER='clang-3.8' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'


# 2/ Linux GCC Builds
- os: linux
compiler: gcc
addons: &gcc46
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.6', 'gcc-4.6', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran-4.6']
env: CXX_COMPILER='g++-4.6' C_COMPILER='gcc-4.6' Fortran_COMPILER='gfortran-4.6' BUILD_TYPE='release'

- os: linux
compiler: gcc
addons: *gcc46
env: CXX_COMPILER='g++-4.6' C_COMPILER='gcc-4.6' Fortran_COMPILER='gfortran-4.6' BUILD_TYPE='debug'


- os: linux
compiler: gcc
addons: &gcc47
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.7', 'gcc-4.7', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran-4.7']
env: CXX_COMPILER='g++-4.7' C_COMPILER='gcc-4.7' Fortran_COMPILER='gfortran-4.7' BUILD_TYPE='release'

- os: linux
compiler: gcc
addons: *gcc47
env: CXX_COMPILER='g++-4.7' C_COMPILER='gcc-4.7' Fortran_COMPILER='gfortran-4.7' BUILD_TYPE='debug'


- os: linux
compiler: gcc
addons: &gcc48
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8', 'gcc-4.8', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran-4.8']
env: CXX_COMPILER='g++-4.8' C_COMPILER='gcc-4.8' Fortran_COMPILER='gfortran-4.8' BUILD_TYPE='release'

- os: linux
compiler: gcc
addons: *gcc48
env: CXX_COMPILER='g++-4.8' C_COMPILER='gcc-4.8' Fortran_COMPILER='gfortran-4.8' BUILD_TYPE='debug'


- os: linux
compiler: gcc
addons: &gcc49
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.9', 'gcc-4.9', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran-4.9']
env: CXX_COMPILER='g++-4.9' C_COMPILER='gcc-4.9' Fortran_COMPILER='gfortran-4.9' BUILD_TYPE='release'

- os: linux
compiler: gcc
addons: *gcc49
env: CXX_COMPILER='g++-4.9' C_COMPILER='gcc-4.9' Fortran_COMPILER='gfortran-4.9' BUILD_TYPE='debug'


- os: linux
compiler: gcc
addons: &gcc5
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'gcc-5', 'valgrind', 'libblas-dev', 'libblas3gf', 'gfortran-5']
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='release'

- os: linux
compiler: gcc
addons: *gcc5
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='debug'


# 3/ OSX Clang Builds
- os: osx
osx_image: xcode6.4
compiler: clang
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'

- os: osx
osx_image: xcode6.4
compiler: clang
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='release'


- os: osx
osx_image: xcode7
compiler: clang
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'

- os: osx
osx_image: xcode7
compiler: clang
env: CXX_COMPILER='clang++' C_COMPILER='clang' Fortran_COMPILER='gfortran' BUILD_TYPE='release'


# 4/ OSX GCC5 Builds
- os: osx
osx_image: xcode6.4
compiler: gcc
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'

- os: osx
osx_image: xcode6.4
compiler: gcc
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='release'


- os: osx
osx_image: xcode7
compiler: gcc
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='debug'

- os: osx
osx_image: xcode7
compiler: gcc
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran' BUILD_TYPE='release'


# 5/ Linux GCC5 Coverage build
- os: linux
compiler: gcc
addons: *gcc5
env: CXX_COMPILER='g++-5' C_COMPILER='gcc-5' Fortran_COMPILER='gfortran-5' BUILD_TYPE='debug' COVERAGE=true

install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}
- |
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz"
mkdir cmake && travis_retry wget --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
export PATH=${DEPS_DIR}/cmake/bin:${PATH}
pip install --upgrade ${PYTHON_PACKAGES} --user `whoami`
elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
brew install cmake boost python gcc valgrind
pip install --upgrade ${PYTHON_PACKAGES}
fi

before_script:
- cd ${TRAVIS_BUILD_DIR}
- export CXX=${CXX_COMPILER}
- export CC=${C_COMPILER}
- export FC=${Fortran_COMPILER}
- export PATH=$HOME/.local/bin:/usr/local/bin:/usr/bin:$PATH
- if test ${TRAVIS_OS_NAME} = linux;
then pip install --upgrade ${PYTHON_PACKAGES} --user `whoami`;
else sudo pip install --upgrade ${PYTHON_PACKAGES}; fi
script:
- if test ${TRAVIS_OS_NAME} = linux; then python setup.py --cc=gcc --cxx=g++ --fc=gfortran-4.9 --coverage --type=debug;
else python setup.py --cc=gcc --cxx=g++ --fc=gfortran --coverage --type=debug; fi
- git submodule init
- git submodule update --init --recursive
- |
if [[ "${COVERAGE}" = true ]]; then
python setup.py --cxx=${CXX_COMPILER} --cc=${C_COMPILER} --fc=${Fortran_COMPILER} --type=${BUILD_TYPE} --cmake-options='-Hprojects/CMake' --coverage
else
python setup.py --cxx=${CXX_COMPILER} --cc=${C_COMPILER} --fc=${Fortran_COMPILER} --type=${BUILD_TYPE} --cmake-options='-Hprojects/CMake'
fi
- cd build
- make
- make test

script:
- make -j 2
- ctest -V -j 2
- cd ..
- pep8 --ignore=E501 test/test.py
- py.test -vv test/test.py build

after_success:
- coveralls -E ".*external.*" -E ".*CMakeFiles.*" -E ".*test/.*.cpp.*" -E ".*src/lebedev/.*.cpp.*"
- |
if [[ "${COVERAGE}" = true ]]; then
coveralls -E ".*external.*" -E ".*CMakeFiles.*" -E ".*test/.*.cpp.*" -E ".*src/lebedev/.*.cpp.*" || echo 'coveralls upload failed.'
fi
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ include(autocmake_cc)
include(autocmake_cxx)
include(autocmake_GNU.CXX)
include(autocmake_Intel.CXX)
include(autocmake_Clang.CXX)
include(autocmake_ccache)
include(rpath)
include(autocmake_definitions)
include(autocmake_code_coverage)
Expand Down
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,36 @@ make
make test
```

# Primary test environments

## Continuous integration builds

The Travis CI builds are triggered only when pushing to the `master` branch.
All Travis CI builds on master use ccache to speed up execution.

- Ubuntu 12.04 LTS 64-bit with Python 2.7.3 and CMake 3.3.2
this is the environment offered by [Travis CI](https://travis-ci.org) pulling
in various PPA. The following compilers are used, both in release and debug:

1. GCC 4.6
2. GCC 4.7
3. GCC 4.8
4. GCC 4.9
5. GCC 5.1, with and without coverage analysis in debug mode.
Coverage analysis performed using [Coveralls](https://coveralls.io/)
6. Clang 3.5 and GFortran 4.6
7. Clang 3.6 and GFortran 4.6
8. Clang 3.7 and GFortran 4.6
9. Clang 3.8 and GFortran 4.6

- Mac OS X 10.9.5 with Python 2.7.10 and CMake 3.2.3
this is the environment offered by [Travis CI](https://travis-ci.org)
The following compilers are used, both in release and debug:

1. XCode 6.4 with Clang and GFortran 5.2
2. XCode 6.4 with GCC 5.2
3. XCode 7.0 with Clang and GFortran 5.2
4. XCode 7.0 with GCC 5.2

# Parallelization

Expand Down
4 changes: 4 additions & 0 deletions cmake/autocmake.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ source: https://github.com/scisoft/autocmake/raw/master/modules/cxx.cmake
[flags]
source: https://github.com/scisoft/autocmake/raw/master/compilers/GNU.CXX.cmake
https://github.com/scisoft/autocmake/raw/master/compilers/Intel.CXX.cmake
https://github.com/scisoft/autocmake/raw/master/compilers/Clang.CXX.cmake

[ccache]
source: https://github.com/scisoft/autocmake/raw/master/modules/ccache.cmake

[rpath]
source: custom/rpath.cmake
Expand Down
7 changes: 7 additions & 0 deletions cmake/downloaded/autocmake_Clang.CXX.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
if(NOT DEFINED ENV{CXXFLAGS})
if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
endif()
endif()
4 changes: 2 additions & 2 deletions cmake/downloaded/autocmake_cc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
#
# docopt: --cc=<CC> C compiler [default: gcc].
# --extra-cc-flags=<EXTRA_CFLAGS> Extra C compiler flags [default: ''].
# export: 'CC=%s' % arguments['--cc']
# define: '-DEXTRA_CFLAGS="%s"' % arguments['--extra-cc-flags']
# export: 'CC="{0}"'.format(arguments['--cc'])
# define: '-DEXTRA_CFLAGS="{0}"'.format(arguments['--extra-cc-flags'])

enable_language(C)

Expand Down
27 changes: 27 additions & 0 deletions cmake/downloaded/autocmake_ccache.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#.rst:
#
# Adds ccache support.
# The user should export the appropriate environment variables to
# tweak the program's behaviour, as described in its manpage.
# Notice that some additional compiler flags might be needed in order
# to avoid unnecessary warnings.
#
# Variables defined::
#
# CCACHE_FOUND
#
# autocmake.cfg configuration::
#
# docopt: --ccache=<USE_CCACHE> Toggle use of ccache <ON/OFF> [default: ON].
# define: '-DUSE_CCACHE="{0}"'.format(arguments['--ccache'])

if(USE_CCACHE)
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
message(STATUS "Compiling with ccache")
else()
message(STATUS "ccache not available")
endif()
endif()
4 changes: 2 additions & 2 deletions cmake/downloaded/autocmake_cxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
#
# docopt: --cxx=<CXX> C++ compiler [default: g++].
# --extra-cxx-flags=<EXTRA_CXXFLAGS> Extra C++ compiler flags [default: ''].
# export: 'CXX=%s' % arguments['--cxx']
# define: '-DEXTRA_CXXFLAGS="%s"' % arguments['--extra-cxx-flags']
# export: 'CXX="{0}"'.format(arguments['--cxx'])
# define: '-DEXTRA_CXXFLAGS="{0}"'.format(arguments['--extra-cxx-flags'])

enable_language(CXX)

Expand Down
Loading