.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