Mercurial > games > semicongine
diff semiconginev2/old/core/buildconfig.nim @ 1218:56781cc0fc7c compiletime-tests
did: renamge main package
author | sam <sam@basx.dev> |
---|---|
date | Wed, 17 Jul 2024 21:01:37 +0700 |
parents | semicongine/old/core/buildconfig.nim@a3eb305bcac2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/semiconginev2/old/core/buildconfig.nim Wed Jul 17 21:01:37 2024 +0700 @@ -0,0 +1,51 @@ +import std/strutils +import std/logging +import std/os + +import ./constants + +# checks required build options: +static: + assert compileOption("threads"), ENGINENAME & " requires --threads=on" + assert defined(nimPreviewHashRef), ENGINENAME & " requires -d:nimPreviewHashRef" + + if defined(release) or defined(windows): + assert compileOption("app", "gui"), ENGINENAME & " requires --app=gui for release builds and all windows builds" + + + if defined(linux): + assert defined(VK_USE_PLATFORM_XLIB_KHR), ENGINENAME & " requires --d:VK_USE_PLATFORM_XLIB_KHR for linux builds" + elif defined(windows): + assert defined(VK_USE_PLATFORM_WIN32_KHR), ENGINENAME & " requires --d:VK_USE_PLATFORM_WIN32_KHR for windows builds" + else: + assert false, "trying to build on unsupported platform" + +# build configuration +# ===================== + +# compile-time defines, usefull for build-dependent settings +# can be overriden with compiler flags, e.g. -d:Foo=42 -d:Bar=false +# pramas: {.intdefine.} {.strdefine.} {.booldefine.} + +# root of where settings files will be searched +# must be relative (to the directory of the binary) +const DEBUG* {.booldefine.} = not defined(release) +const CONFIGROOT* {.strdefine.}: string = "." +assert not isAbsolute(CONFIGROOT) + +const CONFIGEXTENSION* {.strdefine.}: string = "ini" + +# by default enable hot-reload of runtime-configuration only in debug builds +const CONFIGHOTRELOAD* {.booldefine.}: bool = DEBUG + +# milliseconds to wait between checks for settings hotreload +const CONFIGHOTRELOADINTERVAL* {.intdefine.}: int = 1000 + +# log level +const LOGLEVEL {.strdefine.}: string = "Warn" +const ENGINE_LOGLEVEL* = parseEnum[Level]("lvl" & LOGLEVEL) + +# resource bundleing settings, need to be configured per project +const PACKAGETYPE* {.strdefine.}: string = "exe" # dir, zip, exe +static: + assert PACKAGETYPE in ["dir", "zip", "exe"], ENGINENAME & " requires one of -d:PACKAGETYPE=dir -d:PACKAGETYPE=zip -d:PACKAGETYPE=exe"