blob: 9c4631c062ceb9090e5074e3f1e2eb9b235a0db8 (
plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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
|