From d00dedfdd05d5bea20ec9b8948983070c40f5313 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Sun, 31 Aug 2025 21:10:39 +0100 Subject: [PATCH] dos: get SDL via CMake Now that the DOS SDL supports CMake, this is a much better option that `configure`, because it lets us easily test out local changes to SDL, e.g.: ```bash cmake -S. -Bbuild-dos -DCMAKE_TOOLCHAIN_FILE=CMake/platforms/djcpp.toolchain.cmake \ -DTARGET_PLATFORM="dos" -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF \ -DFETCHCONTENT_SOURCE_DIR_SDL2="${HOME}/diasurgical-SDL" ``` --- 3rdParty/SDL2/CMakeLists.txt | 14 ++++++++++++-- CMake/platforms/dos.cmake | 2 +- Packaging/windows/dos-prep.sh | 13 ------------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/3rdParty/SDL2/CMakeLists.txt b/3rdParty/SDL2/CMakeLists.txt index 054967d93..eee6b5a91 100644 --- a/3rdParty/SDL2/CMakeLists.txt +++ b/3rdParty/SDL2/CMakeLists.txt @@ -14,8 +14,18 @@ set(SDL_TEST_ENABLED_BY_DEFAULT OFF) include(functions/FetchContent_ExcludeFromAll_backport) include(FetchContent) -FetchContent_Declare(SDL2 + +if(TARGET_PLATFORM STREQUAL "dos") + set(DOS ON) + FetchContent_Declare(SDL2 + # branch: dos-vbe-rebase + URL https://github.com/diasurgical/SDL/archive/6a87741b50e52b93852eb8ab59a89495ae9e607b.tar.gz + URL_HASH MD5=a41f10f31b3ec00256c85131291bb0c3 + ) +else() + FetchContent_Declare(SDL2 URL https://github.com/libsdl-org/SDL/releases/download/release-2.32.8/SDL2-2.32.8.tar.gz URL_HASH SHA256=0ca83e9c9b31e18288c7ec811108e58bac1f1bb5ec6577ad386830eac51c787e -) + ) +endif() FetchContent_MakeAvailable_ExcludeFromAll(SDL2) diff --git a/CMake/platforms/dos.cmake b/CMake/platforms/dos.cmake index e68ae23c4..95712941e 100644 --- a/CMake/platforms/dos.cmake +++ b/CMake/platforms/dos.cmake @@ -11,7 +11,7 @@ set(DEVILUTIONX_SYSTEM_BZIP2 OFF) set(DEVILUTIONX_SYSTEM_LIBFMT OFF) set(DEVILUTIONX_SYSTEM_ZLIB OFF) set(DEVILUTIONX_STATIC_ZLIB ON) -set(DEVILUTIONX_SYSTEM_SDL2 ON) +set(DEVILUTIONX_SYSTEM_SDL2 OFF) set(DEVILUTIONX_STATIC_SDL2 ON) set(DEVILUTIONX_SYSTEM_SDL_IMAGE OFF) set(DEVILUTIONX_SYSTEM_LIBPNG OFF) diff --git a/Packaging/windows/dos-prep.sh b/Packaging/windows/dos-prep.sh index c3e7f43ee..031c5c622 100755 --- a/Packaging/windows/dos-prep.sh +++ b/Packaging/windows/dos-prep.sh @@ -31,25 +31,12 @@ build_and_install_djgpp() { $SUDO rm -rf build-gcc } -# Build and install SDL2 for DOS -build_and_install_sdl2() { - git clone --branch=dos-vbe-rebase https://github.com/diasurgical/SDL.git - cd SDL - "${INSTALL_PREFIX}/bin/i386-pc-msdosdjgpp-setenv" autoreconf -fi --verbose - "${INSTALL_PREFIX}/bin/i386-pc-msdosdjgpp-setenv" ./configure --host=i386-pc-msdosdjgpp --prefix="${INSTALL_PREFIX}/i386-pc-msdosdjgpp" --disable-shared --enable-static --enable-video-svga --enable-timer-dos --enable-uclock - "${INSTALL_PREFIX}/bin/i386-pc-msdosdjgpp-setenv" make -j$(nproc) - $SUDO "${INSTALL_PREFIX}/bin/i386-pc-msdosdjgpp-setenv" make install - cd - - rm -rf SDL -} - main() { set -x mkdir -p tmp/dos-prep cd tmp/dos-prep install_system_deps build_and_install_djgpp - build_and_install_sdl2 } main "$@"