Fix Cygwin building and add CI (#15566)

Co-authored-by: TrueCat17 <truecat17@gmail.com>
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
Co-authored-by: Ozkan Sezer <sezeroz@gmail.com>
This commit is contained in:
stahta01
2026-05-15 11:48:24 -04:00
committed by GitHub
parent be97a18d82
commit 6586bebfec
26 changed files with 116 additions and 78 deletions

View File

@@ -43,6 +43,7 @@ class SdlPlatform(Enum):
Haiku = "haiku"
LoongArch64 = "loongarch64"
Msys2 = "msys2"
Cygwin = "cygwin"
Linux = "linux"
MacOS = "macos"
Ios = "ios"
@@ -111,6 +112,7 @@ JOB_SPECS = {
"msys2-mingw64": JobSpec(name="Windows (msys2, mingw64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64", msys2_platform=Msys2Platform.Mingw64, ),
"msys2-clang64": JobSpec(name="Windows (msys2, clang64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64-clang", msys2_platform=Msys2Platform.Clang64, ),
"msys2-ucrt64": JobSpec(name="Windows (msys2, ucrt64)", os=JobOs.WindowsLatest, platform=SdlPlatform.Msys2, artifact="SDL-mingw64-ucrt", msys2_platform=Msys2Platform.Ucrt64, ),
"cygwin": JobSpec(name="Cygwin", os=JobOs.WindowsLatest, platform=SdlPlatform.Cygwin, artifact="SDL-cygwin", ),
"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", ),
"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", ),
"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, ),
@@ -162,6 +164,7 @@ class StaticLibType(Enum):
class SharedLibType(Enum):
WIN32 = "SDL3.dll"
CYGDLL = "cygSDL3.dll"
SO_0 = "libSDL3.so.0"
SO = "libSDL3.so"
DYLIB = "libSDL3.0.dylib"
@@ -217,6 +220,7 @@ class JobDetails:
intel: bool = False
msys2_msystem: str = ""
msys2_packages: list[str] = dataclasses.field(default_factory=list)
cygwin_packages: list[str] = dataclasses.field(default_factory=list)
werror: bool = True
microsoft_gameinput_version: str = ""
msvc_vcvars_arch: str = ""
@@ -254,6 +258,7 @@ class JobDetails:
"shell": self.shell,
"msys2-msystem": self.msys2_msystem,
"msys2-packages": my_shlex_join(self.msys2_packages),
"cygwin-packages": my_shlex_join(self.cygwin_packages),
"android-ndk": self.android_ndk,
"java": self.java,
"intel": self.intel,
@@ -773,6 +778,24 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool, ctest_args
job.microsoft_gameinput_version = WINDOWS_GAMEINPUT_VERSION
job.cflags.append("-I$GAMEINPUT_INCLUDE")
job.cxxflags.append("-I$GAMEINPUT_INCLUDE")
case SdlPlatform.Cygwin:
job.ccache = False # Missing evict-older-than option
job.clang_tidy = False # error finding files [clang-diagnostic-error] cause might be space in command path
job.test_pkg_config = False # Linefeed issue in test_pkgconfig.sh
job.shell = "bash --noprofile --norc -eo pipefail -o igncr {0}"
job.shared_lib = SharedLibType.CYGDLL
job.static_lib = StaticLibType.A
job.cmake_arguments.append("-DSDLTEST_GDB=ON")
job.cygwin_packages.extend([
"cmake",
"gcc-core",
"gcc-g++",
"gdb",
"ninja",
"pkg-config",
"perl",
"python",
])
case SdlPlatform.Riscos:
job.ccache = False # FIXME: enable when container gets upgrade
# FIXME: Enable SDL_WERROR

View File

@@ -28,6 +28,11 @@ jobs:
with:
msystem: ${{ matrix.platform.msys2-msystem }}
install: ${{ matrix.platform.msys2-packages }}
- name: 'Set up Cygwin'
if: ${{ matrix.platform.platform == 'cygwin' }}
uses: cygwin/cygwin-install-action@master
with:
packages: ${{ matrix.platform.cygwin-packages }}
- name: 'About this job'
run: |
echo "key=${{ matrix.platform.key }}"