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"