build.bat 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "usebackq tokens=1,2 delims=,=- " %%i in (`wmic os get LocalDateTime /value`) do @if %%i==LocalDateTime (
  4. set CURR_DATE_TIME=%%j
  5. )
  6. set curr_year=%CURR_DATE_TIME:~0,4%
  7. set curr_month=%CURR_DATE_TIME:~4,2%
  8. :: Make sure this is a decent name and not generic
  9. set exe_name=odin.exe
  10. :: Debug = 0, Release = 1
  11. if "%1" == "1" (
  12. set release_mode=1
  13. ) else if "%1" == "release" (
  14. set release_mode=1
  15. ) else (
  16. set release_mode=0
  17. )
  18. :: Normal = 0, CI Nightly = 1
  19. if "%2" == "1" (
  20. set nightly=1
  21. ) else (
  22. set nightly=0
  23. )
  24. set odin_version_raw="dev-%curr_year%-%curr_month%"
  25. set compiler_flags= -nologo -Oi -TP -fp:precise -Gm- -MP -FC -EHsc- -GR- -GF
  26. set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\"
  27. for /f %%i in ('git rev-parse --short HEAD') do set GIT_SHA=%%i
  28. if %ERRORLEVEL% equ 0 set compiler_defines=%compiler_defines% -DGIT_SHA=\"%GIT_SHA%\"
  29. if %nightly% equ 1 set compiler_defines=%compiler_defines% -DNIGHTLY
  30. if %release_mode% EQU 0 ( rem Debug
  31. set compiler_flags=%compiler_flags% -Od -MDd -Z7
  32. ) else ( rem Release
  33. set compiler_flags=%compiler_flags% -O2 -MT -Z7
  34. set compiler_defines=%compiler_defines% -DNO_ARRAY_BOUNDS_CHECK
  35. )
  36. set compiler_warnings= ^
  37. -W4 -WX ^
  38. -wd4100 -wd4101 -wd4127 -wd4146 ^
  39. -wd4456 -wd4457
  40. set compiler_includes=
  41. set libs= ^
  42. kernel32.lib ^
  43. bin\llvm\windows\LLVM-C.lib
  44. set linker_flags= -incremental:no -opt:ref -subsystem:console
  45. if %release_mode% EQU 0 ( rem Debug
  46. set linker_flags=%linker_flags% -debug
  47. ) else ( rem Release
  48. set linker_flags=%linker_flags% -debug
  49. )
  50. set compiler_settings=%compiler_includes% %compiler_flags% %compiler_warnings% %compiler_defines%
  51. set linker_settings=%libs% %linker_flags%
  52. del *.pdb > NUL 2> NUL
  53. del *.ilk > NUL 2> NUL
  54. cl %compiler_settings% "src\main.cpp" "src\libtommath.cpp" /link %linker_settings% -OUT:%exe_name%
  55. if %errorlevel% neq 0 goto end_of_build
  56. if %release_mode% EQU 0 odin run examples/demo
  57. del *.obj > NUL 2> NUL
  58. :end_of_build