-
-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathbuild_sdl3.cmd
More file actions
84 lines (69 loc) · 2.09 KB
/
build_sdl3.cmd
File metadata and controls
84 lines (69 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
@echo off
setlocal enabledelayedexpansion
echo === Building SDL3 if needed ===
REM --- Locate SDL folder ---
set "SDL_DIR=%~dp0external\SDL"
if not exist "%SDL_DIR%\CMakeLists.txt" (
echo ERROR: SDL folder not found at %SDL_DIR%
exit /b 1
)
REM --- Get current submodule commit hash ---
pushd "%SDL_DIR%" >nul
for /f %%H in ('git rev-parse HEAD') do set "SDL_HASH=%%H"
if not defined SDL_HASH (
echo ERROR: Could not read SDL git hash. Is the submodule initialized?
popd >nul
exit /b 1
)
popd >nul
REM --- Paths for artifacts and stored hash ---
set "SDL_BUILD_DIR=%SDL_DIR%\build\msvc-x64-static"
set "SDL_LIB_DIR=%SDL_BUILD_DIR%\Release"
set "HASH_FILE=%SDL_BUILD_DIR%\.sdl_build_hash"
REM --- Flags ---
set "NEED_RELEASE_BUILD=0"
set "DID_REBUILD=0"
REM --- Check Release needs rebuild ---
if not exist "%SDL_LIB_DIR%\SDL3-static.lib" set "NEED_RELEASE_BUILD=1"
if not exist "%HASH_FILE%" set "NEED_RELEASE_BUILD=1"
if exist "%HASH_FILE%" (
set "OLD_HASH="
set /p OLD_HASH=<"%HASH_FILE%"
if not "!OLD_HASH!"=="%SDL_HASH%" set "NEED_RELEASE_BUILD=1"
)
REM --- If hash is outdated, wipe the build folder ---
if "%NEED_RELEASE_BUILD%"=="1" (
echo [SDL3] Clearing old build files...
rmdir /s /q "%SDL_BUILD_DIR%" 2>nul
mkdir "%SDL_BUILD_DIR%" 2>nul
)
REM --- Configure and build Release ---
if "%NEED_RELEASE_BUILD%"=="1" (
echo [SDL3] Configuring Release...
cmake -S "%SDL_DIR%" -B "%SDL_BUILD_DIR%" ^
-A x64 ^
-T v143 ^
-DSDL_SHARED=OFF ^
-DSDL_STATIC=ON ^
-DSDL_TESTS=OFF ^
-DSDL_EXAMPLES=OFF
if errorlevel 1 (
echo ERROR: SDL3 configure failed.
exit /b 1
)
echo [SDL3] Building Release...
cmake --build "%SDL_BUILD_DIR%" --config Release --parallel
if errorlevel 1 (
echo ERROR: SDL3 Release build failed.
exit /b 1
)
set "DID_REBUILD=1"
) else (
echo [SDL3] Release build up to date, skipping.
)
REM --- Update hash only after build succeeds ---
if "%DID_REBUILD%"=="1" (
>"%HASH_FILE%" echo %SDL_HASH%
)
echo === SDL3 build check complete ===
endlocal