SDL3 built as a static library as part of build process
All checks were successful
Build and Deploy / build-linux (push) Successful in 1m12s
Build and Deploy / build-windows (CLANG64) (push) Successful in 14m52s
Build and Deploy / package-dist (push) Has been skipped
Build and Deploy / deploy-itch (push) Has been skipped
Build and Deploy / deploy-gitea (push) Has been skipped

This commit is contained in:
2025-02-21 09:40:19 -06:00
parent 60dce4a08f
commit 387c4364b5
4 changed files with 31 additions and 55 deletions

View File

@@ -18,35 +18,8 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Cache SDL3 (Linux)
uses: actions/cache@v3
with:
path: |
sdl3
sdl3-build
key: sdl3-linux-${{ hashFiles('sdl3/CMakeLists.txt') }}
- name: Build SDL3 (Linux)
run: |
if [ ! -d "sdl3/.git" ]; then
echo "Cloning SDL3 repository..."
git clone --depth 1 --branch main https://github.com/libsdl-org/SDL.git sdl3
else
echo "SDL3 source is already present (possibly from cache)."
fi
mkdir -p sdl3-build
cd sdl3-build
cmake ../sdl3 -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${PWD}/installed_sdl3" \
-DSDL_SHARED=ON \
-DSDL_STATIC=OFF
ninja
ninja install
- name: Build Prosperon (Linux) - name: Build Prosperon (Linux)
run: | run: |
export PKG_CONFIG_PATH="${PWD}/sdl3-build/installed_sdl3/lib/pkgconfig:$PKG_CONFIG_PATH"
meson setup build -Dbuildtype=release -Db_lto=true -Db_ndebug=true meson setup build -Dbuildtype=release -Db_lto=true -Db_ndebug=true
meson compile -C build meson compile -C build
@@ -55,6 +28,7 @@ jobs:
TRACY_NO_INVARIANT_CHECK: 1 TRACY_NO_INVARIANT_CHECK: 1
run: | run: |
meson test --print-errorlogs -C build meson test --print-errorlogs -C build
strip build/prosperon
- name: Upload Test Log (Linux) - name: Upload Test Log (Linux)
if: ${{ always() }} if: ${{ always() }}
@@ -63,19 +37,12 @@ jobs:
name: testlog-linux name: testlog-linux
path: build/meson-logs/testlog.txt path: build/meson-logs/testlog.txt
- name: Create artifact folder (Linux)
if: startsWith(github.ref, 'refs/tags/v')
run: |
mkdir _pack
cp build/prosperon _pack/
cp sdl3-build/installed_sdl3/lib/libSDL3.so _pack/
- name: Upload Artifact (Linux) - name: Upload Artifact (Linux)
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: prosperon-artifacts-linux name: prosperon-artifacts-linux
path: _pack path: build/prosperon
build-windows: build-windows:
runs-on: win-native runs-on: win-native
@@ -101,7 +68,6 @@ jobs:
pacboy: | pacboy: |
meson meson
cmake cmake
sdl3
toolchain toolchain
- name: Build Prosperon - name: Build Prosperon
@@ -117,6 +83,7 @@ jobs:
TRACY_NO_INVARIANT_CHECK: 1 TRACY_NO_INVARIANT_CHECK: 1
run: | run: |
meson test --print-errorlogs -C build meson test --print-errorlogs -C build
strip build/prosperon.exe
- name: Upload Test Log - name: Upload Test Log
if: ${{ always() }} if: ${{ always() }}
@@ -125,20 +92,12 @@ jobs:
name: testlog-windows name: testlog-windows
path: build/meson-logs/testlog.txt path: build/meson-logs/testlog.txt
- name: Create package folder
if: startsWith(github.ref, 'refs/tags/v')
shell: msys2 {0}
run: |
mkdir _pack
cp build/prosperon.exe _pack/
pacboy sdl3 | grep "SDL3.dll$" | awk '{print $2}' | xargs -I {} cp {} _pack/
- name: Upload Artifact (Windows) - name: Upload Artifact (Windows)
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: prosperon-artifacts-windows name: prosperon-artifacts-windows
path: _pack path: build/prosperon.exe
package-dist: package-dist:
needs: [build-linux, build-windows] needs: [build-linux, build-windows]

