diff options
| author | dawidg81 <dawidgorski.m@gmail.com> | 2026-02-13 10:39:08 +0100 |
|---|---|---|
| committer | dawidg81 <dawidgorski.m@gmail.com> | 2026-02-13 10:39:08 +0100 |
| commit | 2868236d6a7ec4ec46c7e0224e3bb1821fa2be7c (patch) | |
| tree | 222df4c16ada7e1d7860e9cf2a95439b844ff8b8 /build.bat | |
| parent | 6415fc25141eef3d3efc7d7ac67bb564c499e7e0 (diff) | |
Updated README.md; Implemented more backends; more build files, native for windows
Diffstat (limited to 'build.bat')
| -rw-r--r-- | build.bat | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..9c4631c --- /dev/null +++ b/build.bat @@ -0,0 +1,119 @@ +@echo off +REM build.bat - Batch build script for libgraffik +REM Usage: build.bat <backend> <example> + +setlocal enabledelayedexpansion + +set LIB_DIR=lib +set EXAMPLES_DIR=examples +set BUILD_DIR=build +set CXX=g++ +set CXXFLAGS=-std=c++11 -Wall -Wextra -I%LIB_DIR% + +if "%1"=="" goto show_help +if "%1"=="help" goto show_help +if "%1"=="-h" goto show_help +if "%1"=="--help" goto show_help +if "%1"=="clean" goto clean + +set BACKEND=%1 +set EXAMPLE=%2 + +if "%EXAMPLE%"=="" ( + echo Error: Example not specified + echo Usage: build.bat ^<backend^> ^<example^> + echo Example: build.bat sdl sample1 + exit /b 1 +) + +REM Validate example exists +if not exist "%EXAMPLES_DIR%\%EXAMPLE%.cpp" ( + echo Error: Example '%EXAMPLE%' not found + echo. + echo Available examples: + for %%f in (%EXAMPLES_DIR%\*.cpp) do echo %%~nf + exit /b 1 +) + +REM Create build directory +if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%" + +REM Set backend-specific flags +if /i "%BACKEND%"=="sdl" ( + set BACKEND_DEFINE=-DUSE_SDL + if not defined SDL2_PATH set SDL2_PATH=C:\SDL2 + set INCLUDES=-I!SDL2_PATH!\include -I!SDL2_PATH!\include\SDL2 + set LDFLAGS=-L!SDL2_PATH!\lib + set LIBS=-lmingw32 -lSDL2main -lSDL2 -mwindows + + REM Copy SDL2.dll + if exist "%LIB_DIR%\SDL2.dll" ( + copy /y "%LIB_DIR%\SDL2.dll" "%BUILD_DIR%\" >nul 2>&1 + ) else if exist "!SDL2_PATH!\bin\SDL2.dll" ( + copy /y "!SDL2_PATH!\bin\SDL2.dll" "%BUILD_DIR%\" >nul 2>&1 + ) +) else if /i "%BACKEND%"=="win32" ( + set BACKEND_DEFINE=-DUSE_WIN32 + set INCLUDES= + set LDFLAGS= + set LIBS=-lgdi32 -luser32 +) else ( + echo Error: Invalid backend '%BACKEND%' + echo Available backends: sdl, win32 + exit /b 1 +) + +echo Building %EXAMPLE% with %BACKEND% backend... +echo. + +REM Build command +%CXX% %CXXFLAGS% %BACKEND_DEFINE% %INCLUDES% ^ + %EXAMPLES_DIR%\%EXAMPLE%.cpp %LIB_DIR%\graphics.cpp ^ + -o %BUILD_DIR%\%EXAMPLE%.exe ^ + %LDFLAGS% %LIBS% + +if %errorlevel% equ 0 ( + echo. + echo Build successful! + echo Output: %BUILD_DIR%\%EXAMPLE%.exe + echo. + echo Run with: %BUILD_DIR%\%EXAMPLE%.exe + exit /b 0 +) else ( + echo. + echo Build failed! + exit /b 1 +) + +:show_help +echo ======================================== +echo libgraffik Build System +echo ======================================== +echo. +echo Usage: +echo build.bat ^<backend^> ^<example^> +echo build.bat clean +echo. +echo Available Backends: +echo sdl - SDL2 (cross-platform) +echo win32 - Win32 API (Windows native) +echo. +echo Available Examples: +for %%f in (%EXAMPLES_DIR%\*.cpp) do echo %%~nf +echo. +echo Examples: +echo build.bat sdl sample1 +echo build.bat win32 sample2 +echo build.bat clean +echo. +exit /b 0 + +:clean +echo Cleaning build files... +if exist "%BUILD_DIR%" ( + rmdir /s /q "%BUILD_DIR%" + echo Clean complete +) else ( + echo Nothing to clean +) +exit /b 0 |
