language: c matrix: include: - os: linux compiler: clang - os: linux compiler: gcc - os: osx - os: linux env: [ COVERITY_SCAN_BRANCH=1 ] addons: coverity_scan: project: name: ivmai/libatomic_ops version: 7.5.0 description: The atomic_ops library branch_pattern: master build_command_prepend: ./configure build_command: make -j check CFLAGS_EXTRA="-D LINT2 -march=native" - os: linux compiler: clang env: - CFLAGS_EXTRA="-O3 -march=native" - CONF_OPTIONS="--enable-assertions" - os: linux compiler: gcc env: - CFLAGS_EXTRA="-O3 -march=native" - CONF_OPTIONS="--enable-assertions" - os: osx env: - CFLAGS_EXTRA="-O3 -march=native" - CONF_OPTIONS="--enable-assertions" - os: linux compiler: clang dist: trusty env: [ CFLAGS_EXTRA="-march=native -std=c11" ] - os: linux compiler: gcc env: [ CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2 -std=c89" ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } compiler: clang env: - CFLAGS_EXTRA="-m32 -march=native" - CONF_OPTIONS="--enable-assertions" - os: linux addons: { apt: { packages: [ gcc-multilib ] } } compiler: gcc env: - CFLAGS_EXTRA="-m32 -march=native" - CONF_OPTIONS="--enable-assertions" - os: osx env: - CFLAGS_EXTRA="-m32 -march=native -D _FORTIFY_SOURCE=2" - CONF_OPTIONS="--enable-assertions" - os: linux addons: apt: packages: [ clang-4.0 ] sources: [ llvm-toolchain-trusty-4.0 ] compiler: clang-4.0 dist: trusty env: [ CFLAGS_EXTRA="-O3 -march=native -std=c11" ] - os: linux addons: apt: packages: [ clang-4.0, gcc-multilib ] sources: [ llvm-toolchain-trusty-4.0 ] compiler: clang-4.0 dist: trusty env: [ CFLAGS_EXTRA="-m32 -O3 -march=native" ] - os: linux addons: apt: packages: [ gcc-5 ] sources: [ ubuntu-toolchain-r-test ] compiler: gcc-5 dist: trusty env: [ CFLAGS_EXTRA="-O3 -march=native" ] - os: linux addons: apt: packages: [ gcc-5, gcc-5-multilib ] sources: [ ubuntu-toolchain-r-test ] compiler: gcc-5 dist: trusty env: [ CFLAGS_EXTRA="-m32 -O3 -march=native" ] - os: linux addons: apt: packages: [ gcc-5, gcc-5-multilib ] sources: [ ubuntu-toolchain-r-test ] compiler: gcc-5 dist: trusty env: - CFLAGS_EXTRA="-mx32 -march=native -D _FORTIFY_SOURCE=2" - CONF_OPTIONS="--enable-assertions --enable-shared" - os: linux addons: apt: packages: [ gcc-5, gcc-5-multilib ] sources: [ ubuntu-toolchain-r-test ] compiler: gcc-5 dist: trusty env: - CFLAGS_EXTRA="-mx32 -march=native" - CONF_OPTIONS="--disable-atomic-intrinsics" - os: linux compiler: clang env: - CFLAGS_EXTRA="-fsanitize=address -fno-common -fno-omit-frame-pointer" - os: linux compiler: clang env: - CFLAGS_EXTRA="-fsanitize=memory,undefined -march=native -fno-omit-frame-pointer" - MSAN_OR_UBSAN=true sudo: required - os: linux compiler: clang env: - CONF_OPTIONS="--disable-atomic-intrinsics" - CFLAGS_EXTRA="-march=native" - os: linux addons: { apt: { packages: [ lcov ] } } compiler: gcc env: - CONF_OPTIONS="--enable-gcov --enable-shared" - REPORT_COVERAGE=true - CFLAGS_EXTRA="-march=native -D DEBUG_RUN_ONE_TEST -D VERBOSE" - os: linux env: - CPPCHECK_ENABLE="-j16 -q --enable=information,performance,portability,style,warning" - MAKEFILE_TARGET=all sudo: required - os: linux env: - CPPCHECK_ENABLE="-q --enable=unusedFunction -D AO_TEST_EMULATION" - MAKEFILE_TARGET=all sudo: required - os: linux addons: apt: packages: [ clang-4.0 ] sources: [ llvm-toolchain-trusty-4.0 ] compiler: clang-4.0 dist: trusty env: - CSA_CHECK=true - MAKEFILE_TARGET=all - CFLAGS_EXTRA="-D AO_TRACE_MALLOC -D VERBOSE" - os: linux addons: { apt: { packages: [ musl-tools ] } } compiler: musl-gcc dist: trusty env: - CFLAGS_EXTRA="-march=native" - CONF_OPTIONS="--enable-assertions" - os: linux addons: { apt: { packages: [ gcc-mingw-w64 ] } } compiler: x86_64-w64-mingw32-gcc dist: trusty env: - CONF_OPTIONS="--host=x86_64-w64-mingw32 --enable-shared" - MAKEFILE_TARGET=all - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=aarch64-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=alpha-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=arm-unknown-linux-gnueabi ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.2.4, NOLIBC_ARCH_ABI=avr32-linux, CFLAGS_EXTRA="-fno-strict-aliasing" ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.6.3, NOLIBC_ARCH_ABI=cris-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=hppa-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=ia64-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=m68k-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=mips-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=mips64-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=powerpc-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=powerpc64-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=ppc64le-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=s390x-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.6.3, NOLIBC_ARCH_ABI=sh4-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=sparc-linux, CFLAGS_EXTRA="-D AO_NO_SPARC_V9" ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=sparc64-linux ] - os: linux addons: { apt: { packages: [ gcc-multilib ] } } env: [ CROSS_GCC_VER=4.6.2, NOLIBC_ARCH_ABI=tilegx-linux ] before_install: - if [[ "$CPPCHECK_ENABLE" != "" ]]; then git clone --depth=3 https://github.com/danmar/cppcheck.git ~/cppcheck -b master; make --directory ~/cppcheck -j CXXFLAGS="-O3 -march=native -D NDEBUG"; elif [[ "$CROSS_GCC_VER" != "" ]]; then BUILD_ARCH=x86_64; TAR_FOLDER_URL=https://www.kernel.org/pub/tools/crosstool/files/bin/$BUILD_ARCH/$CROSS_GCC_VER; TARFILE=$BUILD_ARCH-gcc-$CROSS_GCC_VER-nolibc_$NOLIBC_ARCH_ABI.tar.xz; wget -O - $TAR_FOLDER_URL/$TARFILE | tar xf - --xz --directory ~; CROSS_CC=~/gcc-$CROSS_GCC_VER-nolibc/$NOLIBC_ARCH_ABI/bin/$NOLIBC_ARCH_ABI-gcc; export C_INCLUDE_PATH=/usr/include; MAKEFILE_TARGET=check-nolink; fi - if [[ "$MAKEFILE_TARGET" == "" ]]; then MAKEFILE_TARGET=check; fi install: - ./autogen.sh - if [[ "$REPORT_COVERAGE" == true ]]; then gem install coveralls-lcov; fi script: - if [[ "$COVERITY_SCAN_BRANCH" != 1 ]]; then ./configure $CONF_OPTIONS --enable-werror; fi - if [[ "$CSA_CHECK" != true && "$CPPCHECK_ENABLE" == "" && "$COVERITY_SCAN_BRANCH" != 1 ]]; then cat src/config.h; fi - if [[ "$CROSS_GCC_VER" != "" ]]; then CC=$CROSS_CC; fi - if [[ "$COVERITY_SCAN_BRANCH" != 1 ]]; then make -j $MAKEFILE_TARGET CC=$CC CFLAGS_EXTRA="$CFLAGS_EXTRA"; fi - if [ -f tests/test_atomic.log ]; then cat tests/test_atomic*.log; fi - if [[ "$CSA_CHECK" == true ]]; then ${CC} --analyze -Xanalyzer -analyzer-output=text -Werror -I src $CFLAGS_EXTRA tests/*.c src/*.c; fi - if [[ "$CPPCHECK_ENABLE" != "" ]]; then ~/cppcheck/cppcheck -f --error-exitcode=2 -U long -D CPPCHECK -I src $CPPCHECK_ENABLE tests/*.c src/*.c; fi - if [[ "$MSAN_OR_UBSAN" == true ]]; then UBSAN_OPTIONS="halt_on_error=1" make -C tests check-without-test-driver; fi after_success: - if [[ "$REPORT_COVERAGE" == true ]]; then lcov --capture --directory src --directory tests --output-file coverage.info; lcov --remove coverage.info '/usr/*' 'tests/*' --output-file coverage.info; lcov --list coverage.info; coveralls-lcov --repo-token ${COVERALLS_TOKEN} coverage.info; fi