Mercurial > games > semicongine
view config.nims @ 42:ae20734fde0b
no need to upload notes
author | Sam <sam@basx.dev> |
---|---|
date | Wed, 18 Jan 2023 14:15:47 +0700 |
parents | 0cb294c5d2fd |
children | ab8de2471a3a |
line wrap: on
line source
import std/strformat import std/strutils import std/os const BUILDBASE = "build" const DEBUG = "debug" const RELEASE = "release" const LINUX = "linux" const WINDOWS = "windows" proc compilerFlags() = switch("path", "src") switch("mm", "orc") switch("experimental", "strictEffects") switch("threads", "on") switch("app", "gui") proc compilerFlagsDebug() = switch("debugger", "native") switch("checks", "on") switch("assertions", "on") proc compilerFlagsRelease() = switch("define", "release") switch("checks", "off") switch("assertions", "off") task single_linux_debug, "build linux debug": compilerFlags() compilerFlagsDebug() switch("outdir", BUILDBASE / DEBUG / LINUX) setCommand "c" mkDir(BUILDBASE / DEBUG / LINUX) task single_linux_release, "build linux release": compilerFlags() compilerFlagsRelease() switch("outdir", BUILDBASE / RELEASE / LINUX) setCommand "c" mkDir(BUILDBASE / RELEASE / LINUX) task single_windows_debug, "build windows debug": compilerFlags() compilerFlagsDebug() # for some the --define:mingw does not work from inside here... # so we need to set it when calling the task and use "/" to prevent # the use of backslash while crosscompiling switch("define", "mingw") switch("outdir", BUILDBASE & "/" & DEBUG & "/" & WINDOWS) setCommand "c" mkDir(BUILDBASE & "/" & DEBUG & "/" & WINDOWS) task single_windows_release, "build windows release": compilerFlags() compilerFlagsRelease() switch("outdir", BUILDBASE & "/" & RELEASE & "/" & WINDOWS) switch("define", "mingw") setCommand "c" mkDir(BUILDBASE & "/" & RELEASE & "/" & WINDOWS) task build_all_linux_debug, "build all examples with linux/debug": for file in listFiles("examples"): if file.endsWith(".nim"): selfExec(&"single_linux_debug {file}") task build_all_linux_release, "build all examples with linux/release": for file in listFiles("examples"): if file.endsWith(".nim"): selfExec(&"single_linux_release {file}") task build_all_windows_debug, "build all examples with windows/debug": for file in listFiles("examples"): if file.endsWith(".nim"): exec(&"nim single_windows_debug --define:mingw {file}") task build_all_windows_release, "build all examples with windows/release": for file in listFiles("examples"): if file.endsWith(".nim"): exec(&"nim single_windows_release --define:mingw {file}") task build_all_debug, "build all examples with */debug": build_all_linux_debugTask() build_all_windows_debugTask() task build_all_release, "build all examples with */release": build_all_linux_releaseTask() build_all_windows_releaseTask() task build_all_linux, "build all examples with linux/*": build_all_linux_debugTask() build_all_linux_releaseTask() task build_all_windows, "build all examples with windows/*": build_all_windows_debugTask() build_all_windows_releaseTask() task build_all, "build all examples": build_all_linuxTask() build_all_windowsTask() task clean, "remove all build files": exec(&"rm -rf {BUILDBASE}") task publish, "publish all build": exec("rsync -rv build/ basx.dev:/var/www/public.basx.dev/zamikongine") task glslangValidator, "Download glslangValidator (required for linux compilation)": let dirname="/tmp/glslang_download" exec &"mkdir -p {dirname}" exec &"cd {dirname} && wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip" exec &"cd {dirname} && unzip *.zip" exec &"mv {dirname}/bin/glslangValidator examples/" exec &"rm -rf {dirname}" task glslangValidator_exe, "Download glslangValidator.exe (required for windows compilation)": let dirname="/tmp/glslang_download" exec &"mkdir -p {dirname}" exec &"cd {dirname} && wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-windows-x64-Release.zip" exec &"cd {dirname} && unzip *.zip" exec &"mv {dirname}/bin/glslangValidator.exe examples/" exec &"rm -rf {dirname}" if getCommand() in ["c", "compile", "r", "dump", "check", "idetools"]: compilerFlags() task run_all , "Run all binaries": for file in listFiles("build/debug/linux"): exec file for file in listFiles("build/release/linux"): exec file for file in listFiles("build/debug/windows"): exec &"wine {file}" for file in listFiles("build/release/windows"): exec &"wine {file}"