aboutsummaryrefslogtreecommitdiffhomepage
path: root/build_win.bat
diff options
context:
space:
mode:
authorCalvin Rose <calsrose@gmail.com>2018-08-07 00:54:47 -0400
committerCalvin Rose <calsrose@gmail.com>2018-08-07 00:54:47 -0400
commit48c26543126bdd028b8b02b0a69313147ed281e2 (patch)
tree0ae4d20f33ca42bd9ded39b52efb51203a6b49f0 /build_win.bat
parentSilence some more msvc errors. (diff)
Local changes.
Diffstat (limited to 'build_win.bat')
-rw-r--r--build_win.bat98
1 files changed, 98 insertions, 0 deletions
diff --git a/build_win.bat b/build_win.bat
new file mode 100644
index 00000000..dcee10b4
--- /dev/null
+++ b/build_win.bat
@@ -0,0 +1,98 @@
+@rem Build dst on windows
+@rem
+@rem Open a "Windows SDK Command Shell" and cd to the dst directory
+@rem Then run this script with no arguments to build the executable
+
+@echo off
+
+@rem Ensure correct command prompt
+@if not defined INCLUDE goto :BADCMD
+
+@rem Sub commands
+@if "%1"=="help" goto HELP
+@if "%1"=="clean" goto CLEAN
+@if "%1"=="test" goto TEST
+
+@rem Set compile and link options here
+@setlocal
+@set DST_COMPILE=cl /nologo /Isrc\include /c /O2 /W3 /LD /D_CRT_SECURE_NO_WARNINGS
+@set DST_LINK=link /nologo
+
+mkdir build
+mkdir build\core
+mkdir build\mainclient
+
+@rem Build the xxd tool for generating sources
+@cl /nologo /c src/tools/xxd.c /Fobuild\xxd.obj
+@if errorlevel 1 goto :BUILDFAIL
+@link /nologo /out:build\xxd.exe build\xxd.obj
+@if errorlevel 1 goto :BUILDFAIL
+
+@rem Generate the headers
+@build\xxd.exe src\core\core.dst src\include\generated\core.h dst_gen_core
+@if errorlevel 1 goto :BUILDFAIL
+@build\xxd.exe src\mainclient\init.dst src\include\generated\init.h dst_gen_init
+@if errorlevel 1 goto :BUILDFAIL
+
+@rem Build the sources
+for %%f in (src\core\*.c) do (
+ @%DST_COMPILE% /Fobuild\core\%%~nf.obj %%f
+ @if errorlevel 1 goto :BUILDFAIL
+)
+
+@rem Build the main client
+for %%f in (src\mainclient\*.c) do (
+ @%DST_COMPILE% /Fobuild\mainclient\%%~nf.obj %%f
+ @if errorlevel 1 goto :BUILDFAIL
+)
+
+@rem Link everything to main client
+%DST_LINK% /out:dst.exe build\core\*.obj build\mainclient\*.obj
+@if errorlevel 1 goto :BUILDFAIL
+
+echo === Successfully built dst.exe for Windows ===
+echo === Run 'build_win test' to run tests. ==
+echo === Run 'build_win clean' to delete build artifacts. ===
+exit /b 0
+
+@rem Not using correct command line
+:BADCMD
+@echo You must open a "Visual Studio .NET Command Prompt" to run this script
+exit /b 1
+
+@rem Show help
+:HELP
+@echo.
+@echo Usage: build_windows [subcommand=clean,help,test]
+@echo.
+@echo Script to build dst on windows. Must be run from the Visual Studio
+@echo command prompt.
+exit /b 0
+
+@rem Clean build artifacts
+:CLEAN
+del dst.exe dst.exp dst.lib
+rd /s /q build
+exit /b 0
+
+@rem Run tests
+:TEST
+for %%f in (test/suite*.dst) do (
+ dst.exe test\%%f
+ @if errorlevel 1 goto :TESTFAIL
+)
+exit /b 0
+:TESTFAIL
+@echo.
+@echo *******************************************************
+@echo *** Tests FAILED -- Please check the error messages ***
+@echo *******************************************************
+exit /b 1
+
+@rem Build failed
+:BUILDFAIL
+@echo.
+@echo *******************************************************
+@echo *** Build FAILED -- Please check the error messages ***
+@echo *******************************************************
+exit /b 1