language: C matrix: include: - os: linux sudo: false compiler: gcc before_script: - pip install --user cpp-coveralls after_success: - coveralls --build-root build --include src --include tests --gcov-options '\-lp' - os: linux sudo: required # to prevent fail of executables build with clang and sanitizers compiler: clang env: CC=clang # Linux / GCC - os: linux sudo: false compiler: gcc env: - FORT_C_COMPILER=gcc-4.9 - FORT_CXX_COMPILER=g++-4.9 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-4.9'] - os: linux sudo: false compiler: gcc env: - FORT_C_COMPILER=gcc-5 - FORT_CXX_COMPILER=g++-5 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-5'] - os: linux sudo: false compiler: gcc env: - FORT_C_COMPILER=gcc-6 - FORT_CXX_COMPILER=g++-6 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6'] - os: linux sudo: required compiler: gcc env: - FORT_C_COMPILER=gcc-7 - FORT_CXX_COMPILER=g++-7 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-7'] - os: linux sudo: required compiler: gcc env: - FORT_C_COMPILER=gcc-8 - FORT_CXX_COMPILER=g++-8 addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-8', 'cppcheck'] # OSX / Clang - os: osx osx_image: xcode7.3 env: CC=clang - os: osx osx_image: xcode8.3 env: CC=clang - os: osx osx_image: xcode9.3 env: CC=clang script: # Check library file was generated - python amalgamate.py -o dummy.c - wc dummy.c - wc lib/fort.c - diff dummy.c lib/fort.c - rm dummy.c # make sure CC is correctly set - if [[ "${FORT_C_COMPILER}" != "" ]]; then export CC=${FORT_C_COMPILER}; export CXX=${FORT_CXX_COMPILER}; fi # cppcheck run - if [[ "${FORT_C_COMPILER}" = "gcc-8" ]]; then cppcheck lib fi # Print all environment variables to aid in CI development - printenv # Print version and available CMake generators to aid in CI development - cmake --version # Perform out-of-source build(CMake backend generation, build, and test) # Test build without optimizations and with asan - mkdir -p build - cd build - cmake .. -DFORT_BUILD_TYPE=asan - cmake --build . --target all - ls - ./libfort_example - ./libfort_test_dev - ./libfort_test # Test without WCHAR support - cd .. - rm -r build/* - mkdir -p build - cd build - cmake .. -DFORT_ENABLE_WCHAR=OFF - cmake --build . --target all - ls - ./libfort_example - ./libfort_test_dev - ./libfort_test # Test build without optimizations and with ubsan - | if [ "${CC}" = 'gcc-7' ]; then cd .. ; rm -r build/* ; cd build ; cmake .. -DFORT_BUILD_TYPE=ubsan ; cmake --build . --target all ; ls ; ./libfort_example ; ./libfort_test_dev ; ./libfort_test ; fi # Astyle Format - | if [ "${CC}" = 'gcc' ]; then ls cd .. ; rm -r build/* ; cd build ; cmake .. -DFORT_ENABLE_ASTYLE=ON ; make ; make format ; cd .. ; if [[ -n $(git diff) ]]; then echo "You must run make format before submitting a pull request" ; echo "" ; git diff ; exit -1 ; fi cd build ; rm -rf external fi # Clang static analyzer - | if [ "${CC}" = 'clang' ]; then cd .. ; pwd ; ls ; rm -rf build/* ; cd build ; cmake .. ; scan-build make ; fi # Build for coveralls (should be the last) - | if [ "${CC}" = 'gcc' ]; then cd .. ; rm -r build/* ; cd build ; cmake .. -DFORT_BUILD_TYPE=coveralls ; cmake --build . --target all ; ls ; ./libfort_test_dev ; fi - cd ..