annotate config.nims @ 53:4c3891eb9ef9

add: improve build on windows
author Sam <sam@basx.dev>
date Thu, 19 Jan 2023 22:49:12 +0700
parents 9e81f06a5c57
children a24c6b87ae83
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
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
11 proc compilerFlags() =
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
12 switch("path", "src")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
13 switch("mm", "orc")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
14 switch("experimental", "strictEffects")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
15 switch("threads", "on")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
16 switch("app", "gui")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
17
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
18 proc compilerFlagsDebug() =
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
19 switch("debugger", "native")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
20 switch("checks", "on")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
21 switch("assertions", "on")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
22
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
23 proc compilerFlagsRelease() =
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
24 switch("define", "release")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
25 switch("checks", "off")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
26 switch("assertions", "off")
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
27
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
28 task single_linux_debug, "build linux debug":
21
316923e9247c add: clean examples, update build configs
Sam <sam@basx.dev>
parents: 19
diff changeset
29 compilerFlags()
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
30 compilerFlagsDebug()
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
31 switch("outdir", BUILDBASE / DEBUG / LINUX)
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
32 setCommand "c"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
33 mkDir(BUILDBASE / DEBUG / LINUX)
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
34
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
35 task single_linux_release, "build linux release":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
36 compilerFlags()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
37 compilerFlagsRelease()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
38 switch("outdir", BUILDBASE / RELEASE / LINUX)
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
39 setCommand "c"
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
40 mkDir(BUILDBASE / RELEASE / LINUX)
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
41
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
42 task single_windows_debug, "build windows debug":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
43 compilerFlags()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
44 compilerFlagsDebug()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
45 switch("outdir", BUILDBASE & "/" & DEBUG & "/" & WINDOWS)
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
46 setCommand "c"
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
47 mkDir(BUILDBASE & "/" & DEBUG & "/" & WINDOWS)
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
48
46
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
49
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
50 task single_windows_release, "build windows release":
21
316923e9247c add: clean examples, update build configs
Sam <sam@basx.dev>
parents: 19
diff changeset
51 compilerFlags()
18
90e117952f74 add: basic vertex buffer functionality
Sam <sam@basx.dev>
parents: 13
diff changeset
52 compilerFlagsRelease()
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
53 switch("outdir", BUILDBASE & "/" & RELEASE & "/" & WINDOWS)
21
316923e9247c add: clean examples, update build configs
Sam <sam@basx.dev>
parents: 19
diff changeset
54 setCommand "c"
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
55 mkDir(BUILDBASE & "/" & RELEASE & "/" & WINDOWS)
21
316923e9247c add: clean examples, update build configs
Sam <sam@basx.dev>
parents: 19
diff changeset
56
46
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
57 task single_crosscompile_windows_debug, "build crosscompile windows debug":
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
58 switch("define", "mingw")
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
59 single_windows_debugTask()
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
60
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
61 task single_crosscompile_windows_release, "build crosscompile windows release":
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
62 switch("define", "mingw")
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
63 single_windows_releaseTask()
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
64
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
65 task build_all_linux_debug, "build all examples with linux/debug":
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"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
68 selfExec(&"single_linux_debug {file}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
69
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
70 task build_all_linux_release, "build all examples with linux/release":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
71 for file in listFiles("examples"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
72 if file.endsWith(".nim"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
73 selfExec(&"single_linux_release {file}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
74
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
75 task build_all_windows_debug, "build all examples with windows/debug":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
76 for file in listFiles("examples"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
77 if file.endsWith(".nim"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
78 exec(&"nim single_windows_debug --define:mingw {file}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
79
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
80 task build_all_windows_release, "build all examples with windows/release":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
81 for file in listFiles("examples"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
82 if file.endsWith(".nim"):
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
83 exec(&"nim single_windows_release --define:mingw {file}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
84
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
85 task build_all_debug, "build all examples with */debug":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
86 build_all_linux_debugTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
87 build_all_windows_debugTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
88
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
89 task build_all_release, "build all examples with */release":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
90 build_all_linux_releaseTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
91 build_all_windows_releaseTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
92
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
93 task build_all_linux, "build all examples with linux/*":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
94 build_all_linux_debugTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
95 build_all_linux_releaseTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
96
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
97 task build_all_windows, "build all examples with windows/*":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
98 build_all_windows_debugTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
99 build_all_windows_releaseTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
100
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
101 task build_all, "build all examples":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
102 build_all_linuxTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
103 build_all_windowsTask()
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
104
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
105 task clean, "remove all build files":
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
106 exec(&"rm -rf {BUILDBASE}")
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
107
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
108 task publish, "publish all build":
44
5a6aadf6c464 fix: typo
Sam <sam@basx.dev>
parents: 43
diff changeset
109 exec("rsync -rv build/ basx.dev:/var/www/public.basx.dev/semicongine")
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
110
53
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
111 for file in listFiles("build/debug/linux"):
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
112 exec(&"scp {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/debug/linux/")
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
113 for file in listFiles("build/release/linux"):
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
114 exec(&"scp {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/release/linux/")
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
115 for file in listFiles("build/debug/windows"):
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
116 exec(&"scp {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/debug/windows/")
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
117 for file in listFiles("build/release/windows"):
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
118 exec(&"scp {file} sam@mail.basx.dev:/var/www/public.basx.dev/semicongine/release/windows/")
4c3891eb9ef9 add: improve build on windows
Sam <sam@basx.dev>
parents: 46
diff changeset
119
36
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
120 task glslangValidator, "Download glslangValidator (required for linux compilation)":
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
121 let dirname="/tmp/glslang_download"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
122 exec &"mkdir -p {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
123 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
124 exec &"cd {dirname} && unzip *.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
125 exec &"mv {dirname}/bin/glslangValidator examples/"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
126 exec &"rm -rf {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
127
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
128 task glslangValidator_exe, "Download glslangValidator.exe (required for windows compilation)":
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
129 let dirname="/tmp/glslang_download"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
130 exec &"mkdir -p {dirname}"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
131 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
132 exec &"cd {dirname} && unzip *.zip"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
133 exec &"mv {dirname}/bin/glslangValidator.exe examples/"
2979b69eef55 did: migrate rest of make functionality
Sam <sam@basx.dev>
parents: 35
diff changeset
134 exec &"rm -rf {dirname}"
33
94c38e4b5782 did: refactoring, move more from make to nimscript
Sam <sam@basx.dev>
parents: 24
diff changeset
135
39
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
136 task run_all , "Run all binaries":
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
137 for file in listFiles("build/debug/linux"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
138 exec file
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
139 for file in listFiles("build/release/linux"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
140 exec file
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
141 for file in listFiles("build/debug/windows"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
142 exec &"wine {file}"
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
143 for file in listFiles("build/release/windows"):
0cb294c5d2fd fix: hello cube, add: run_all command
Sam <sam@basx.dev>
parents: 38
diff changeset
144 exec &"wine {file}"
46
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
145
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
146 if getCommand() in ["c", "compile", "r", "dump", "check", "idetools"]:
9e81f06a5c57 add: some changes to build on windows host
Sam <sam@basx.dev>
parents: 44
diff changeset
147 compilerFlags()