Skip to content

Commit 612f032

Browse files
committed
nimble: rewrite buildBins task
now dynamically picks up binaries based on either top level source (single-file) or multi-file (src/<bin>/main.nim)
1 parent 7583d09 commit 612f032

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

quark.nimble

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,29 @@ requires "nimPNG >= 0.3.1"
1111

1212
const Root = getCurrentDir()
1313
const BinDir = Root / "dist" / "System" / "bin"
14-
const Bins = {
15-
"fbscreenshot.nim": "fbscreenshot",
16-
"quark_hotkeyd/main.nim": "quark_hotkeyd",
17-
"sysjson_monitor/main.nim": "sysjson_monitor",
18-
"mainui_game_picker.nim": "mainui_game_picker",
19-
"bootlogo.nim": "bootlogo",
20-
"display.nim": "display",
21-
}.toTable()
2214
const Threads = gorge("nproc")
2315

2416
# Import task files
2517
include "tasks/third_party.nims"
2618
include "tasks/dist.nims"
2719
include "tasks/locale.nims"
2820

29-
task buildBins, "Build binaries":
30-
for src, output in Bins:
31-
selfExec &"c -o:{BinDir}/{output} {srcDir}/{src}"
21+
task buildBins, "Build Quark binaries":
22+
for kind, path in walkDir(srcDir):
23+
case kind
24+
of pcFile:
25+
let parts = splitFile(path)
26+
if parts.ext == ".nim"
27+
echo fmt"compiling {parts.dir}/{parts.name}{parts.ext} to binary {BinDir}/{parts.name}"
28+
selfExec fmt"c -o:{BinDir}/{parts.name} {parts.dir}/{parts.name}{parts.ext}"
29+
of pcDir:
30+
let entryPath = path / "main.nim"
31+
if fileExists(entryPath):
32+
let binName = entryPath.parentDir().lastPathPart()
33+
echo fmt"compiling {entryPath} to binary {BinDir}/{binName}"
34+
selfExec fmt"c -o:{BinDir}/{binName} {entryPath}"
35+
else:
36+
discard
3237

3338
task cleanup, "Cleanup all":
3439
exec "nimble clean"

0 commit comments

Comments
 (0)