mirror of
https://github.com/Bithack/principia.git
synced 2026-06-24 02:04:08 +00:00
Fix up CI builds to build with SDL3
Adds a new CMake option to build with a vendored copy of the latest version of SDL3, which gets downloaded during configuration.
This commit is contained in:
parent
e00585b9fe
commit
73f0dd1195
11 changed files with 107 additions and 30 deletions
8
.github/workflows/linux.yml
vendored
8
.github/workflows/linux.yml
vendored
|
|
@ -30,10 +30,10 @@ jobs:
|
|||
- name: Install deps
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y clang-16 libgtk-3-dev libgl-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev cmake ninja-build desktop-file-utils ca-certificates wget file --no-install-recommends
|
||||
|
||||
wget https://github.com/principia-game/linux-deps/releases/download/latest/deps.tar.gz -O linux-deps.tar.gz
|
||||
tar -xaf linux-deps.tar.gz -C /
|
||||
apt-get install -y \
|
||||
clang-16 libgtk-3-dev libgl-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev cmake ninja-build desktop-file-utils ca-certificates wget file \
|
||||
libasound2-dev libpulse-dev libjack-dev libsndio-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev libpipewire-0.3-dev libwayland-dev libdecor-0 liburing-dev \
|
||||
--no-install-recommends
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
|
|
|||
4
.github/workflows/linux_ss.yml
vendored
4
.github/workflows/linux_ss.yml
vendored
|
|
@ -18,14 +18,14 @@ on:
|
|||
|
||||
jobs:
|
||||
linux_ss:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y g++ libgl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev cmake ninja-build --no-install-recommends
|
||||
sudo apt-get install -y g++ libgl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl3-dev cmake ninja-build --no-install-recommends
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
|
|
|||
2
.github/workflows/macos.yml
vendored
2
.github/workflows/macos.yml
vendored
|
|
@ -29,7 +29,7 @@ jobs:
|
|||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
brew update --auto-update
|
||||
brew install cmake ninja libpng libjpeg-turbo freetype sdl2 gtk+3
|
||||
brew install cmake ninja libpng libjpeg-turbo freetype sdl3 gtk+3
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
|
|
|
|||
2
.github/workflows/web.yml
vendored
2
.github/workflows/web.yml
vendored
|
|
@ -35,7 +35,7 @@ jobs:
|
|||
- name: Build
|
||||
run: |
|
||||
mkdir build; cd build
|
||||
emcmake cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=
|
||||
emcmake cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX= -DUSE_VENDORED_SDL3=ON
|
||||
ninja
|
||||
DESTDIR=../web ninja install
|
||||
|
||||
|
|
|
|||
2
.github/workflows/windows.yml
vendored
2
.github/workflows/windows.yml
vendored
|
|
@ -41,7 +41,7 @@ jobs:
|
|||
gtk3:p
|
||||
libpng:p
|
||||
libjpeg-turbo:p
|
||||
SDL2:p
|
||||
SDL3:p
|
||||
nsis:p
|
||||
7zip:p
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ endif()
|
|||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
||||
|
||||
include(DownloadLib)
|
||||
|
||||
add_custom_target(GenerateGitVersion
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D "GENERATE_VERSION_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
|
|
@ -25,18 +27,21 @@ add_custom_target(GenerateGitVersion
|
|||
option(UNITY_BUILD "Experimental unity build" FALSE)
|
||||
mark_as_advanced(UNITY_BUILD)
|
||||
|
||||
option(USE_VENDORED_SDL3 "Build with vendored SDL3 library" FALSE)
|
||||
|
||||
# Find core dependencies
|
||||
# ----------------------
|
||||
|
||||
if(USE_VENDORED_SDL3)
|
||||
include(cmake/SDL.cmake)
|
||||
else()
|
||||
find_package(SDL3 REQUIRED)
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
include(PrincipiaAndroidLibs)
|
||||
|
||||
else()
|
||||
if(NOT EMSCRIPTEN)
|
||||
find_package(SDL3 REQUIRED)
|
||||
endif()
|
||||
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
find_package(OpenGL REQUIRED)
|
||||
endif()
|
||||
|
|
@ -230,8 +235,6 @@ if(NOT EMSCRIPTEN)
|
|||
PNG::PNG
|
||||
ZLIB::ZLIB)
|
||||
|
||||
list(APPEND LIBS SDL3::SDL3)
|
||||
|
||||
if(NOT SCREENSHOT_BUILD AND NOT EMSCRIPTEN)
|
||||
list(APPEND LIBS ${CURL_LIBRARIES})
|
||||
|
||||
|
|
@ -241,6 +244,8 @@ if(NOT EMSCRIPTEN)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
list(APPEND LIBS SDL3::SDL3)
|
||||
|
||||
if(SHOULD_USE_GLES)
|
||||
list(APPEND LIBS GLESv2)
|
||||
else()
|
||||
|
|
@ -289,7 +294,7 @@ set(COMMON_FLAGS "-fno-math-errno -fno-trapping-math -fno-signed-zeros")
|
|||
|
||||
if(EMSCRIPTEN)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "--preload-file ../data/")
|
||||
set(LIBRARY_FLAGS "-sUSE_FREETYPE=1 -sUSE_LIBJPEG=1 -sUSE_LIBPNG=1 -sUSE_ZLIB=1 -sUSE_SDL=2 -pthread")
|
||||
set(LIBRARY_FLAGS "-sUSE_FREETYPE=1 -sUSE_LIBJPEG=1 -sUSE_LIBPNG=1 -sUSE_ZLIB=1 -pthread")
|
||||
string(APPEND COMMON_FLAGS " ${LIBRARY_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS " ${LIBRARY_FLAGS} -pthread -sPTHREAD_POOL_SIZE=20 -sINITIAL_MEMORY=2013265920 -sALLOW_MEMORY_GROWTH=1 -sTOTAL_STACK=16Mb -sFETCH=1")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -16,9 +16,7 @@ android {
|
|||
versionName "2026.06.06"
|
||||
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
arguments '-j' + Runtime.getRuntime().availableProcessors()
|
||||
}
|
||||
cmake.arguments "-DUSE_VENDORED_SDL3=1"
|
||||
}
|
||||
|
||||
ndk {
|
||||
|
|
|
|||
51
cmake/Modules/DownloadLib.cmake
Normal file
51
cmake/Modules/DownloadLib.cmake
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
function(download_dep_tarball depname version url sha256)
|
||||
set(lib_path "${CMAKE_SOURCE_DIR}/lib")
|
||||
|
||||
get_filename_component(filename "${url}" NAME)
|
||||
set(download_path "${lib_path}/${depname}-${filename}")
|
||||
|
||||
set(dep_path "${lib_path}/${depname}")
|
||||
set(ver_file "${dep_path}/.download_version")
|
||||
|
||||
if(EXISTS "${ver_file}")
|
||||
file(READ "${ver_file}" current_version)
|
||||
if("${current_version}" STREQUAL "${version}")
|
||||
# up to date
|
||||
return()
|
||||
endif()
|
||||
|
||||
# outdated, redownload
|
||||
file(REMOVE_RECURSE "${dep_path}")
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY "${dep_path}")
|
||||
|
||||
message(STATUS "Downloading ${depname} ${version}")
|
||||
file(DOWNLOAD "${url}" "${download_path}" STATUS status)
|
||||
|
||||
list(GET status 0 status_code)
|
||||
if(NOT status_code EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to download ${depname}, status: ${status}")
|
||||
endif()
|
||||
|
||||
# Verify SHA256 checksum if provided
|
||||
if(NOT sha256 STREQUAL "SKIP")
|
||||
file(SHA256 "${download_path}" downloaded_sha256)
|
||||
if(NOT "${downloaded_sha256}" STREQUAL "${sha256}")
|
||||
message(FATAL_ERROR "SHA256 checksum mismatch for ${depname}!\n Expected: ${sha256}\n Got: ${downloaded_sha256}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "Extracting...")
|
||||
execute_process(
|
||||
COMMAND tar -xzf "${download_path}" --strip-components=1
|
||||
WORKING_DIRECTORY "${dep_path}"
|
||||
RESULT_VARIABLE extract_result)
|
||||
|
||||
if(NOT extract_result EQUAL 0)
|
||||
message(FATAL_ERROR "Failed to extract ${depname}")
|
||||
endif()
|
||||
|
||||
file(WRITE "${ver_file}" "${version}")
|
||||
endfunction()
|
||||
|
|
@ -9,9 +9,3 @@ set(JPEG_INCLUDE_DIR ${DEPS}/libjpeg/include)
|
|||
set(JPEG_LIBRARY ${DEPS}/libjpeg/libjpeg.a)
|
||||
set(PNG_PNG_INCLUDE_DIR ${DEPS}/libpng/include) #what
|
||||
set(PNG_LIBRARY ${DEPS}/libpng/libpng.a)
|
||||
|
||||
add_library(SDL2::SDL2 STATIC IMPORTED)
|
||||
|
||||
set_target_properties(SDL2::SDL2 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${DEPS}/SDL2/include/SDL2
|
||||
IMPORTED_LOCATION ${DEPS}/SDL2/libSDL2.a)
|
||||
|
|
|
|||
32
cmake/SDL.cmake
Normal file
32
cmake/SDL.cmake
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
set(DEP_SDL_VER "3.4.10")
|
||||
download_dep_tarball(
|
||||
"SDL"
|
||||
"${DEP_SDL_VER}"
|
||||
"https://github.com/libsdl-org/SDL/releases/download/release-${DEP_SDL_VER}/SDL3-${DEP_SDL_VER}.tar.gz"
|
||||
"12b34280415ec8418c864408b93d008a20a6530687ee613d60bfbd20411f2785"
|
||||
)
|
||||
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
|
||||
set(SDL_STATIC ON CACHE BOOL "" FORCE)
|
||||
|
||||
set(DISABLED_FEATURES CAMERA GPU HAPTIC POWER RENDER SENSOR TESTS VULKAN)
|
||||
|
||||
foreach(feature ${DISABLED_FEATURES})
|
||||
set(SDL_${feature} OFF CACHE BOOL "" FORCE)
|
||||
endforeach()
|
||||
|
||||
if(ANDROID OR HAIKU)
|
||||
enable_language(CXX)
|
||||
endif()
|
||||
|
||||
if(HAIKU)
|
||||
add_definitions(-fPIC)
|
||||
endif()
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
set(SDL_PTHREADS ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
add_definitions(-DSDL_LEAN_AND_MEAN=1)
|
||||
|
||||
add_subdirectory(lib/SDL EXCLUDE_FROM_ALL)
|
||||
|
|
@ -16,7 +16,7 @@ fi
|
|||
rm -rf AppDir
|
||||
|
||||
# Compile
|
||||
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=AppDir/usr/
|
||||
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=AppDir/usr/ -DUSE_VENDORED_SDL3=ON
|
||||
ninja
|
||||
|
||||
# Strip binary and create debug symbol file
|
||||
|
|
@ -79,9 +79,6 @@ for i in "${INCLUDE_LIBS[@]}"; do
|
|||
cp /usr/lib/x86_64-linux-gnu/$i usr/lib/
|
||||
done
|
||||
|
||||
# Copy our own built SDL2
|
||||
cp /usr/lib/libSDL2-2.0.so.0 usr/lib/
|
||||
|
||||
# Actually build the appimage
|
||||
cd ..
|
||||
ARCH=x86_64 ./appimagetool --appimage-extract-and-run AppDir/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue