mirror of https://github.com/libsdl-org/SDL
ci: verify SDL_REVISION
This commit is contained in:
parent
161761653f
commit
08661166e9
|
@ -141,6 +141,19 @@ JOB_SPECS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class StaticLibType(Enum):
|
||||||
|
MSVC = "SDL3-static.lib"
|
||||||
|
A = "libSDL3.a"
|
||||||
|
|
||||||
|
|
||||||
|
class SharedLibType(Enum):
|
||||||
|
WIN32 = "SDL3.dll"
|
||||||
|
SO_0 = "libSDL3.so.0"
|
||||||
|
SO = "libSDL3.so"
|
||||||
|
DYLIB = "libSDL3.0.dylib"
|
||||||
|
FRAMEWORK = "SDL3.framework/Versions/A/SDL3"
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass(slots=True)
|
@dataclasses.dataclass(slots=True)
|
||||||
class JobDetails:
|
class JobDetails:
|
||||||
name: str
|
name: str
|
||||||
|
@ -171,6 +184,8 @@ class JobDetails:
|
||||||
use_cmake: bool = True
|
use_cmake: bool = True
|
||||||
shared: bool = True
|
shared: bool = True
|
||||||
static: bool = True
|
static: bool = True
|
||||||
|
shared_lib: Optional[SharedLibType] = None
|
||||||
|
static_lib: Optional[StaticLibType] = None
|
||||||
run_tests: bool = True
|
run_tests: bool = True
|
||||||
test_pkg_config: bool = True
|
test_pkg_config: bool = True
|
||||||
cc_from_cmake: bool = False
|
cc_from_cmake: bool = False
|
||||||
|
@ -238,6 +253,8 @@ class JobDetails:
|
||||||
"cmake-build-arguments": my_shlex_join(self.cmake_build_arguments),
|
"cmake-build-arguments": my_shlex_join(self.cmake_build_arguments),
|
||||||
"shared": self.shared,
|
"shared": self.shared,
|
||||||
"static": self.static,
|
"static": self.static,
|
||||||
|
"shared-lib": self.shared_lib.value if self.shared_lib else None,
|
||||||
|
"static-lib": self.static_lib.value if self.static_lib else None,
|
||||||
"cmake-build-type": self.cmake_build_type,
|
"cmake-build-type": self.cmake_build_type,
|
||||||
"run-tests": self.run_tests,
|
"run-tests": self.run_tests,
|
||||||
"android-apks": my_shlex_join(self.android_apks),
|
"android-apks": my_shlex_join(self.android_apks),
|
||||||
|
@ -325,6 +342,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.msvc_project = spec.msvc_project if spec.msvc_project else ""
|
job.msvc_project = spec.msvc_project if spec.msvc_project else ""
|
||||||
job.msvc_project_flags.append("-p:TreatWarningsAsError=true")
|
job.msvc_project_flags.append("-p:TreatWarningsAsError=true")
|
||||||
job.test_pkg_config = False
|
job.test_pkg_config = False
|
||||||
|
job.shared_lib = SharedLibType.WIN32
|
||||||
|
job.static_lib = StaticLibType.MSVC
|
||||||
job.cmake_arguments.extend((
|
job.cmake_arguments.extend((
|
||||||
"-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=ProgramDatabase",
|
"-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=ProgramDatabase",
|
||||||
"-DCMAKE_EXE_LINKER_FLAGS=-DEBUG",
|
"-DCMAKE_EXE_LINKER_FLAGS=-DEBUG",
|
||||||
|
@ -413,6 +432,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
"libudev-dev",
|
"libudev-dev",
|
||||||
"fcitx-libs-dev",
|
"fcitx-libs-dev",
|
||||||
))
|
))
|
||||||
|
job.shared_lib = SharedLibType.SO_0
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
fpic = True
|
fpic = True
|
||||||
assert spec.os.value.startswith("ubuntu-")
|
assert spec.os.value.startswith("ubuntu-")
|
||||||
ubuntu_year, ubuntu_month = [int(v) for v in spec.os.value.removeprefix("ubuntu-").split(".", 1)]
|
ubuntu_year, ubuntu_month = [int(v) for v in spec.os.value.removeprefix("ubuntu-").split(".", 1)]
|
||||||
|
@ -426,6 +447,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.clang_tidy = False
|
job.clang_tidy = False
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.test_pkg_config = False
|
job.test_pkg_config = False
|
||||||
|
job.shared_lib = SharedLibType.DYLIB
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
match spec.platform:
|
match spec.platform:
|
||||||
case SdlPlatform.Ios:
|
case SdlPlatform.Ios:
|
||||||
job.xcode_sdk = 'iphoneos'
|
job.xcode_sdk = 'iphoneos'
|
||||||
|
@ -448,12 +471,15 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
"'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'",
|
"'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'",
|
||||||
"-DSDL_FRAMEWORK=ON",
|
"-DSDL_FRAMEWORK=ON",
|
||||||
))
|
))
|
||||||
|
job.shared_lib = SharedLibType.FRAMEWORK
|
||||||
else:
|
else:
|
||||||
job.clang_tidy = True
|
job.clang_tidy = True
|
||||||
job.cmake_arguments.extend((
|
job.cmake_arguments.extend((
|
||||||
"-DCMAKE_OSX_ARCHITECTURES=arm64",
|
"-DCMAKE_OSX_ARCHITECTURES=arm64",
|
||||||
"-DCLANG_TIDY_BINARY=$(brew --prefix llvm)/bin/clang-tidy",
|
"-DCLANG_TIDY_BINARY=$(brew --prefix llvm)/bin/clang-tidy",
|
||||||
))
|
))
|
||||||
|
job.shared_lib = SharedLibType.DYLIB
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
job.apt_packages = []
|
job.apt_packages = []
|
||||||
job.brew_packages.append("ninja")
|
job.brew_packages.append("ninja")
|
||||||
if job.test_pkg_config:
|
if job.test_pkg_config:
|
||||||
|
@ -464,6 +490,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.android_gradle = spec.android_gradle
|
job.android_gradle = spec.android_gradle
|
||||||
job.android_mk = spec.android_mk
|
job.android_mk = spec.android_mk
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
|
job.shared_lib = SharedLibType.SO
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
if spec.android_mk or not spec.no_cmake:
|
if spec.android_mk or not spec.no_cmake:
|
||||||
job.android_ndk = True
|
job.android_ndk = True
|
||||||
if spec.android_gradle or not spec.no_cmake:
|
if spec.android_gradle or not spec.no_cmake:
|
||||||
|
@ -510,6 +538,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
"chrome --version",
|
"chrome --version",
|
||||||
"chromedriver --version",
|
"chromedriver --version",
|
||||||
])
|
])
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Ps2:
|
case SdlPlatform.Ps2:
|
||||||
build_parallel = False
|
build_parallel = False
|
||||||
job.shared = False
|
job.shared = False
|
||||||
|
@ -522,6 +551,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.shared = False
|
job.shared = False
|
||||||
job.cc = "mips64r5900el-ps2-elf-gcc"
|
job.cc = "mips64r5900el-ps2-elf-gcc"
|
||||||
job.ldflags = ["-L${PS2DEV}/ps2sdk/ee/lib", "-L${PS2DEV}/gsKit/lib", "-L${PS2DEV}/ps2sdk/ports/lib", ]
|
job.ldflags = ["-L${PS2DEV}/ps2sdk/ee/lib", "-L${PS2DEV}/gsKit/lib", "-L${PS2DEV}/ps2sdk/ports/lib", ]
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Psp:
|
case SdlPlatform.Psp:
|
||||||
build_parallel = False
|
build_parallel = False
|
||||||
job.sudo = ""
|
job.sudo = ""
|
||||||
|
@ -534,6 +564,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.cc = "psp-gcc"
|
job.cc = "psp-gcc"
|
||||||
job.ldflags = ["-L${PSPDEV}/lib", "-L${PSPDEV}/psp/lib", "-L${PSPDEV}/psp/sdk/lib", ]
|
job.ldflags = ["-L${PSPDEV}/lib", "-L${PSPDEV}/psp/lib", "-L${PSPDEV}/psp/sdk/lib", ]
|
||||||
job.pollute_directories = ["${PSPDEV}/include", "${PSPDEV}/psp/include", "${PSPDEV}/psp/sdk/include", ]
|
job.pollute_directories = ["${PSPDEV}/include", "${PSPDEV}/psp/include", "${PSPDEV}/psp/sdk/include", ]
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Vita:
|
case SdlPlatform.Vita:
|
||||||
job.sudo = ""
|
job.sudo = ""
|
||||||
job.apt_packages = []
|
job.apt_packages = []
|
||||||
|
@ -556,6 +587,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.shared = False
|
job.shared = False
|
||||||
job.cc = "arm-vita-eabi-gcc"
|
job.cc = "arm-vita-eabi-gcc"
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Haiku:
|
case SdlPlatform.Haiku:
|
||||||
fpic = False
|
fpic = False
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
|
@ -567,6 +599,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
||||||
"-DCMAKE_SYSTEM_NAME=Haiku",
|
"-DCMAKE_SYSTEM_NAME=Haiku",
|
||||||
))
|
))
|
||||||
|
job.shared_lib = SharedLibType.SO_0
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.PowerPC64:
|
case SdlPlatform.PowerPC64:
|
||||||
# FIXME: Enable SDL_WERROR
|
# FIXME: Enable SDL_WERROR
|
||||||
job.werror = False
|
job.werror = False
|
||||||
|
@ -574,6 +608,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.sudo = ""
|
job.sudo = ""
|
||||||
job.apt_packages = []
|
job.apt_packages = []
|
||||||
|
job.shared_lib = SharedLibType.SO_0
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.LoongArch64:
|
case SdlPlatform.LoongArch64:
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.cc = "${LOONGARCH64_CC}"
|
job.cc = "${LOONGARCH64_CC}"
|
||||||
|
@ -583,13 +619,16 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
f"-DCMAKE_CXX_COMPILER={job.cxx}",
|
||||||
"-DCMAKE_SYSTEM_NAME=Linux",
|
"-DCMAKE_SYSTEM_NAME=Linux",
|
||||||
))
|
))
|
||||||
|
job.shared_lib = SharedLibType.SO_0
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.N3ds:
|
case SdlPlatform.N3ds:
|
||||||
job.shared = False
|
job.shared = False
|
||||||
job.apt_packages = ["ninja-build"]
|
job.apt_packages = ["ninja-build", "binutils"]
|
||||||
job.clang_tidy = False
|
job.clang_tidy = False
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.cc_from_cmake = True
|
job.cc_from_cmake = True
|
||||||
job.cmake_toolchain_file = "${DEVKITPRO}/cmake/3DS.cmake"
|
job.cmake_toolchain_file = "${DEVKITPRO}/cmake/3DS.cmake"
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Msys2:
|
case SdlPlatform.Msys2:
|
||||||
job.shell = "msys2 {0}"
|
job.shell = "msys2 {0}"
|
||||||
assert spec.msys2_platform
|
assert spec.msys2_platform
|
||||||
|
@ -602,6 +641,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
"ucrt64": "mingw-w64-ucrt-x86_64",
|
"ucrt64": "mingw-w64-ucrt-x86_64",
|
||||||
}[spec.msys2_platform.value]
|
}[spec.msys2_platform.value]
|
||||||
job.msys2_no_perl = spec.msys2_platform in (Msys2Platform.Mingw32, Msys2Platform.Clang32)
|
job.msys2_no_perl = spec.msys2_platform in (Msys2Platform.Mingw32, Msys2Platform.Clang32)
|
||||||
|
job.shared_lib = SharedLibType.WIN32
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.Riscos:
|
case SdlPlatform.Riscos:
|
||||||
# FIXME: Enable SDL_WERROR
|
# FIXME: Enable SDL_WERROR
|
||||||
job.werror = False
|
job.werror = False
|
||||||
|
@ -616,11 +657,14 @@ def spec_to_job(spec: JobSpec) -> JobDetails:
|
||||||
"-DSDL_GCC_ATOMICS:BOOL=OFF",
|
"-DSDL_GCC_ATOMICS:BOOL=OFF",
|
||||||
))
|
))
|
||||||
job.cmake_toolchain_file = "/home/riscos/env/toolchain-riscos.cmake"
|
job.cmake_toolchain_file = "/home/riscos/env/toolchain-riscos.cmake"
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
case SdlPlatform.FreeBSD | SdlPlatform.NetBSD:
|
case SdlPlatform.FreeBSD | SdlPlatform.NetBSD:
|
||||||
job.cpactions = True
|
job.cpactions = True
|
||||||
job.no_cmake = True
|
job.no_cmake = True
|
||||||
job.run_tests = False
|
job.run_tests = False
|
||||||
job.apt_packages = []
|
job.apt_packages = []
|
||||||
|
job.shared_lib = SharedLibType.SO_0
|
||||||
|
job.static_lib = StaticLibType.A
|
||||||
match spec.platform:
|
match spec.platform:
|
||||||
case SdlPlatform.FreeBSD:
|
case SdlPlatform.FreeBSD:
|
||||||
job.cpactions_os = "freebsd"
|
job.cpactions_os = "freebsd"
|
||||||
|
|
|
@ -179,6 +179,14 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
${{ matrix.platform.source-cmd }}
|
${{ matrix.platform.source-cmd }}
|
||||||
cmake --build build --config ${{ matrix.platform.cmake-build-type }} --verbose -- ${{ matrix.platform.cmake-build-arguments }}
|
cmake --build build --config ${{ matrix.platform.cmake-build-type }} --verbose -- ${{ matrix.platform.cmake-build-arguments }}
|
||||||
|
- name: 'Verify SDL_REVISION'
|
||||||
|
if: ${{ !matrix.platform.no-cmake }}
|
||||||
|
run: |
|
||||||
|
echo "This should show us the SDL_REVISION"
|
||||||
|
echo "Shared library:"
|
||||||
|
${{ (matrix.platform.shared-lib && format('strings build/{0} | grep SDL-', matrix.platform.shared-lib)) || 'echo "<Shared library not supported by platform>"' }}
|
||||||
|
echo "Static library:"
|
||||||
|
${{ (matrix.platform.static-lib && format('strings build/{0} | grep SDL-', matrix.platform.static-lib)) || 'echo "<Static library not supported by platform>"' }}
|
||||||
- name: 'Run build-time tests (CMake)'
|
- name: 'Run build-time tests (CMake)'
|
||||||
id: tests
|
id: tests
|
||||||
if: ${{ !matrix.platform.no-cmake && matrix.platform.run-tests }}
|
if: ${{ !matrix.platform.no-cmake && matrix.platform.run-tests }}
|
||||||
|
@ -189,10 +197,6 @@ jobs:
|
||||||
set -eu
|
set -eu
|
||||||
export SDL_TESTS_QUICK=1
|
export SDL_TESTS_QUICK=1
|
||||||
ctest -VV --test-dir build/ -j2
|
ctest -VV --test-dir build/ -j2
|
||||||
if test "${{ runner.os }}" = "Linux"; then
|
|
||||||
# This should show us the SDL_REVISION
|
|
||||||
strings build/libSDL3.so.0 | grep SDL-
|
|
||||||
fi
|
|
||||||
- name: "Build test apk's (CMake)"
|
- name: "Build test apk's (CMake)"
|
||||||
id: apks
|
id: apks
|
||||||
if: ${{ steps.build.outcome == 'success' && matrix.platform.android-apks != '' }}
|
if: ${{ steps.build.outcome == 'success' && matrix.platform.android-apks != '' }}
|
||||||
|
|
|
@ -659,7 +659,7 @@ function(add_sdl_test TEST TARGET)
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.27")
|
if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.27")
|
||||||
set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_RUNTIME_DLL_DIRS:${TEST}>")
|
set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$<TARGET_RUNTIME_DLL_DIRS:${TARGET}>")
|
||||||
endif()
|
endif()
|
||||||
if(NOT notrackmem)
|
if(NOT notrackmem)
|
||||||
set_property(TEST ${TEST} PROPERTY FAIL_REGULAR_EXPRESSION "Total: [0-9]+\\.[0-9]+ Kb in [1-9][0-9]* allocations")
|
set_property(TEST ${TEST} PROPERTY FAIL_REGULAR_EXPRESSION "Total: [0-9]+\\.[0-9]+ Kb in [1-9][0-9]* allocations")
|
||||||
|
|
Loading…
Reference in New Issue