summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: bde65adc9d1314c14a0d1db32c040934482edfca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
language: c
os: linux

jobs:
  include:
  - arch: arm64
    compiler: clang
    env:
    - CFLAGS_EXTRA="-O0"
    - CONF_OPTIONS="--enable-assertions"

before_install:
- if [[ "$CPPCHECK_ENABLE" != "" ]]; then
    CPPCHECK_VER=main;
    git clone --depth=3 https://github.com/danmar/cppcheck.git
            ~/cppcheck -b $CPPCHECK_VER;
    make --directory ~/cppcheck -j8 CXXFLAGS="-O3 -march=native -D NDEBUG";
  fi
- if [[ "$CROSS_GCC_VER" != "" ]]; then
    if [[ "$NOLIBC_DELIM" == "" ]]; then NOLIBC_DELIM=-; fi;
    BUILD_ARCH=x86_64;
    KERNEL_ORG_PUB_SITE=https://www.kernel.org/pub;
    TAR_FOLDER_URL=$KERNEL_ORG_PUB_SITE/tools/crosstool/files/bin/$BUILD_ARCH/$CROSS_GCC_VER;
    TARFILE=$BUILD_ARCH-gcc-$CROSS_GCC_VER-nolibc$NOLIBC_DELIM$NOLIBC_ARCH_ABI.tar.xz;
    wget --no-check-certificate -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 [[ "$AUTOMAKE_VER" != "" || "$LIBTOOL_VER" != "" || "$M4_VER" != "" ]]; then
    GNUTOOLS_ROOT=`pwd`/../gnu-tools;
    export PATH=$GNUTOOLS_ROOT/bin:$PATH;
    GNU_DOWNLOAD_SITE=https://ftp.gnu.org/gnu;
  fi
- if [[ "$M4_VER" != "" ]]; then
    M4_XZ_URL=$GNU_DOWNLOAD_SITE/m4/m4-$M4_VER.tar.xz;
    wget -O - $M4_XZ_URL | tar xf - --xz --directory ~;
    (cd ~/m4-$M4_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j check && make install);
  fi
- if [[ "$LIBTOOL_VER" != "" ]]; then
    LIBTOOL_XZ_URL=$GNU_DOWNLOAD_SITE/libtool/libtool-$LIBTOOL_VER.tar.xz;
    wget -O - $LIBTOOL_XZ_URL | tar xf - --xz --directory ~;
    (cd ~/libtool-$LIBTOOL_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
  fi
- if [[ "$AUTOMAKE_VER" != "" ]]; then
    AUTOMAKE_XZ_URL=$GNU_DOWNLOAD_SITE/automake/automake-$AUTOMAKE_VER.tar.xz;
    wget -O - $AUTOMAKE_XZ_URL | tar xf - --xz --directory ~;
    (cd ~/automake-$AUTOMAKE_VER && ./configure --prefix=$GNUTOOLS_ROOT && make -j && make install);
  fi
- if [[ "$MAKEFILE_TARGET" == "dist"* ]]; then
    autoconf --version;
    automake --version;
    m4 --version;
    libtool --version || true;
  fi
- if [[ "$MAKEFILE_TARGET" == "" ]]; then MAKEFILE_TARGET=check; fi

install:
- if [[ "$CMAKE_CONFIG" == "" ]]; then
    ./autogen.sh;
  fi
- if [[ "$REPORT_COVERAGE" == true ]]; then gem install coveralls-lcov; fi

script:
- if [[ "$CMAKE_CONFIG" == "" && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
    ./configure $CONF_OPTIONS --enable-werror;
  fi
- if [[ "$CSA_CHECK" != true && "$CMAKE_CONFIG" == ""
        && "$CPPCHECK_ENABLE" == "" && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
    cat src/config.h;
  fi
- if [[ "$CROSS_GCC_VER" != "" ]]; then CC=$CROSS_CC; fi
- if [[ "$CMAKE_CONFIG" == "" && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
    make -j $MAKEFILE_TARGET CC=$CC CFLAGS_EXTRA="$CFLAGS_EXTRA"
            LDFLAGS="$LDFLAGS"
    && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check  && make -j check && make -j check && make -j check && make -j check && make -j check;
  fi
- if [[ "$CMAKE_CONFIG" != "" ]]; then
    cmake $CMAKE_OPTIONS -Dbuild_tests=ON -Denable_werror=ON
          -Werror=deprecated . &&
    cmake --build . --config $CMAKE_CONFIG;
  fi
- if [[ "$CMAKE_CONFIG" != "" ]]; then
    ctest --build-config $CMAKE_CONFIG -V;
  fi
- if [[ "$CC_FOR_CHECK" != "" ]]; then
    make check CC=$CC_FOR_CHECK CFLAGS_EXTRA="$CFLAGS_EXTRA";
  fi
- if [ -f tests/test_atomic.log ]; then cat tests/test_atomic*.log; fi
- if [ -f tests/test_stack.log ]; then cat tests/test_stack.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 -D CPPCHECK -I src
        $CPPCHECK_ENABLE src/*.c tests/test_malloc.c tests/test_stack.c;
  fi
- if [[ "$TESTS_CUSTOM_RUN" == true ]]; then
    ASAN_OPTIONS="detect_leaks=1" 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;
    bash <(curl -s https://codecov.io/bash);
  fi

deploy:
  provider: releases
  edge: true
  file: libatomic_ops-*.tar.gz
  file_glob: true
  on:
    condition: $MAKEFILE_TARGET = distcheck
    repo: ivmai/libatomic_ops
    tags: true