View File

@@ -1,9 +1,7 @@
Thank you for using Prosperon! Thank you for using Prosperon!
Provided are prosperon builds for all available platforms, including SDL3 for each respective one. SDL3 must be present in the same folder as prosperon to run! Provided are prosperon builds for all available platforms. Simply run prosperon for your platform in a game folder to play!
To get started, take a dive into the provided example games in the examples folder. Just copy the prosperon executable for your platform, along with its SDL3 library, into any provided example folder, then run it! To get started, take a dive into the provided example games in the examples folder. Just copy the prosperon executable for your platform, into any provided example folder, then run it!
NOTE: For MacOS, SDL3 must first be installed with homebrew. After installing homebrew, run `brew install sdl3`. This will be fixed in a future release!
You can take a look through the docs folder for the prosperon manual to learn all about it. The manual is available on the web at [docs.prosperon.dev](https://docs.prosperon.dev). You can take a look through the docs folder for the prosperon manual to learn all about it. The manual is available on the web at [docs.prosperon.dev](https://docs.prosperon.dev).

View File

@@ -1,6 +1,6 @@
project('prosperon', ['c', 'cpp'], default_options : [ 'cpp_std=c++11']) project('prosperon', ['c', 'cpp'], default_options : [ 'cpp_std=c++11'])
libtype = get_option('default_library') libtype = get_option('default_library')
link = [] link = []
src = [] src = []
@@ -44,8 +44,16 @@ if host_machine.system() == 'darwin'
endforeach endforeach
endif endif
cmake = import('cmake')
sdl3_cmake_options = [
'-DSDL_STATIC=ON',
'-DSDL_SHARED=OFF',
'-DSDL_TEST=OFF',
'-DCMAKE_BUILD_TYPE=Release',
]
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
deps += dependency('sdl3', required:true)
if host_machine.system() == 'darwin' if host_machine.system() == 'darwin'
deps += dependency('appleframeworks', modules: 'accelerate') deps += dependency('appleframeworks', modules: 'accelerate')
@@ -56,22 +64,29 @@ endif
if host_machine.system() == 'linux' if host_machine.system() == 'linux'
deps += cc.find_library('asound', required:true) deps += cc.find_library('asound', required:true)
deps += [dependency('x11'), dependency('xi'), dependency('xcursor'), dependency('egl'), dependency('gl')] deps += [dependency('x11'), dependency('xi'), dependency('xcursor'), dependency('egl'), dependency('gl')]
# link += '-fuse-ld=mold' # use mold, which is very fast, for debug builds
endif endif
if host_machine.system() == 'windows' if host_machine.system() == 'windows'
deps += cc.find_library('d3d11') deps += cc.find_library('d3d11')
# these are for tracy
deps += cc.find_library('ws2_32', required:true) deps += cc.find_library('ws2_32', required:true)
deps += cc.find_library('dbghelp') deps += cc.find_library('dbghelp')
#end deps += cc.find_library('winmm')
link += '-static' # Required to pack in mingw dlls on cross compilation deps += cc.find_library('setupapi')
deps += cc.find_library('imm32')
deps += cc.find_library('version')
deps += cc.find_library('cfgmgr32')
sdl3_cmake_options += '-DHAVE_ISINF=1' # TODO: A hack to get this to compile on MSYS2; otherwise it doesn't link correctly
link += '-static'
endif endif
if host_machine.system() == 'emscripten' if host_machine.system() == 'emscripten'
link += '-sUSE_WEBGPU' link += '-sUSE_WEBGPU'
endif endif
sdl3_proj = cmake.subproject('sdl3', cmake_options: sdl3_cmake_options)
deps += sdl3_proj.dependency('SDL3-static')
tracy_opts = ['fibers=true', 'on_demand=true'] tracy_opts = ['fibers=true', 'on_demand=true']
quickjs_opts = [] quickjs_opts = []

4
subprojects/sdl3.wrap Normal file
View File

@@ -0,0 +1,4 @@
[wrap-git]
url = https://github.com/libsdl-org/SDL.git
revision = release-3.2.4
depth = 1