annotate config.nims @ 367:7ef01f1841b3

did: improve material system a ton, more to come
author Sam <sam@basx.dev>
date Sat, 21 Oct 2023 01:05:34 +0700
parents 857cd931d24b
children ad2a7586f625
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
1 import std/strformat
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
2 import std/strutils
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
3 import std/os
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
4
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
5 const BUILDBASE = "build"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
6 const DEBUG = "debug"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
7 const RELEASE = "release"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
8 const LINUX = "linux"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
9 const WINDOWS = "windows"
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
10
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
11 const BUNDLETYPE* {.strdefine.}: string = "dir" # dir, zip, exe
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
12 const RESOURCEROOT* {.strdefine.}: string = "resources"
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
13
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
14 task build, "build":
273
93becb68cb7a fix: change due to build-configuration change
Sam <sam@basx.dev>
parents: 252
diff changeset
15 switch("d", "BUNDLETYPE=" & BUNDLETYPE)
93becb68cb7a fix: change due to build-configuration change
Sam <sam@basx.dev>
parents: 252
diff changeset
16 switch("d", "RESOURCEROOT=" & RESOURCEROOT)
366
857cd931d24b add: function-based animations, preparing-refactring for better material system, hashable dynamic arrays
Sam <sam@basx.dev>
parents: 316
diff changeset
17 switch("d", "nimPreviewHashRef")
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
18 switch("mm", "orc")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
19 switch("experimental", "strictEffects")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
20 switch("threads", "on")
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
21 var buildType = DEBUG
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
22 var platformDir = ""
83
5e19aead2b61 add: new vulkan api wrapper, not done yet
Sam <sam@basx.dev>
parents: 82
diff changeset
23 if defined(linux):
5e19aead2b61 add: new vulkan api wrapper, not done yet
Sam <sam@basx.dev>
parents: 82
diff changeset
24 switch("define", "VK_USE_PLATFORM_XLIB_KHR")
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
25 platformDir = LINUX
83
5e19aead2b61 add: new vulkan api wrapper, not done yet
Sam <sam@basx.dev>
parents: 82
diff changeset
26 if defined(windows):
5e19aead2b61 add: new vulkan api wrapper, not done yet
Sam <sam@basx.dev>
parents: 82
diff changeset
27 switch("define", "VK_USE_PLATFORM_WIN32_KHR")
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
28 platformDir = WINDOWS
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
29 if defined(release):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
30 switch("app", "gui")
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
31 buildType = RELEASE
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
32 else:
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
33 switch("debugger", "native")
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
34
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
35 var outdir = getCurrentDir() / BUILDBASE / buildType / platformDir / projectName()
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
36 switch("outdir", outdir)
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
37 setCommand "c"
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
38 rmDir(outdir)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
39 mkDir(outdir)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
40 let resourcedir = joinPath(projectDir(), RESOURCEROOT)
316
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
41 if dirExists(resourcedir):
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
42 let outdir_resources = joinPath(outdir, RESOURCEROOT)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
43 if BUNDLETYPE == "dir":
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
44 cpDir(resourcedir, outdir_resources)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
45 elif BUNDLETYPE == "zip":
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
46 mkDir(outdir_resources)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
47 for resource in listDirs(resourcedir):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
48 let
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
49 oldcwd = getCurrentDir()
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
50 outputfile = joinPath(outdir_resources, resource.splitPath().tail & ".zip")
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
51 inputfile = resource.splitPath().tail
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
52 cd(resource)
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
53 if defined(linux):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
54 exec &"zip -r {outputfile} ."
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
55 elif defined(windows):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
56 # TODO: test this
214
f1f35e9f5335 fix: resources on windows
Sam <sam@basx.dev>
parents: 213
diff changeset
57 exec &"powershell Compress-Archive * {outputfile}"
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
58 cd(oldcwd)
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
59
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
60 task build_all_debug, "build all examples for debug":
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
61 for file in listFiles("examples"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
62 if file.endsWith(".nim"):
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
63 exec(&"nim build {file}")
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
64
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
65 task build_all_release, "build all examples for release":
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
66 for file in listFiles("examples"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
67 if file.endsWith(".nim"):
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
68 exec(&"nim build -d:release {file}")
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
69
316
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
70 task test_all, "Run all test programs":
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
71 for file in listFiles("tests"):
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
72 if file.endsWith(".nim"):
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
73 exec(&"nim build --run {file}")
b145a05c2459 add: changing rendering system, not finished yet, also upgrading to Nim 2
Sam <sam@basx.dev>
parents: 273
diff changeset
74
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
75 task clean, "remove all build files":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
76 exec(&"rm -rf {BUILDBASE}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
77
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
78 task publish, "publish all build":
248
952428f04ffc did: few fixes
Sam <sam@basx.dev>
parents: 235
diff changeset
79 for file in listDirs("build/debug/linux"):
252
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
80 exec(&"scp -r {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/debug/linux/")
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
81 for file in listDirs("build/release/linux"):
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
82 exec(&"scp -r {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/release/linux/")
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
83 for file in listDirs("build/debug/windows"):
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
84 exec(&"scp -r {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/debug/windows/")
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
85 for file in listDirs("build/release/windows"):
f31d848ab551 did: update configs
sam <sam@basx.dev>
parents: 248
diff changeset
86 exec(&"scp -r {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/release/windows/")
53
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
87
36
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
88 task glslangValidator, "Download glslangValidator (required for linux compilation)":
62
7153eadb07eb fix: some formatting, bug when opening on windows.
Sam <sam@basx.dev>
parents: 55
diff changeset
89 let dirname = "/tmp/glslang_download"
36
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
90 exec &"mkdir -p {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
91 exec &"cd {dirname} && wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
92 exec &"cd {dirname} && unzip *.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
93 exec &"mv {dirname}/bin/glslangValidator examples/"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
94 exec &"rm -rf {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
95
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
96 task glslangValidator_exe, "Download glslangValidator.exe (required for windows compilation)":
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
97 # TODO: make this work on windows
62
7153eadb07eb fix: some formatting, bug when opening on windows.
Sam <sam@basx.dev>
parents: 55
diff changeset
98 let dirname = "/tmp/glslang_download"
36
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
99 exec &"mkdir -p {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
100 exec &"cd {dirname} && wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-windows-x64-Release.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
101 exec &"cd {dirname} && unzip *.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
102 exec &"mv {dirname}/bin/glslangValidator.exe examples/"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
103 exec &"rm -rf {dirname}"
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
104
62
7153eadb07eb fix: some formatting, bug when opening on windows.
Sam <sam@basx.dev>
parents: 55
diff changeset
105 task run_all, "Run all binaries":
39
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
106 for file in listFiles("build/debug/linux"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
107 exec file
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
108 for file in listFiles("build/release/linux"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
109 exec file
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
110 for file in listFiles("build/debug/windows"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
111 exec &"wine {file}"
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
112 for file in listFiles("build/release/windows"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
113 exec &"wine {file}"
46
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
114
78
f67496a189cb add: vulkan api generator, not finished yet
Sam <sam@basx.dev>
parents: 62
diff changeset
115 task get_vulkan_wrapper, "Download vulkan wrapper":
f67496a189cb add: vulkan api generator, not finished yet
Sam <sam@basx.dev>
parents: 62
diff changeset
116 exec &"curl https://raw.githubusercontent.com/nimgl/nimgl/master/src/nimgl/vulkan.nim > src/semicongine/vulkan/c_api.nim"
f67496a189cb add: vulkan api generator, not finished yet
Sam <sam@basx.dev>
parents: 62
diff changeset
117
f67496a189cb add: vulkan api generator, not finished yet
Sam <sam@basx.dev>
parents: 62
diff changeset
118 task generate_vulkan_api, "Generate Vulkan API":
194
93f661a20f74 did: a bit of cleanup with the config, also add some documentation
Sam <sam@basx.dev>
parents: 83
diff changeset
119 selfExec &"c -d:ssl --run src/vulkan_api/vulkan_api_generator.nim"
82
9e7937b7bcc8 did: complete vulkan api generator pipeline for now
Sam <sam@basx.dev>
parents: 78
diff changeset
120 mkDir "src/semicongine/vulkan/"
207
81fab407a479 add: some adjustment to the last refactoring :P
Sam <sam@basx.dev>
parents: 194
diff changeset
121 mkDir "src/semicongine/core/"
81fab407a479 add: some adjustment to the last refactoring :P
Sam <sam@basx.dev>
parents: 194
diff changeset
122 cpFile "src/vulkan_api/output/api.nim", "src/semicongine/core/api.nim"
82
9e7937b7bcc8 did: complete vulkan api generator pipeline for now
Sam <sam@basx.dev>
parents: 78
diff changeset
123 cpDir "src/vulkan_api/output/platform", "src/semicongine/vulkan/platform"
78
f67496a189cb add: vulkan api generator, not finished yet
Sam <sam@basx.dev>
parents: 62
diff changeset
124
46
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
125 if getCommand() in ["c", "compile", "r", "dump", "check", "idetools"]:
213
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
126 --path:src
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
127 --mm:orc
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
128 --threads:on
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
129 if defined(linux):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
130 --d:VK_USE_PLATFORM_XLIB_KHR
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
131 if defined(windows):
b5d9410a8184 add: resource packaging and loading for different resource types, simplify build commands, update readme
Sam <sam@basx.dev>
parents: 207
diff changeset
132 --d:VK_USE_PLATFORM_WIN32_KHR