@@ -42,6 +42,7 @@ class SdlPlatform(Enum):
4242 Haiku = "haiku"
4343 LoongArch64 = "loongarch64"
4444 Msys2 = "msys2"
45+ Cygwin = "cygwin"
4546 Linux = "linux"
4647 MacOS = "macos"
4748 Ios = "ios"
@@ -110,6 +111,7 @@ class JobSpec:
110111 "msys2-mingw64" : JobSpec (name = "Windows (msys2, mingw64)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msys2 , artifact = "SDL-mingw64" , msys2_platform = Msys2Platform .Mingw64 , ),
111112 "msys2-clang64" : JobSpec (name = "Windows (msys2, clang64)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msys2 , artifact = "SDL-mingw64-clang" , msys2_platform = Msys2Platform .Clang64 , ),
112113 "msys2-ucrt64" : JobSpec (name = "Windows (msys2, ucrt64)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msys2 , artifact = "SDL-mingw64-ucrt" , msys2_platform = Msys2Platform .Ucrt64 , ),
114+ "cygwin" : JobSpec (name = "Cygwin" , os = JobOs .WindowsLatest , platform = SdlPlatform .Cygwin , artifact = "SDL-cygwin" , ),
113115 "msvc-x64" : JobSpec (name = "Windows (MSVC, x64)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msvc , artifact = "SDL-VC-x64" , msvc_arch = MsvcArch .X64 , msvc_project = "VisualC/SDL.sln" , ),
114116 "msvc-x86" : JobSpec (name = "Windows (MSVC, x86)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msvc , artifact = "SDL-VC-x86" , msvc_arch = MsvcArch .X86 , msvc_project = "VisualC/SDL.sln" , ),
115117 "msvc-clang-x64" : JobSpec (name = "Windows (MSVC, clang-cl x64)" , os = JobOs .WindowsLatest , platform = SdlPlatform .Msvc , artifact = "SDL-clang-cl-x64" , msvc_arch = MsvcArch .X64 , clang_cl = True , ),
@@ -161,6 +163,7 @@ class StaticLibType(Enum):
161163
162164class SharedLibType (Enum ):
163165 WIN32 = "SDL3.dll"
166+ CYGDLL = "cygSDL3-0.dll"
164167 SO_0 = "libSDL3.so.0"
165168 SO = "libSDL3.so"
166169 DYLIB = "libSDL3.0.dylib"
@@ -216,6 +219,7 @@ class JobDetails:
216219 intel : bool = False
217220 msys2_msystem : str = ""
218221 msys2_packages : list [str ] = dataclasses .field (default_factory = list )
222+ cygwin_packages : list [str ] = dataclasses .field (default_factory = list )
219223 werror : bool = True
220224 msvc_vcvars_arch : str = ""
221225 msvc_vcvars_sdk : str = ""
@@ -252,6 +256,7 @@ def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
252256 "shell" : self .shell ,
253257 "msys2-msystem" : self .msys2_msystem ,
254258 "msys2-packages" : my_shlex_join (self .msys2_packages ),
259+ "cygwin-packages" : my_shlex_join (self .cygwin_packages ),
255260 "android-ndk" : self .android_ndk ,
256261 "java" : self .java ,
257262 "intel" : self .intel ,
@@ -764,6 +769,20 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool, ctest_args
764769 job .msys2_packages .append (f"{ msys2_env } -clang-tools-extra" )
765770 if job .ccache :
766771 job .msys2_packages .append (f"{ msys2_env } -ccache" )
772+ case SdlPlatform .Cygwin :
773+ job .ccache = True
774+ job .shell = "bash --noprofile --norc -eo pipefail -o igncr {0}"
775+ job .shared_lib = SharedLibType .CYGDLL
776+ job .static_lib = StaticLibType .A
777+ job .cygwin_packages .extend ([
778+ "ccache" ,
779+ "cmake" ,
780+ "gcc-core" ,
781+ "gcc-g++" ,
782+ "ninja" ,
783+ "pkg-config" ,
784+ "python" ,
785+ ])
767786 case SdlPlatform .Riscos :
768787 job .ccache = False # FIXME: enable when container gets upgrade
769788 # FIXME: Enable SDL_WERROR
0 commit comments