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
1111proc 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 )
0 commit comments