--- /dev/null
+language: c++
+
+matrix:
+ include:
+ - os: linux
+ compiler: clang
+ env:
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: osx
+ env:
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - libatomic-ops-dev
+ dist: trusty
+ env:
+ - MAKEFILE_TARGETS="distcheck"
+ - AUTOMAKE_VER=1.15
+ - M4_VER=1.4.18
+ - LIBTOOL_VER=2.4.6
+ - PKG_CONFIG_VER=0.29.2
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ env:
+ - MAKEFILE_TARGETS="dist"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - libatomic-ops-dev
+ compiler: clang
+ dist: trusty
+ env:
+ - CONF_OPTIONS="--enable-cplusplus"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - libatomic-ops-dev
+ compiler: gcc
+ dist: trusty
+ env:
+ - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-multilib
+ compiler: clang
+ env:
+ - CFLAGS_EXTRA="-m32"
+ - CONF_OPTIONS="--enable-gc-assertions"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-multilib
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-m32"
+ - CONF_OPTIONS="--enable-gc-assertions"
+ - os: osx
+ env:
+ - CFLAGS_EXTRA="-m32"
+ - CONF_OPTIONS="--enable-gc-assertions --enable-handle-fork --enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D CHECKSUMS"
+ - CONF_OPTIONS="--disable-threads --disable-munmap --enable-cplusplus"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ compiler: clang
+ env:
+ - CFLAGS_EXTRA="-D DBG_HDRS_ALL -D SHORT_DBG_HDRS"
+ - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
+ - os: osx
+ env:
+ - CFLAGS_EXTRA="-D DBG_HDRS_ALL -D SHORT_DBG_HDRS -D LINT2"
+ - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D DEBUG_ADD_DEL_ROOTS -D DEBUG_DIRTY_BITS -D DEBUG_THREADS -D GC_LOG_TO_FILE_ALWAYS"
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D DEFAULT_STACK_MAYBE_SMALL -D ENABLE_TRACE -D EMPTY_GETENV_RESULTS -D GC_ALWAYS_MULTITHREADED -D CPPCHECK"
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ compiler: clang
+ env:
+ - CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2"
+ - CONF_OPTIONS="--with-libatomic-ops=no --enable-cplusplus"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - libatomic-ops-dev
+ compiler: gcc
+ dist: trusty
+ env:
+ - CONF_OPTIONS="--with-libatomic-ops=yes --enable-gc-assertions --enable-cplusplus"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: osx
+ env:
+ - CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2 -D AO_DISABLE_GCC_ATOMICS"
+ - CONF_OPTIONS="--with-libatomic-ops=no --enable-munmap --enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D DONT_ADD_BYTE_AT_END"
+ - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-multilib
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-m32 -D MARK_BIT_PER_OBJ"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D POINTER_MASK=~0xf"
+ - CONF_OPTIONS="--enable-gc-assertions --enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CFLAGS_EXTRA="-D SMALL_CONFIG -D NO_GETENV"
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ dist: trusty
+ env:
+ - CFLAGS_EXTRA="-std=c11 -D GC_NO_SIGSETJMP"
+ - CONF_OPTIONS="--disable-threads --enable-gc-assertions --enable-cplusplus"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - lcov
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-gcov --enable-handle-fork --enable-munmap --enable-single-obj-compilation --enable-cplusplus --disable-shared --enable-gc-assertions"
+ - REPORT_COVERAGE=true
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-gc-debug --enable-cplusplus"
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--disable-gc-debug --enable-cplusplus"
+ - os: linux
+ compiler: clang
+ env:
+ - CONF_OPTIONS="--enable-large-config --enable-cplusplus"
+ - os: osx
+ env:
+ - CONF_OPTIONS="--enable-large-config --enable-cplusplus"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-multilib
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-large-config --disable-munmap"
+ - CFLAGS_EXTRA="-m32"
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-large-config --enable-munmap --enable-cplusplus"
+ - CFLAGS_EXTRA="-D LINT2"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-multilib
+ compiler: clang
+ env:
+ - CONF_OPTIONS="--enable-redirect-malloc --disable-threads"
+ - CFLAGS_EXTRA="-m32"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: osx
+ env:
+ - CONF_OPTIONS="--enable-redirect-malloc --enable-cplusplus --disable-threads"
+ - CFLAGS_EXTRA="-m32"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--enable-redirect-malloc --enable-gc-debug --enable-cplusplus --enable-gc-assertions"
+ - os: linux
+ compiler: clang
+ env:
+ - CONF_OPTIONS="--disable-static --disable-threads --enable-cplusplus"
+ - CFLAGS_EXTRA="-O3 -march=native"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: linux
+ compiler: gcc
+ env:
+ - CONF_OPTIONS="--disable-static --disable-threads --enable-cplusplus"
+ - CFLAGS_EXTRA="-O3 -march=native"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: osx
+ env:
+ - CONF_OPTIONS="--disable-static --disable-threads --enable-cplusplus"
+ - CFLAGS_EXTRA="-O3 -march=native"
+ - NO_CLONE_LIBATOMIC_OPS=true
+ - os: osx
+ env:
+ - CSA_CHECK=true
+ - CFLAGS_EXTRA="-m32"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ sources:
+ - llvm-toolchain-trusty-4.0
+ compiler: clang-4.0
+ dist: trusty
+ language: c
+ env:
+ - CSA_CHECK=true
+ - CFLAGS_EXTRA="-D ALL_INTERIOR_POINTERS -D CHECKSUMS -D DBG_HDRS_ALL -D DEBUG_THREADS -D ENABLE_TRACE -D GC_ALWAYS_MULTITHREADED -D GC_ASSERTIONS -D GC_ATOMIC_UNCOLLECTABLE -D GC_ENABLE_SUSPEND_THREAD -D GC_GCJ_SUPPORT -D GC_PRINT_BACK_HEIGHT -D GC_THREADS -D HANDLE_FORK -D JAVA_FINALIZATION -D KEEP_BACK_PTRS -D MAKE_BACK_GRAPH -D PARALLEL_MARK -D PRINT_BLACK_LIST -D THREAD_LOCAL_ALLOC -D USE_MMAP -D USE_MUNMAP"
+ - os: linux
+ env:
+ - CPPCHECK_ENABLE="-j16 --enable=information,performance,portability,style,warning extra/AmigaOS.c extra/MacOS.c extra/msvc_dbg.c extra/symbian.cpp"
+ sudo: required
+ - os: linux
+ env:
+ - CPPCHECK_ENABLE="--enable=unusedFunction"
+ sudo: required
+ - os: linux
+ compiler: clang
+ env:
+ - MAKEFILE_NAME=Makefile.direct
+ - MAKEFILE_TARGETS="check check-cpp cord/de"
+ - os: linux
+ compiler: gcc
+ env:
+ - MAKEFILE_NAME=Makefile.direct
+ - MAKEFILE_TARGETS="check check-cpp cord/de"
+ - os: osx
+ env:
+ - MAKEFILE_NAME=Makefile.direct
+ - MAKEFILE_TARGETS="check check-cpp cord/de"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - musl-tools
+ compiler: musl-gcc
+ dist: trusty
+ language: c
+ env:
+ - CONF_OPTIONS="--disable-parallel-mark --enable-gc-assertions"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ sources:
+ - llvm-toolchain-trusty-4.0
+ compiler: clang-4.0
+ dist: trusty
+ language: c
+ env:
+ - CXX=clang++-4.0
+ - CFLAGS_EXTRA="-fsanitize=address -fno-common -fno-omit-frame-pointer"
+ - CONF_OPTIONS="--enable-cplusplus"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ sources:
+ - llvm-toolchain-trusty-4.0
+ compiler: clang-4.0
+ dist: trusty
+ language: c
+ env:
+ - CFLAGS_EXTRA="-fsanitize=memory -fno-omit-frame-pointer"
+ - CONF_OPTIONS="--enable-handle-fork --enable-munmap"
+ - MSAN_OR_UBSAN=true
+ sudo: required
+ - os: linux
+ compiler: clang
+ env:
+ - CFLAGS_EXTRA="-fsanitize=undefined -fno-common -fno-omit-frame-pointer"
+ - MSAN_OR_UBSAN=true
+ - CONF_OPTIONS="--enable-cplusplus --enable-handle-fork --enable-munmap"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ sources:
+ - llvm-toolchain-trusty-4.0
+ compiler: clang-4.0
+ dist: trusty
+ language: c
+ env:
+ - CXX=clang++-4.0
+ - CFLAGS_EXTRA="-O3 -march=native"
+ - CONF_OPTIONS="--enable-cplusplus --enable-single-obj-compilation"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ - gcc-multilib
+ sources:
+ - llvm-toolchain-trusty-4.0
+ compiler: clang-4.0
+ dist: trusty
+ language: c
+ env:
+ - CFLAGS_EXTRA="-m32 -D _FORTIFY_SOURCE=2"
+ - CONF_OPTIONS="--enable-munmap --enable-gc-assertions"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-5
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+ compiler: gcc-5
+ dist: trusty
+ language: c
+ env:
+ - CXX=g++-5
+ - CONF_OPTIONS="--enable-munmap --enable-cplusplus --enable-gc-assertions"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-5
+ - gcc-5-multilib
+ - gcc-multilib
+ sources:
+ - ubuntu-toolchain-r-test
+ compiler: gcc-5
+ dist: trusty
+ language: c
+ env:
+ - CFLAGS_EXTRA="-m32 -O3"
+ - CONF_OPTIONS="--disable-shared --enable-single-obj-compilation"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-5
+ - gcc-5-multilib
+ - gcc-multilib
+ sources:
+ - ubuntu-toolchain-r-test
+ compiler: gcc-5
+ dist: trusty
+ language: c
+ env:
+ - CFLAGS_EXTRA="-mx32 -march=native -D _FORTIFY_SOURCE=2"
+ - CONF_OPTIONS="--enable-munmap --enable-large-config --enable-gc-assertions"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - g++-mingw-w64
+ - gcc-mingw-w64
+ compiler: x86_64-w64-mingw32-gcc
+ dist: trusty
+ language: c
+ env:
+ - CXX=x86_64-w64-mingw32-g++
+ - CONF_OPTIONS="--host=x86_64-w64-mingw32 --enable-cplusplus"
+ - MAKEFILE_TARGETS="all"
+ - os: linux
+ addons:
+ apt:
+ packages:
+ - gcc-mingw-w64
+ compiler: i686-w64-mingw32-gcc
+ dist: trusty
+ language: c
+ env:
+ - CONF_OPTIONS="--host=i686-w64-mingw32 --enable-munmap"
+ - MAKEFILE_TARGETS="all"
+ - CFLAGS_EXTRA="-fno-omit-frame-pointer"
+
+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";
+ fi
+- if [[ "$AUTOMAKE_VER" != "" || "$LIBTOOL_VER" != ""
+ || "$M4_VER" != "" || "$PKG_CONFIG_VER" != "" ]]; then
+ GNUTOOLS_ROOT=`pwd`/../gnu-tools;
+ export PATH=$GNUTOOLS_ROOT/bin:$PATH;
+ fi
+- if [[ "$M4_VER" != "" ]]; then
+ M4_XZ_URL=https://ftp.gnu.org/gnu/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=https://ftp.gnu.org/gnu/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=https://ftp.gnu.org/gnu/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 [[ "$PKG_CONFIG_VER" != "" ]]; then
+ PKG_CONFIG_GZ_URL=https://pkgconfig.freedesktop.org/releases/pkg-config-$PKG_CONFIG_VER.tar.gz;
+ wget -O - $PKG_CONFIG_GZ_URL | tar xf - --gz --directory ~;
+ (cd ~/pkg-config-$PKG_CONFIG_VER && ./configure --with-internal-glib --prefix=$GNUTOOLS_ROOT && make -j check && make install);
+ fi
+- if [[ "$MAKEFILE_TARGETS" == *"dist"* ]]; then
+ autoconf --version;
+ automake --version;
+ m4 --version;
+ libtool --version || true;
+ pkg-config --version;
+ fi
+- if [[ "$MAKEFILE_NAME" == "" ]]; then MAKEFILE_NAME=Makefile; fi
+- if [[ "$MAKEFILE_TARGETS" == "" ]]; then MAKEFILE_TARGETS="check"; fi
+
+install:
+- if [[ "$NO_CLONE_LIBATOMIC_OPS" != true ]]; then
+ git clone --depth=50 https://github.com/ivmai/libatomic_ops.git
+ -b release-7_6;
+ fi
+- "./autogen.sh"
+- if [[ "$GNUTOOLS_ROOT" != "" ]]; then mv $GNUTOOLS_ROOT $GNUTOOLS_ROOT-x; fi
+- if [[ "$REPORT_COVERAGE" == true ]]; then gem install coveralls-lcov; fi
+
+script:
+- if [[ "$CSA_CHECK" != true && "$CPPCHECK_ENABLE" == ""
+ && "$MAKEFILE_NAME" != "Makefile.direct" ]]; then
+ ./configure $CONF_OPTIONS --enable-werror && cat include/config.h;
+ fi
+- if [[ "$CSA_CHECK" != true && "$CPPCHECK_ENABLE" == "" ]]; then
+ make -j -f $MAKEFILE_NAME $MAKEFILE_TARGETS CFLAGS_EXTRA="$CFLAGS_EXTRA";
+ fi
+- if [ -f gctest.log ]; then cat gctest.log; fi
+- if [[ "$CSA_CHECK" == true ]]; then
+ ${CC} --analyze -Xanalyzer -analyzer-output=text -Werror
+ -I include -I libatomic_ops/src $CFLAGS_EXTRA
+ *.c *.cc cord/*.c cord/tests/cordtest.c cord/tests/de.c extra/gc.c
+ extra/msvc_dbg.c tests/*.c tests/*.cc tools/*.c;
+ fi
+- if [[ "$CPPCHECK_ENABLE" != "" ]]; then
+ ~/cppcheck/cppcheck -q -f --error-exitcode=2 -U GC_API -U long -D CPPCHECK
+ -I include -I libatomic_ops/src $CPPCHECK_ENABLE
+ *.cc cord/*.c cord/tests/*.c tests/*.c tests/*.cc tools/*.c
+ extra/gc.c;
+ fi
+- if [[ "$MSAN_OR_UBSAN" == true ]]; then
+ UBSAN_OPTIONS="halt_on_error=1" make check;
+ fi
+
+after_success:
+- if [[ "$REPORT_COVERAGE" == true ]]; then
+ lcov --capture --base-directory . --directory . --output-file coverage.info;
+ lcov --remove coverage.info '/usr/*' 'cord/tests/*' 'libatomic_ops/*' 'tests/*' --output-file coverage.info;
+ lcov --list coverage.info;
+ coveralls-lcov --repo-token ${COVERALLS_TOKEN} coverage.info;
+ fi
+
+deploy:
+ provider: releases
+ api_key:
+ secure: j1HkSD5hyYFo//XzPemojLk6iBT+T9+PwktxtDOwdasR0lOvPyBS2k/RbBZp+amDna/40efTg2WVI8BEfpRMV8+QoYGVoTWCKCaxFCHMfSZdsPLYsHpeqp7PBh3sFX6iuQuZkRGXHNeG8cLHTTw1TatrEBU/vTZXItYKmOJH8WnlwwkiVXKQ3BvU9EJjFB1OJX9PArBXgoHjDcgi6D1kL6ErsraU9nwnaBNRFx5Tpvz/fXZDwjzMnGcxeu02zhVC37mFDd6VbKom8Pm28u4NjYLLhjdICexc0BaVC0kr3+usJytyMtWMRm6LN4kFievOntHZOEAtuU6/E0Bg8wnB8FX8vXaytb+eUVtcfS/n/x6ykgPtKHrCnWEP8nnruW/3qRExxSBASyAwBceJK+yyzVBtQudK4YZnBXUWkFfsc9pPiauUDXkYlUgvVyb3rXvJTvjdiIle194GtRsCQsGKxCZiI6jMB/wRQAA9AgcSb3FpRTqkVPEUT3Gnn0xT+Y0QLJBBm4eAG8qWoEuMMAW8lAVvfHdZh3AnnIvqONvc2dk7kq5EZyhUPTFFDxZGnXWzIwY7Nm9QkUOdvb9t+RsnoTwBL4hSD4/T1CgW/hULQ7cuiwtK/E+8r5C1VES5/I20qkwfTGwKQchdR6lOLO7YM4VlHfNbEUe/wsE3PBh0ekc=
+ file: gc-*.tar.gz
+ file_glob: true
+ skip_cleanup: true
+ on:
+ condition: $MAKEFILE_TARGETS = distcheck
+ repo: ivmai/bdwgc
+ tags: true