1+ @ if [%1 ]== [] @ goto usage
2+ @ goto Run
3+
4+ :Usage
5+ echo .%~nx0 [flags and arguments]
6+ echo .
7+ echo .Available flags:
8+ echo . -h Display this help message
9+ echo .
10+ echo .Available arguments:
11+ echo . -c Release ^ | Debug ^ |
12+ echo . Set the configuration (default: Debug)
13+ exit /b 127
14+
15+ :Run
16+ @ set S_COMPILER_FLAGS_FINAL = %S_COMPILER_FLAGS%
17+ @ set S_LINKER_FLAGS_FINAL = %S_LINKER_FLAGS%
18+ @ set S_LINK_LIBRARIES_FINAL = %S_LINK_LIBRARIES%
19+ @ set S_INCLUDE_DIRECTORIES_FINAL = %S_INCLUDE_DIRECTORIES%
20+ @ set S_LINK_DIRECTORIES_FINAL = %S_LINK_DIRECTORIES%
21+ @ set S_DEFINES_FINAL = %S_DEFINES%
22+ @ set S_FINAL_RESULT = [1m[36mPending.[0m
23+ @ set S_CONFIG_INFO = Debug
24+
25+ :CheckOpts
26+ @ if " %~1 " == " -h" @ goto Usage
27+ @ if " %~1 " == " -i" @ goto PrintInfo
28+ @ if " %~1 " == " -c" (@ set conf = %2 ) & @ shift & @ shift & @ goto CheckOpts
29+
30+ @ if " %conf% " EQU " Release" (
31+ @ set S_COMPILER_FLAGS_FINAL = %S_COMPILER_FLAGS_FINAL% %S_RELEASE_COMPILER_FLAGS%
32+ @ set S_LINKER_FLAGS_FINAL = %S_LINKER_FLAGS_FINAL% %S_RELEASE_LINKER_FLAGS%
33+ @ set S_LINK_LIBRARIES_FINAL = %S_LINK_LIBRARIES_FINAL% %S_RELEASE_LINK_LIBARIES%
34+ @ set S_DEFINES_FINAL = %S_DEFINES_FINAL% %S_RELEASE_DEFINES%
35+ @ set S_LINK_DIRECTORIES_FINAL = %S_LINK_DIRECTORIES_FINAL% %S_RELEASE_LINK_DIRECTORIES%
36+ @ set S_FINAL_RESULT = [1m[36mPending.[0m
37+ @ set S_CONFIG_INFO = Release
38+ )
39+ @ if " %conf% " EQU " Debug" (
40+ @ set S_COMPILER_FLAGS_FINAL = %S_COMPILER_FLAGS_FINAL% %S_DEBUG_COMPILER_FLAGS%
41+ @ set S_LINKER_FLAGS_FINAL = %S_LINKER_FLAGS_FINAL% %S_DEBUG_LINKER_FLAGS%
42+ @ set S_LINK_LIBRARIES_FINAL = %S_LINK_LIBRARIES_FINAL% %S_DEBUG_LINK_LIBARIES%
43+ @ set S_DEFINES_FINAL = %S_DEFINES_FINAL% %S_DEBUG_DEFINES%
44+ @ set S_LINK_DIRECTORIES_FINAL = %S_LINK_DIRECTORIES_FINAL% %S_DEBUG_LINK_DIRECTORIES%
45+ @ set S_FINAL_RESULT = [1m[36mPending.[0m
46+ @ set S_CONFIG_INFO = Debug
47+ )
48+
49+ @ REM Final flag consolidation (don't touch)
50+ @ REM --------------------------------------------------------------------------
51+ @ set CommonCompilerFlags = %S_COMPILER_FLAGS_FINAL% %S_DEFINES_FINAL%
52+ @ set CommonLinkerFlags = %S_LINKER_FLAGS_FINAL% %S_LINK_DIRECTORIES_FINAL% %S_LINK_LIBRARIES_FINAL%
53+
54+ @ if EXIST %S_OUT_DIR% \%S_OUT_BIN% del %S_OUT_DIR% \%S_OUT_BIN%
55+ @ if NOT EXIST %S_OUT_DIR% mkdir %S_OUT_DIR%
56+
57+ @ REM --------------------------------------------------------------------------
58+ @ REM Build
59+ @ REM --------------------------------------------------------------------------
60+
61+ @ if %S_STATIC_LIB% EQU 0 (
62+ @ echo [1m[36mCompiling and linking...[0m
63+ cl %S_INCLUDE_DIRECTORIES% %CommonCompilerFlags% /permissive- %S_SOURCES% /Fe%S_OUT_DIR% /%S_OUT_BIN% /Fo%S_OUT_DIR% / /link %CommonLinkerFlags%
64+ )
65+
66+ @ if %S_STATIC_LIB% EQU 1 (
67+ @ echo [1m[36mCompiling...[0m
68+ cl /c %S_INCLUDE_DIRECTORIES% %CommonCompilerFlags% /permissive- %S_SOURCES% /Fe%S_OUT_DIR% /%S_OUT_BIN% /Fo%S_OUT_DIR% /
69+ )
70+
71+ @ if %ERRORLEVEL% EQU 0 ( goto Linking)
72+
73+ @ if %ERRORLEVEL% NEQ 0 (
74+ echo [1m[91mCompilation Failed with error code[0m: %ERRORLEVEL%
75+ @ set S_FINAL_RESULT = [1m[91mFailed.[0m
76+ goto Cleanup
77+ )
78+
79+ @ REM --------------------------------------------------------------------------
80+ @ REM Linking
81+ @ REM --------------------------------------------------------------------------
82+ :Linking
83+ @ echo [1m[92mCompiled successfully.[0m
84+ @ if %S_STATIC_LIB% EQU 1 (
85+ @ echo [1m[36mLinking...[0m
86+ lib /nologo /OUT:%S_OUT_DIR% /%S_OUT_BIN% %S_OUT_DIR% \*.obj
87+ )
88+
89+ @ echo [1m[92mLinked successfully.[0m
90+ @ set S_FINAL_RESULT = [1m[92mSuccessful.[0m
91+ goto Cleanup
92+
93+ @ REM --------------------------------------------------------------------------
94+ @ REM Cleanup
95+ @ REM --------------------------------------------------------------------------
96+ :Cleanup
97+ @ echo [1m[36mCleaning up intermediate files...[0m
98+ del %S_OUT_DIR% \*.obj
99+
100+ @ REM --------------------------------------------------------------------------
101+ @ REM Information Output
102+ @ REM --------------------------------------------------------------------------
103+ :PrintInfo
104+ @ echo [36m--------------------------------------------------------------------------[0m
105+ @ echo [1m[93m Build Information [0m
106+ @ echo [36mResults: [0m %S_FINAL_RESULT%
107+ @ echo [36mConfiguration: [0m [35m%S_CONFIG_INFO% [0m
108+ @ echo [36mWorking directory: [0m [35m%dir% [0m
109+ @ echo [36mOutput directory: [0m [35m%S_OUT_DIR% [0m
110+ @ echo [36mOutput binary: [0m [33m%S_OUT_BIN% [0m
111+ @ echo [36mLink libraries: [0m [35m%S_LINK_LIBRARIES_FINAL% [0m
112+ @ echo [36mDefines: [0m [33m%S_DEFINES_FINAL% [0m
113+ @ echo [36mCompiler flags: [0m [35m%S_COMPILER_FLAGS_FINAL% [0m
114+ @ echo [36mLinker flags: [0m [33m%S_LINKER_FLAGS_FINAL% [0m
115+ @ echo [36mInclude directories: [0m [35m%S_INCLUDE_DIRECTORIES% [0m
116+ @ echo [36mLink directories: [0m [33m%S_LINK_DIRECTORIES_FINAL% [0m
117+ @ echo [36mSources: [0m [35m%S_SOURCES% [0m
118+ @ echo [36m--------------------------------------------------------------------------[0m
119+ :End
0 commit comments