Skip to content

Commit f586a6c

Browse files
committed
Improvements
1 parent 69eb589 commit f586a6c

File tree

5 files changed

+142
-212
lines changed

5 files changed

+142
-212
lines changed

src/bootstrap.nim

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,34 @@
66
# License, v. 2.0. If a copy of the MPL was not distributed with this
77
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
88

9-
import std/[os, strformat, strutils], constants, tools
9+
import std/[os, strformat, strutils], packages, tools
1010

1111
proc cleanBootstrap*() =
1212
const dirs = ["../cross", "../log", "../tmp", "../toolchain"]
1313

1414
for i in dirs:
1515
removeDir(i)
1616

17-
proc prepareBootstrap*() =
18-
const dirs = ["../cross", "../log", "../pkg", "../src", "../tmp", "../toolchain"]
19-
20-
for i in dirs:
21-
createDir(i)
22-
23-
proc prepareCross*() =
24-
const dir = "../tmp"
25-
26-
removeDir(dir)
27-
createDir(dir)
28-
29-
proc require*() =
30-
const exes = [
31-
"autoconf", "automake", "autopoint", "awk", "bash", "booster", "bzip2", "curl",
32-
"diff", "find", "gcc", "git", "grep", "gzip", "ld.bfd", "lex", "libtool", "limine",
33-
"m4", "make", "meson", "mkfs.erofs", "mkfs.fat", "ninja", "patch", "perl",
34-
"pkg-config", "sed", "tar", "xz", "yacc", "zstd",
35-
]
17+
proc prepareToolchain() =
18+
const
19+
dirs = ["../cross", "../log", "../pkg", "../src", "../tmp", "../toolchain"]
20+
exes = [
21+
"autoconf", "automake", "autopoint", "awk", "bash", "booster", "bzip2", "curl",
22+
"diff", "find", "gcc", "git", "grep", "gzip", "ld.bfd", "lex", "libtool",
23+
"limine", "m4", "make", "meson", "mkfs.erofs", "mkfs.fat", "ninja", "patch",
24+
"perl", "pkg-config", "sed", "tar", "xz", "yacc", "zstd",
25+
]
3626

3727
for i in exes:
3828
if findExe(i).isEmptyOrWhitespace():
39-
abort(&"""{127:8}{&"\{i\} not found":48}""")
29+
abort(&"""{127:<8}{&"\{i\} not found":48}""")
30+
31+
cleanBootstrap()
4032

41-
proc setEnvBootstrap*() =
33+
for i in dirs:
34+
createDir(i)
35+
36+
proc configureToolchain() =
4237
const env = [
4338
("REPO", "../core"),
4439
("CRSD", "../cross"),
@@ -51,7 +46,20 @@ proc setEnvBootstrap*() =
5146

5247
putEnv("PATH", getEnv("TLCD") / "usr/bin" & PathSep & getEnv("PATH"))
5348

54-
proc setEnvCross*() =
49+
proc bootstrapToolchain*() =
50+
prepareToolchain()
51+
configureToolchain()
52+
buildPackages(
53+
parsePackage("toolchain").run.split(), resolve = false, stage = toolchain
54+
)
55+
56+
proc prepareCross() =
57+
const dir = "../tmp"
58+
59+
removeDir(dir)
60+
createDir(dir)
61+
62+
proc configureCross() =
5563
const
5664
env = [
5765
("AR", "x86_64-glaucus-linux-musl-gcc-ar"),
@@ -83,23 +91,11 @@ proc setEnvCross*() =
8391
for (i, j) in envPkgConfig:
8492
putEnv(i, absolutePath(j))
8593

86-
proc setEnvNative*() =
87-
const env = [
88-
("AR", "gcc-ar"),
89-
("AWK", "mawk"),
90-
("CC", "gcc"),
91-
("CPP", "gcc -E"),
92-
("CXX", "g++"),
93-
("CXXCPP", "g++ -E"),
94-
("LEX", "reflex"),
95-
("LIBTOOL", "slibtool"),
96-
("NM", "gcc-nm"),
97-
("PKG_CONFIG", "u-config"),
98-
("RANLIB", "gcc-ranlib"),
99-
("REPO", pathCoreRepo),
100-
("TMPD", pathTmp),
101-
("YACC", "byacc"),
102-
]
94+
proc bootstrapCross*() =
95+
prepareCross()
96+
configureCross()
97+
configureToolchain()
98+
buildPackages(parsePackage("cross").run.split(), resolve = false, stage = cross)
10399

104-
for (i, j) in env:
105-
putEnv(i, j)
100+
proc bootstrapNative*() =
101+
buildPackages(parsePackage("native").run.split(), resolve = false)

src/constants.nim

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/options.nim

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# License, v. 2.0. If a copy of the MPL was not distributed with this
77
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
88

9-
import std/[os, parseopt, strutils], bootstrap, packages, constants, tools
9+
import std/[os, parseopt], bootstrap, packages, tools
1010

1111
proc options*() =
1212
const
@@ -63,7 +63,7 @@ Copyright © 2018-2025 Firas Khana"""
6363

6464
case p.kind
6565
of cmdEnd:
66-
exit(helpBootstrap, QuitFailure)
66+
exit(msg = helpBootstrap, status = QuitFailure)
6767
else:
6868
case p.key
6969
of "clean":
@@ -73,40 +73,24 @@ Copyright © 2018-2025 Firas Khana"""
7373
of "--help", "help":
7474
echo helpBootstrap
7575
of "1", "stage1", "toolchain":
76-
require()
77-
setEnvBootstrap()
78-
cleanBootstrap()
79-
prepareBootstrap()
80-
81-
let stage1 = parsePackage("toolchain").run.split()
82-
buildPackages(stage1, resolve = false, stage = toolchain)
76+
bootstrapToolchain()
8377

8478
echo ""
8579
echo "stage 1 (toolchain) complete"
8680
of "2", "stage2", "cross":
87-
setEnvBootstrap()
88-
setEnvCross()
89-
prepareCross()
90-
91-
let stage2 = parsePackage("cross").run.split()
92-
buildPackages(stage2, resolve = false, stage = cross)
81+
bootstrapCross()
9382

9483
echo ""
9584
echo "stage 2 (cross) complete"
9685
of "3", "stage3", "native":
97-
setEnvNative()
98-
99-
let stage3 = parsePackage("native").run.split()
100-
buildPackages(stage3, resolve = false)
86+
bootstrapNative()
10187

10288
echo ""
10389
echo "stage 3 (native) complete"
10490
else:
105-
exit(helpBootstrap, QuitFailure)
91+
exit(msg = helpBootstrap, status = QuitFailure)
10692
of "build":
107-
setEnvNative()
10893
cleanPackages()
109-
11094
buildPackages(remainingArgs(p))
11195

11296
echo ""
@@ -131,6 +115,6 @@ Copyright © 2018-2025 Firas Khana"""
131115
of "--version", "version":
132116
echo version
133117
else:
134-
exit(help, QuitFailure)
118+
exit(msg = help, status = QuitFailure)
135119

136120
exit()

0 commit comments

Comments
 (0)