inital, almost working cross-compilation setup with Visual Studio and cmake
This commit is contained in:
53
scripts/build_sdl_linux.sh
Normal file
53
scripts/build_sdl_linux.sh
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
SDL_SOURCE="$PROJECT_ROOT/external/SDL"
|
||||
BUILD_DIR="$PROJECT_ROOT/out/build/_sdl_build/linux"
|
||||
PREBUILT_DIR="$PROJECT_ROOT/prebuilt/linux"
|
||||
BUILD_TYPE="${1:-Release}"
|
||||
|
||||
build_sdl() {
|
||||
local LINK_TYPE="$1"
|
||||
local SHARED="OFF"
|
||||
local STATIC="OFF"
|
||||
|
||||
if [ "$LINK_TYPE" = "dynamic" ]; then SHARED="ON"; else STATIC="ON"; fi
|
||||
|
||||
local OUT_DIR="$PREBUILT_DIR/SDL3-$LINK_TYPE"
|
||||
local BUILD_OUT="$BUILD_DIR/$LINK_TYPE"
|
||||
|
||||
echo ""
|
||||
echo "=== Building SDL3 ($LINK_TYPE) for Linux ==="
|
||||
|
||||
cmake -S "$SDL_SOURCE" -B "$BUILD_OUT" \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||
-DCMAKE_INSTALL_PREFIX="$OUT_DIR" \
|
||||
-DCMAKE_C_COMPILER=gcc-12 \
|
||||
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||
-DSDL_SHARED="$SHARED" \
|
||||
-DSDL_STATIC="$STATIC" \
|
||||
-DSDL_INSTALL=ON \
|
||||
-DSDL_TEST_LIBRARY=OFF \
|
||||
-DSDL_TESTS=OFF
|
||||
|
||||
cmake --build "$BUILD_OUT"
|
||||
cmake --install "$BUILD_OUT"
|
||||
|
||||
echo "=== Done: $OUT_DIR ==="
|
||||
}
|
||||
|
||||
# Install build dependencies if needed (Debian 12 bookworm)
|
||||
echo "Checking build dependencies..."
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
ninja-build cmake build-essential \
|
||||
gcc-12 g++-12 \
|
||||
libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev \
|
||||
libwayland-dev libpulse-dev libasound2-dev \
|
||||
libgl1-mesa-dev
|
||||
|
||||
build_sdl "dynamic"
|
||||
build_sdl "static"
|
||||
48
scripts/build_sdl_windows.ps1
Normal file
48
scripts/build_sdl_windows.ps1
Normal file
@@ -0,0 +1,48 @@
|
||||
param(
|
||||
[string]$BuildType = "Release"
|
||||
)
|
||||
|
||||
$ProjectRoot = Resolve-Path "$PSScriptRoot\.."
|
||||
$SdlSource = "$ProjectRoot\external\SDL"
|
||||
$BuildDir = "$ProjectRoot\out\build\_sdl_build\windows"
|
||||
$PrebuiltDir = "$ProjectRoot\prebuilt\windows"
|
||||
|
||||
function Build-SDL {
|
||||
param([string]$LinkType)
|
||||
|
||||
$Shared = if ($LinkType -eq "dynamic") { "ON" } else { "OFF" }
|
||||
$Static = if ($LinkType -eq "static") { "ON" } else { "OFF" }
|
||||
$OutDir = "$PrebuiltDir\SDL3-$LinkType"
|
||||
$BuildOut = "$BuildDir\$LinkType"
|
||||
|
||||
Write-Host "`n=== Building SDL3 ($LinkType) for Windows ===" -ForegroundColor Cyan
|
||||
|
||||
# Wipe any stale build directory to avoid corrupted cache issues
|
||||
if (Test-Path $BuildOut) {
|
||||
Write-Host "Removing stale build directory: $BuildOut" -ForegroundColor Yellow
|
||||
Remove-Item -Recurse -Force $BuildOut
|
||||
}
|
||||
|
||||
cmake -S "$SdlSource" -B "$BuildOut" `
|
||||
-G "Visual Studio 17 2022" `
|
||||
-A x64 `
|
||||
-DCMAKE_INSTALL_PREFIX="$OutDir" `
|
||||
-DSDL_SHARED="$Shared" `
|
||||
-DSDL_STATIC="$Static" `
|
||||
-DSDL_INSTALL=ON `
|
||||
-DSDL_TEST_LIBRARY=OFF `
|
||||
-DSDL_TESTS=OFF
|
||||
|
||||
if ($LASTEXITCODE -ne 0) { Write-Error "CMake configure failed"; exit 1 }
|
||||
|
||||
cmake --build "$BuildOut" --config "$BuildType"
|
||||
if ($LASTEXITCODE -ne 0) { Write-Error "CMake build failed"; exit 1 }
|
||||
|
||||
cmake --install "$BuildOut" --config "$BuildType"
|
||||
if ($LASTEXITCODE -ne 0) { Write-Error "CMake install failed"; exit 1 }
|
||||
|
||||
Write-Host "=== Done: $OutDir ===" -ForegroundColor Green
|
||||
}
|
||||
|
||||
Build-SDL -LinkType "dynamic"
|
||||
Build-SDL -LinkType "static"
|
||||
Reference in New Issue
Block a user