version: 8.3.0-{build} image: - Visual Studio 2022 environment: STUDIO_VERSION_EDITION: Studio\2022\Community MINGW_FOLDER: mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32 DJGPP_VER: 3.4 DJGPP_GCC_VER: 1220 DMC_VER: 857 WATCOM_VER: 2025-03-01 CMAKE_CONFIG: Debug TEST_TARGET: check matrix: - TARGET: cmake 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 - TARGET: cmake 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 - TARGET: cmake CFLAGS_EXTRA: -DNO_MSGBOX_ON_ERROR -DNO_MPROTECT_VDB -DGC_READ_ENV_FILE CMAKE_CONFIG: Release 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 - TARGET: cmake CFLAGS_EXTRA: -DNO_FIND_LEAK CMAKE_CONFIG: Release CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=MinSizeRel -Denable_parallel_mark=OFF - TARGET: cmake CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_gc_assertions=ON -Denable_thread_local_alloc=OFF -Ddisable_single_obj_compilation=ON - TARGET: cmake CFLAGS_EXTRA: -DGC_DISABLE_INCREMENTAL 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 - TARGET: cmake CMAKE_OPTIONS: -A Win32 -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON -Denable_large_config=ON - TARGET: cmake CMAKE_CONFIG: Release CMAKE_OPTIONS: -A ARM64 -DCMAKE_BUILD_TYPE=Release -Denable_cplusplus=ON - TARGET: cmake-bcc CFLAGS_EXTRA: -DCONSOLE_LOG CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON - TARGET: cmake-bcc CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_GWW_VDB 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 - TARGET: cmake-bcc CFLAGS_EXTRA: -DCONSOLE_LOG CMAKE_CONFIG: Release CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON - TARGET: cmake-mingw CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON - TARGET: cmake-msys CMAKE_CONFIG: Release 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 - TARGET: cmake-msys CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_docs=OFF - TARGET: cmake-msys CMAKE_OPTIONS: -Dbuild_cord=OFF -Dbuild_tests=ON -Denable_atomic_uncollectable=OFF -Denable_disclaim=OFF -Denable_threads=OFF - TARGET: cmake-wcc-nt CFLAGS_EXTRA: -DCONSOLE_LOG CMAKE_CONFIG: Release CMAKE_OPTIONS: -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_threads=OFF - TARGET: cmake-wcc-nt 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 - TARGET: cmake-wcc-nt CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_MSGBOX_ON_ERROR CMAKE_CONFIG: Release CMAKE_OPTIONS: -DBUILD_SHARED_LIBS=OFF -Dbuild_tests=ON -Denable_cplusplus=ON - TARGET: cmake-wcc-nt CFLAGS_EXTRA: -DCONSOLE_LOG -DNO_MSGBOX_ON_ERROR CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Debug -Dbuild_tests=ON -Denable_cplusplus=ON -Denable_gc_assertions=ON - TARGET: nmake ARCH: x86 NMAKE_OPTIONS: enable_static=1 - TARGET: nmake ARCH: x64 CFLAGS_EXTRA: /J /wd4391 - TARGET: nmake ARCH: x86 CFLAGS_EXTRA: -DUSE_GLOBAL_ALLOC NMAKE_OPTIONS: nodebug=1 - TARGET: nmake ARCH: x64 NMAKE_OPTIONS: disable_threads=1 - TARGET: djgpp-no-make CFLAGS_EXTRA: -O3 -DALL_INTERIOR_POINTERS -DNO_EXECUTE_PERMISSION -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE -DGC_GCJ_SUPPORT - TARGET: dmc CFLAGS_EXTRA: -s -DNO_MSGBOX_ON_ERROR - TARGET: mingw-shared-no-make 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 - TARGET: mingw-shared-no-make 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 - TARGET: msys64-mingw64 - TARGET: msys64-mingw64 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 TEST_TARGET: check cord/de - TARGET: msys64-mingw64 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 - TARGET: msys64-mingw64 CFLAGS_EXTRA: -D NO_MSGBOX_ON_ERROR - TARGET: msys64-mingw64 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 - TARGET: wcc WCC_SYSTEM: DOS4GW CFLAGS_EXTRA: -DSMALL_CONFIG ENABLE_STATIC_OPT: "ENABLE_STATIC=1" TEST_TARGET: check-deps - TARGET: wcc WCC_SYSTEM: OS2 CFLAGS_EXTRA: -DGC_ASSERTIONS ENABLE_STATIC_OPT: "ENABLE_STATIC=1" TEST_TARGET: check-deps WCC_INC_SUBDIR: os2 - TARGET: wcc WCC_SYSTEM: MSWIN32 CFLAGS_EXTRA: -DCONSOLE_LOG -DUSE_MMAP -DUSE_MUNMAP -zp1 -DFORCE_ALIGNMENT_ONE WCC_INC_SUBDIR: nt - TARGET: cygwin64 CFLAGS_EXTRA: -std=c11 -D USE_WINALLOC -Wno-array-bounds CONF_OPTIONS: --disable-threads - TARGET: cygwin64 CFLAGS_EXTRA: -D GCTEST_PRINT_VERBOSE -D DONT_PROTECT_PTRFREE -Wno-array-bounds CONF_OPTIONS: --enable-cplusplus - TARGET: cygwin64 CFLAGS_EXTRA: -Wno-array-bounds CONF_OPTIONS: --enable-cplusplus --disable-munmap --enable-gc-assertions --enable-redirect-malloc - TARGET: cygwin64 CFLAGS_EXTRA: -D GC_ALWAYS_MULTITHREADED -D LINT2 -D TEST_MANUAL_VDB -Wno-array-bounds CONF_OPTIONS: --enable-cplusplus --enable-gc-assertions --enable-rwlock --disable-shared - TARGET: cygwin64 CFLAGS_EXTRA: -Wno-array-bounds CONF_OPTIONS: --enable-cplusplus --enable-gc-debug clone_depth: 50 install: - cmd: git clone --depth=50 https://github.com/bdwgc/libatomic_ops.git build_script: - cmd: if %TARGET%==cmake ( mkdir out && cd out && cmake %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" .. && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel ) - cmd: if %TARGET%==cmake-mingw ( set "path=C:\Program Files\CMake\bin;C:\%MINGW_FOLDER%\bin" && mkdir out && cd out && cmake -G "MinGW Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" .. && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel ) - cmd: if %TARGET%==cmake-msys ( set "path=C:\msys64\usr\bin;%path%" && mkdir out && cd out && cmake -G "MSYS Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" .. && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel ) - cmd: if %TARGET%==nmake ( "C:\Program Files\Microsoft Visual %STUDIO_VERSION_EDITION%\VC\Auxiliary\Build\vcvarsall.bat" %ARCH% && nmake /f NT_MAKEFILE %NMAKE_OPTIONS% CFLAGS_EXTRA="/WX %CFLAGS_EXTRA%" ) - cmd: if %TARGET%==cygwin64 ( C:\cygwin64\bin\bash -e -l -c "cd /cygdrive/c/projects/bdwgc && ./autogen.sh && ./configure %CONF_OPTIONS% --enable-werror && cat include/config.h && make -j CFLAGS_EXTRA='%CFLAGS_EXTRA%'" ) - cmd: if %TARGET%==djgpp-no-make ( appveyor DownloadFile "https://github.com/andrewwutw/build-djgpp/releases/download/v%DJGPP_VER%/djgpp-mingw-gcc%DJGPP_GCC_VER%-standalone.zip" && 7z x -o.. djgpp-mingw-gcc%DJGPP_GCC_VER%-standalone.zip > nul && ..\djgpp\setenv.bat && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -c extra/gc.c ) - cmd: if %TARGET%==dmc ( appveyor DownloadFile "http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm%DMC_VER%c.zip" && 7z x -o.. dm%DMC_VER%c.zip > nul && set "path=%cd%\..\dm\bin;%path%" && make -f digimars.mak CFLAGS_EXTRA="-wx %CFLAGS_EXTRA%" ) - cmd: if %TARGET%==mingw-shared-no-make ( set "path=C:\%MINGW_FOLDER%\bin;%path%" && gcc -I include -D GC_BUILTIN_ATOMIC -D GC_DLL -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -shared -o gc.dll extra/gc.c ) - cmd: if %TARGET%==msys64-mingw64 ( C:\msys64\usr\bin\bash -e -l -c "cd /c/projects/bdwgc && PATH=/c/msys64/mingw64/bin:$PATH make -j -f Makefile.direct CC=gcc CFLAGS_EXTRA='-Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA%'" ) - cmd: if %TARGET%==wcc ( appveyor DownloadFile "https://github.com/open-watcom/open-watcom-v2/releases/download/%WATCOM_VER%-Build/ow-snapshot.tar.xz" && 7z x ow-snapshot.tar.xz > nul && 7z x -o..\watcom ow-snapshot.tar > nul && set "watcom=%cd%\..\watcom" && set "path=%cd%\..\watcom\binnt64;%cd%\..\watcom\binnt" && set "include=%cd%\..\watcom\h\%WCC_INC_SUBDIR%;%cd%\..\watcom\h" && wmake -f WCC_MAKEFILE SYSTEM=%WCC_SYSTEM% %ENABLE_STATIC_OPT% CFLAGS_EXTRA="-we %CFLAGS_EXTRA%" ) - cmd: if %TARGET%==cmake-wcc-nt ( appveyor DownloadFile "https://github.com/open-watcom/open-watcom-v2/releases/download/%WATCOM_VER%-Build/ow-snapshot.tar.xz" && 7z x ow-snapshot.tar.xz > nul && 7z x -o..\watcom ow-snapshot.tar > nul && set "watcom=%cd%\..\watcom" && set "path=C:\Program Files\CMake\bin;%cd%\..\watcom\binnt" && set "include=%cd%\..\watcom\h\nt;%cd%\..\watcom\h" && mkdir out && cd out && cmake -G "Watcom WMake" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" .. && cmake --build . --config %CMAKE_CONFIG% --verbose ) - cmd: if %TARGET%==cmake-bcc ( appveyor DownloadFile "https://www.ivmaisoft.com/_bin/misc/freecommandLinetools.exe" && 7z x -o..\Bcc55 freecommandLinetools.exe > nul && set "path=C:\Program Files\CMake\bin;%cd%\..\Bcc55\Bin" && echo -I"%cd%\..\Bcc55\Include" > %cd%\..\Bcc55\Bin\bcc32.cfg && echo -L"%cd%\..\Bcc55\Lib;%cd%\..\Bcc55\Lib\PSDK" > %cd%\..\Bcc55\Bin\ilink32.cfg && mkdir out && cd out && cmake -G "Borland Makefiles" %CMAKE_OPTIONS% -Denable_werror=ON -DCFLAGS_EXTRA="%CFLAGS_EXTRA%" .. && cmake --build . --config %CMAKE_CONFIG% --verbose --parallel ) test_script: - cmd: if %TARGET%==cmake ( ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 ) - cmd: if %TARGET%==cmake-bcc ( ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 ) - cmd: if %TARGET%==cmake-mingw ( ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 ) - cmd: if %TARGET%==cmake-msys ( ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 ) - cmd: if %TARGET%==cmake-wcc-nt ( ctest --build-config %CMAKE_CONFIG% --verbose --parallel 4 ) - cmd: if %TARGET%==nmake ( "C:\Program Files\Microsoft Visual %STUDIO_VERSION_EDITION%\VC\Auxiliary\Build\vcvarsall.bat" %ARCH% && nmake /f NT_MAKEFILE %TEST_TARGET% %NMAKE_OPTIONS% CFLAGS_EXTRA="/WX %CFLAGS_EXTRA%" && nmake /f NT_MAKEFILE clean ) - cmd: if %TARGET%==cygwin64 ( C:\cygwin64\bin\bash -e -l -c "cd /cygdrive/c/projects/bdwgc && make -j check-without-test-driver CFLAGS_EXTRA='%CFLAGS_EXTRA%'" ) - cmd: if %TARGET%==djgpp-no-make ( ..\djgpp\setenv.bat && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -o cordtest.exe cord/tests/cordtest.c cord/*.c gc.o && gcc -I include -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -v -o gctest.exe tests/gctest.c gc.o ) - cmd: if %TARGET%==dmc ( make -f digimars.mak %TEST_TARGET% CFLAGS_EXTRA="-wx %CFLAGS_EXTRA%" && type gctest.gc.log cpptest.gc.log && make -f digimars.mak clean ) - cmd: if %TARGET%==mingw-shared-no-make ( gcc -I include -D GC_BUILTIN_ATOMIC -D GC_DLL -Werror -Wall -Wextra -Wpedantic %CFLAGS_EXTRA% -o gctest.exe tests/gctest.c gc.dll && gctest.exe ) - cmd: if %TARGET%==msys64-mingw64 ( C:\msys64\usr\bin\bash -e -l -c "cd /c/projects/bdwgc && 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%'" ) - cmd: if %TARGET%==wcc ( set "beginlibpath=%cd%\..\watcom\binp\dll" && wmake -f WCC_MAKEFILE %TEST_TARGET% SYSTEM=%WCC_SYSTEM% %ENABLE_STATIC_OPT% CFLAGS_EXTRA="-we %CFLAGS_EXTRA%" && wmake -f WCC_MAKEFILE clean )