.appveyor.yml raw

   1  version: 8.3.0-{build}
   2  
   3  image:
   4  - Visual Studio 2022
   5  
   6  environment:
   7    STUDIO_VERSION_EDITION: Studio\2022\Community
   8    MINGW_FOLDER: mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32
   9    DJGPP_VER: 3.4
  10    DJGPP_GCC_VER: 1220
  11    DMC_VER: 857
  12    WATCOM_VER: 2025-03-01
  13    CMAKE_CONFIG: Debug
  14    TEST_TARGET: check
  15    matrix:
  16    - TARGET: cmake
  17      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON -Werror=deprecated -Dwithout_libatomic_ops=ON
  18    - TARGET: cmake
  19      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_throw_bad_alloc_library=OFF -Denable_gc_assertions=ON -Denable_gc_debug=ON -Denable_threads=OFF
  20    - TARGET: cmake
  21      CFLAGS_EXTRA: -DNO_MSGBOX_ON_ERROR -DNO_MPROTECT_VDB -DGC_READ_ENV_FILE
  22      CMAKE_CONFIG: Release
  23      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_large_config=ON -Ddisable_gc_debug=ON -Denable_dynamic_pointer_mask=ON -Denable_rwlock=ON
  24    - TARGET: cmake
  25      CFLAGS_EXTRA: -DNO_FIND_LEAK
  26      CMAKE_CONFIG: Release
  27      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=MinSizeRel -Denable_parallel_mark=OFF
  28    - TARGET: cmake
  29      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_gc_assertions=ON -Denable_thread_local_alloc=OFF -Ddisable_single_obj_compilation=ON
  30    - TARGET: cmake
  31      CFLAGS_EXTRA: -DGC_DISABLE_INCREMENTAL
  32      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_gc_assertions=ON -Denable_gcj_support=OFF -Denable_parallel_mark=OFF -Denable_thread_local_alloc=OFF -Denable_valgrind_tracking=ON
  33    - TARGET: cmake
  34      CMAKE_OPTIONS: -A Win32 -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON -Denable_large_config=ON
  35    - TARGET: cmake
  36      CMAKE_CONFIG: Release
  37      CMAKE_OPTIONS: -A ARM64 -DCMAKE_BUILD_TYPE=Release -Denable_cplusplus=ON
  38    - TARGET: cmake-bcc
  39      CFLAGS_EXTRA: -DCONSOLE_LOG
  40      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON
  41    - TARGET: cmake-bcc
  42      CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_GWW_VDB
  43      CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON -Denable_gc_debug=ON -Denable_large_config=ON -Denable_threads=OFF
  44    - TARGET: cmake-bcc
  45      CFLAGS_EXTRA: -DCONSOLE_LOG
  46      CMAKE_CONFIG: Release
  47      CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON
  48    - TARGET: cmake-mingw
  49      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON
  50    - TARGET: cmake-msys
  51      CMAKE_CONFIG: Release
  52      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON -Dinstall_headers=OFF -Denable_rwlock=ON
  53    - TARGET: cmake-msys
  54      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_docs=OFF
  55    - TARGET: cmake-msys
  56      CMAKE_OPTIONS: -Dbuild_cord=OFF -Dbuild_tests=ON -Denable_atomic_uncollectable=OFF -Denable_disclaim=OFF -Denable_threads=OFF
  57    - TARGET: cmake-wcc-nt
  58      CFLAGS_EXTRA: -DCONSOLE_LOG
  59      CMAKE_CONFIG: Release
  60      CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_threads=OFF
  61    - TARGET: cmake-wcc-nt
  62      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_checksums=ON -Denable_dynamic_loading=OFF -Denable_large_config=ON -Denable_munmap=OFF -Denable_threads=OFF
  63    - TARGET: cmake-wcc-nt
  64      CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_MSGBOX_ON_ERROR
  65      CMAKE_CONFIG: Release
  66      CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON
  67    - TARGET: cmake-wcc-nt
  68      CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_MSGBOX_ON_ERROR
  69      CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Debug -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON
  70    - TARGET: nmake
  71      ARCH: x86
  72      NMAKE_OPTIONS: enable_static=1
  73    - TARGET: nmake
  74      ARCH: x64
  75      CFLAGS_EXTRA: /J /wd4391
  76    - TARGET: nmake
  77      ARCH: x86
  78      CFLAGS_EXTRA: -DUSE_GLOBAL_ALLOC
  79      NMAKE_OPTIONS: nodebug=1
  80    - TARGET: nmake
  81      ARCH: x64
  82      NMAKE_OPTIONS: disable_threads=1
  83    - TARGET: djgpp-no-make
  84      CFLAGS_EXTRA: -O3 -DALL_INTERIOR_POINTERS -DNO_EXECUTE_PERMISSION -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE -DGC_GCJ_SUPPORT
  85    - TARGET: dmc
  86      CFLAGS_EXTRA: -s -DNO_MSGBOX_ON_ERROR
  87    - TARGET: mingw-shared-no-make
  88      CFLAGS_EXTRA: -D GC_THREADS -D GC_ASSERTIONS -D ENABLE_DISCLAIM -D GC_GCJ_SUPPORT -D GC_PREFER_MPROTECT_VDB -D GC_CALL=__stdcall -D GC_CALLBACK=__fastcall -D CONSOLE_LOG -D NO_MSGBOX_ON_ERROR -D USE_RWLOCK -D _WIN32_WINNT=0x0600
  89    - TARGET: mingw-shared-no-make
  90      CFLAGS_EXTRA: -Os -D NO_CLOCK -D NO_DEBUGGING -D GC_DISABLE_SNPRINTF -D GC_NO_FINALIZATION -D NO_FIND_LEAK -D NO_GETENV -D IGNORE_DYNAMIC_LOADING -D SHORT_DBG_HDRS -D SMALL_CONFIG -ffunction-sections -fdata-sections -s
  91    - TARGET: msys64-mingw64
  92    - TARGET: msys64-mingw64
  93      CFLAGS_EXTRA: -D GC_THREADS -D THREAD_LOCAL_ALLOC -D PARALLEL_MARK -D GC_ASSERTIONS -D EMPTY_GETENV_RESULTS -D GC_GCJ_SUPPORT -D USE_MUNMAP -D LARGE_CONFIG -D NO_MSGBOX_ON_ERROR
  94      TEST_TARGET: check cord/de
  95    - TARGET: msys64-mingw64
  96      CFLAGS_EXTRA: -O3 -march=native -D GC_THREADS -D GC_GCJ_SUPPORT -D GC_TIME_LIMIT=10 -D WINXP_USE_PERF_COUNTER -D NO_MSGBOX_ON_ERROR -D NO_TEST_ENDTHREADEX
  97    - TARGET: msys64-mingw64
  98      CFLAGS_EXTRA: -D NO_MSGBOX_ON_ERROR
  99    - TARGET: msys64-mingw64
 100      CFLAGS_EXTRA: -D GC_THREADS -D THREAD_LOCAL_ALLOC -D PARALLEL_MARK -D GC_ASSERTIONS -D GC_GCJ_SUPPORT -D NO_RETRY_GET_THREAD_CONTEXT
 101    - TARGET: wcc
 102      WCC_SYSTEM: DOS4GW
 103      CFLAGS_EXTRA: -DSMALL_CONFIG
 104      ENABLE_STATIC_OPT: "ENABLE_STATIC=1"
 105      TEST_TARGET: check-deps
 106    - TARGET: wcc
 107      WCC_SYSTEM: OS2
 108      CFLAGS_EXTRA: -DGC_ASSERTIONS
 109      ENABLE_STATIC_OPT: "ENABLE_STATIC=1"
 110      TEST_TARGET: check-deps
 111      WCC_INC_SUBDIR: os2
 112    - TARGET: wcc
 113      WCC_SYSTEM: MSWIN32
 114      CFLAGS_EXTRA: -DCONSOLE_LOG -DUSE_MMAP -DUSE_MUNMAP -zp1 -DFORCE_ALIGNMENT_ONE
 115      WCC_INC_SUBDIR: nt
 116    - TARGET: cygwin64
 117      CFLAGS_EXTRA: -std=c11 -D USE_WINALLOC -Wno-array-bounds
 118      CONF_OPTIONS: --disable-threads
 119    - TARGET: cygwin64
 120      CFLAGS_EXTRA: -D GCTEST_PRINT_VERBOSE -D DONT_PROTECT_PTRFREE -Wno-array-bounds
 121      CONF_OPTIONS: --enable-cplusplus
 122    - TARGET: cygwin64
 123      CFLAGS_EXTRA: -Wno-array-bounds
 124      CONF_OPTIONS: --enable-cplusplus --disable-munmap --enable-gc-assertions --enable-redirect-malloc
 125    - TARGET: cygwin64
 126      CFLAGS_EXTRA: -D GC_ALWAYS_MULTITHREADED -D LINT2 -D TEST_MANUAL_VDB -Wno-array-bounds
 127      CONF_OPTIONS: --enable-cplusplus --enable-gc-assertions --enable-rwlock --disable-shared
 128    - TARGET: cygwin64
 129      CFLAGS_EXTRA: -Wno-array-bounds
 130      CONF_OPTIONS: --enable-cplusplus --enable-gc-debug
 131  
 132  clone_depth: 50
 133  
 134  install:
 135  - cmd: git clone --depth=50 https://github.com/bdwgc/libatomic_ops.git
 136  
 137  build_script:
 138  - cmd: if %TARGET%==cmake (
 139      mkdir out && cd out
 140      && cmake %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" ..
 141      && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel )
 142  - cmd: if %TARGET%==cmake-mingw (
 143      set "path=C:\Program Files\CMake\bin;C:\%MINGW_FOLDER%\bin"
 144      && mkdir out && cd out
 145      && cmake -G "MinGW Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" ..
 146      && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel )
 147  - cmd: if %TARGET%==cmake-msys (
 148      set "path=C:\msys64\usr\bin;%path%"
 149      && mkdir out && cd out
 150      && cmake -G "MSYS Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" ..
 151      && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel )
 152  - cmd: if %TARGET%==nmake (
 153      "C:\Program Files\Microsoft Visual %STUDIO_VERSION_EDITION%\VC\Auxiliary\Build\vcvarsall.bat" %ARCH%
 154      && nmake /f NT_MAKEFILE %NMAKE_OPTIONS% CFLAGS_EXTRA="/WX %CFLAGS_EXTRA%" )
 155  - cmd: if %TARGET%==cygwin64 (
 156      C:\cygwin64\bin\bash -e -l -c
 157        "cd /cygdrive/c/projects/bdwgc && ./autogen.sh
 158         && ./configure %CONF_OPTIONS% --enable-werror && cat include/config.h
 159         && make -j CFLAGS_EXTRA='%CFLAGS_EXTRA%'" )
 160  - cmd: if %TARGET%==djgpp-no-make (
 161      appveyor DownloadFile "https://github.com/andrewwutw/build-djgpp/releases/download/v%DJGPP_VER%/djgpp-mingw-gcc%DJGPP_GCC_VER%-standalone.zip"
 162      && 7z x -o.. djgpp-mingw-gcc%DJGPP_GCC_VER%-standalone.zip > nul
 163      && ..\djgpp\setenv.bat
 164      && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -c extra/gc.c )
 165  - cmd: if %TARGET%==dmc (
 166      appveyor DownloadFile "http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm%DMC_VER%c.zip"
 167      && 7z x -o.. dm%DMC_VER%c.zip > nul && set "path=%cd%\..\dm\bin;%path%"
 168      && make -f digimars.mak CFLAGS_EXTRA="-wx %CFLAGS_EXTRA%" )
 169  - cmd: if %TARGET%==mingw-shared-no-make (
 170      set "path=C:\%MINGW_FOLDER%\bin;%path%"
 171      && gcc -I include -D GC_BUILTIN_ATOMIC -D GC_DLL -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -shared -o gc.dll extra/gc.c )
 172  - cmd: if %TARGET%==msys64-mingw64 (
 173      C:\msys64\usr\bin\bash -e -l -c
 174        "cd /c/projects/bdwgc
 175         && PATH=/c/msys64/mingw64/bin:$PATH make -j -f Makefile.direct CC=gcc CFLAGS_EXTRA='-Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA%'" )
 176  - cmd: if %TARGET%==wcc (
 177      appveyor DownloadFile "https://github.com/open-watcom/open-watcom-v2/releases/download/%WATCOM_VER%-Build/ow-snapshot.tar.xz"
 178      && 7z x ow-snapshot.tar.xz > nul && 7z x -o..\watcom ow-snapshot.tar > nul
 179      && set "watcom=%cd%\..\watcom"
 180      && set "path=%cd%\..\watcom\binnt64;%cd%\..\watcom\binnt"
 181      && set "include=%cd%\..\watcom\h\%WCC_INC_SUBDIR%;%cd%\..\watcom\h"
 182      && wmake -f WCC_MAKEFILE SYSTEM=%WCC_SYSTEM% %ENABLE_STATIC_OPT% CFLAGS_EXTRA="-we %CFLAGS_EXTRA%" )
 183  - cmd: if %TARGET%==cmake-wcc-nt (
 184      appveyor DownloadFile "https://github.com/open-watcom/open-watcom-v2/releases/download/%WATCOM_VER%-Build/ow-snapshot.tar.xz"
 185      && 7z x ow-snapshot.tar.xz > nul && 7z x -o..\watcom ow-snapshot.tar > nul
 186      && set "watcom=%cd%\..\watcom"
 187      && set "path=C:\Program Files\CMake\bin;%cd%\..\watcom\binnt"
 188      && set "include=%cd%\..\watcom\h\nt;%cd%\..\watcom\h"
 189      && mkdir out && cd out
 190      && cmake -G "Watcom WMake" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" ..
 191      && cmake --build . --config %CMAKE_CONFIG% --verbose )
 192  - cmd: if %TARGET%==cmake-bcc (
 193      appveyor DownloadFile "https://www.ivmaisoft.com/_bin/misc/freecommandLinetools.exe"
 194      && 7z x -o..\Bcc55 freecommandLinetools.exe > nul
 195      && set "path=C:\Program Files\CMake\bin;%cd%\..\Bcc55\Bin"
 196      && echo -I"%cd%\..\Bcc55\Include" > %cd%\..\Bcc55\Bin\bcc32.cfg
 197      && echo -L"%cd%\..\Bcc55\Lib;%cd%\..\Bcc55\Lib\PSDK" > %cd%\..\Bcc55\Bin\ilink32.cfg
 198      && mkdir out && cd out
 199      && cmake -G "Borland Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" ..
 200      && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel )
 201  
 202  test_script:
 203  - cmd: if %TARGET%==cmake (
 204      ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 )
 205  - cmd: if %TARGET%==cmake-bcc (
 206      ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 )
 207  - cmd: if %TARGET%==cmake-mingw (
 208      ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 )
 209  - cmd: if %TARGET%==cmake-msys (
 210      ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 )
 211  - cmd: if %TARGET%==cmake-wcc-nt (
 212      ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 )
 213  - cmd: if %TARGET%==nmake (
 214      "C:\Program Files\Microsoft Visual %STUDIO_VERSION_EDITION%\VC\Auxiliary\Build\vcvarsall.bat" %ARCH%
 215      && nmake /f NT_MAKEFILE %TEST_TARGET% %NMAKE_OPTIONS% CFLAGS_EXTRA="/WX %CFLAGS_EXTRA%"
 216      && nmake /f NT_MAKEFILE clean )
 217  - cmd: if %TARGET%==cygwin64 (
 218      C:\cygwin64\bin\bash -e -l -c
 219        "cd /cygdrive/c/projects/bdwgc
 220         && make -j check-without-test-driver CFLAGS_EXTRA='%CFLAGS_EXTRA%'" )
 221  - cmd: if %TARGET%==djgpp-no-make (
 222      ..\djgpp\setenv.bat
 223      && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -o cordtest.exe cord/tests/cordtest.c cord/*.c gc.o
 224      && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -v -o gctest.exe tests/gctest.c gc.o )
 225  - cmd: if %TARGET%==dmc (
 226      make -f digimars.mak %TEST_TARGET% CFLAGS_EXTRA="-wx %CFLAGS_EXTRA%"
 227      && type gctest.gc.log cpptest.gc.log
 228      && make -f digimars.mak clean )
 229  - cmd: if %TARGET%==mingw-shared-no-make (
 230      gcc -I include -D GC_BUILTIN_ATOMIC -D GC_DLL -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -o gctest.exe tests/gctest.c gc.dll
 231      && gctest.exe )
 232  - cmd: if %TARGET%==msys64-mingw64 (
 233      C:\msys64\usr\bin\bash -e -l -c
 234        "cd /c/projects/bdwgc
 235         && PATH=/c/msys64/mingw64/bin:$PATH make -j -f Makefile.direct %TEST_TARGET% CC=gcc CURSES=-lgdi32 CFLAGS_EXTRA='-Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA%'" )
 236  - cmd: if %TARGET%==wcc (
 237      set "beginlibpath=%cd%\..\watcom\binp\dll"
 238      && wmake -f WCC_MAKEFILE %TEST_TARGET% SYSTEM=%WCC_SYSTEM% %ENABLE_STATIC_OPT% CFLAGS_EXTRA="-we %CFLAGS_EXTRA%"
 239      && wmake -f WCC_MAKEFILE clean )
 240