diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2023-05-14 19:27:15 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2023-05-14 19:27:15 -0400 |
commit | 23f849f49d982d7251773a6319af81259b20e06b (patch) | |
tree | c2b237f49b6d3aac8700cbb105db23009ec116dd /pkgs/os-specific/linux/minimal-bootstrap | |
parent | 5a78c28a10a9d39485511a8f33a163c8d156a9d5 (diff) | |
download | nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.gz nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.bz2 nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.lz nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.xz nixlib-23f849f49d982d7251773a6319af81259b20e06b.tar.zst nixlib-23f849f49d982d7251773a6319af81259b20e06b.zip |
minimal-boostrap.mes: Separate compiler and libs
This matches tinycc, and what is generally done in Nixpkgs.
Diffstat (limited to 'pkgs/os-specific/linux/minimal-bootstrap')
5 files changed, 63 insertions, 52 deletions
diff --git a/pkgs/os-specific/linux/minimal-bootstrap/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/default.nix index 4a5c9b380588..5907cdb4cda8 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/default.nix @@ -30,7 +30,7 @@ lib.makeScope inherit (callPackage ./utils.nix { }) fetchurl derivationWithMeta writeTextFile writeText; test = kaem.runCommand "minimal-bootstrap-test" {} '' - echo ${mes.tests.get-version} + echo ${mes.compiler.tests.get-version} echo ${tinycc-mes.compiler.tests.chain} mkdir ''${out} ''; diff --git a/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix index d9649bb85a24..46cd06e53b28 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/ln-boot/default.nix @@ -20,8 +20,8 @@ kaem.runCommand "${pname}-${version}" { }; } '' mkdir -p ''${out}/bin - ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \ - -L ${mes}/lib \ + ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \ + -L ${mes.libs}/lib \ -lc+tcc \ -o ''${out}/bin/ln \ ${src} diff --git a/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix b/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix index 9add682eb66c..494e2133bd5a 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/mes/default.nix @@ -170,59 +170,70 @@ let libc = mkLib "libc" libc_SOURCES; libc_tcc = mkLib "libc+tcc" libc_tcc_SOURCES; -in kaem.runCommand "${pname}-${version}" { - inherit pname version; + # Recompile Mes and Mes C library using mes-m2 bootstrapped Mes + libs = kaem.runCommand "${pname}-m2-libs-${version}" { + inherit pname version; - passthru = { inherit src srcPost srcPrefix nyacc; }; - passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} '' - ${result}/bin/mes --version - mkdir ''${out} - ''; + passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} '' + ${result}/bin/mes --version + mkdir ''${out} + ''; - inherit meta; -} -'' - LIBDIR=''${out}/lib - BINDIR=''${out}/bin + inherit meta; + } + '' + LIBDIR=''${out}/lib + mkdir -p ''${out} ''${LIBDIR} - mkdir -p ''${out} ''${LIBDIR} ''${BINDIR} + mkdir -p ''${LIBDIR}/x86-mes - cp ${srcPost.bin}/bin/mescc.scm ''${BINDIR}/mescc.scm - cp ${srcPost.bin}/bin/mes-m2 ''${BINDIR}/mes-m2 - chmod 555 ''${BINDIR}/mes-m2 + # crt1.o + cp ${crt1}/crt1.o ''${LIBDIR}/x86-mes + cp ${crt1}/crt1.s ''${LIBDIR}/x86-mes - # Recompile Mes and Mes C library using mes-m2 bootstrapped Mes - mkdir -p ''${LIBDIR}/x86-mes + # libc-mini.a + cp ${libc-mini}/lib/libc-mini.a ''${LIBDIR}/x86-mes + cp ${libc-mini}/lib/libc-mini.s ''${LIBDIR}/x86-mes - # crt1.o - cp ${crt1}/crt1.o ''${LIBDIR}/x86-mes - cp ${crt1}/crt1.s ''${LIBDIR}/x86-mes + # libmescc.a + cp ${libmescc}/lib/libmescc.a ''${LIBDIR}/x86-mes + cp ${libmescc}/lib/libmescc.s ''${LIBDIR}/x86-mes - # libc-mini.a - cp ${libc-mini}/lib/libc-mini.a ''${LIBDIR}/x86-mes - cp ${libc-mini}/lib/libc-mini.s ''${LIBDIR}/x86-mes + # libc.a + cp ${libc}/lib/libc.a ''${LIBDIR}/x86-mes + cp ${libc}/lib/libc.s ''${LIBDIR}/x86-mes - # libmescc.a - cp ${libmescc}/lib/libmescc.a ''${LIBDIR}/x86-mes - cp ${libmescc}/lib/libmescc.s ''${LIBDIR}/x86-mes + # libc+tcc.a + cp ${libc_tcc}/lib/libc+tcc.a ''${LIBDIR}/x86-mes + cp ${libc_tcc}/lib/libc+tcc.s ''${LIBDIR}/x86-mes + ''; - # libc.a - cp ${libc}/lib/libc.a ''${LIBDIR}/x86-mes - cp ${libc}/lib/libc.s ''${LIBDIR}/x86-mes + # Build mes itself + compiler = kaem.runCommand "${pname}-${version}" { + inherit pname version; - # libc+tcc.a - cp ${libc_tcc}/lib/libc+tcc.a ''${LIBDIR}/x86-mes - cp ${libc_tcc}/lib/libc+tcc.s ''${LIBDIR}/x86-mes + passthru.tests.get-version = result: kaem.runCommand "${pname}-get-version-${version}" {} '' + ${result}/bin/mes --version + mkdir ''${out} + ''; - # Build mes itself - ''${out}/bin/mes-m2 -e main ''${out}/bin/mescc.scm -- \ - --base-address 0x08048000 \ - -L ''${srcPrefix}/lib \ - -L ''${LIBDIR} \ - -lc \ - -lmescc \ - -nostdlib \ - -o ''${out}/bin/mes \ - ''${LIBDIR}/x86-mes/crt1.o \ - ${lib.concatMapStringsSep " " (getRes ".o") (map compile mes_SOURCES)} -'' + inherit meta; + } + '' + mkdir -p ''${out}/bin + + ${srcPost.bin}/bin/mes-m2 -e main ${srcPost.bin}/bin/mescc.scm -- \ + --base-address 0x08048000 \ + -L ''${srcPrefix}/lib \ + -L ${libs}/lib \ + -lc \ + -lmescc \ + -nostdlib \ + -o ''${out}/bin/mes \ + ${libs}/lib/x86-mes/crt1.o \ + ${lib.concatMapStringsSep " " (getRes ".o") (map compile mes_SOURCES)} + ''; +in { + inherit srcPost srcPrefix nyacc; + inherit compiler libs; +} diff --git a/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix b/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix index 94ad272a2762..b21bd744e5fe 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/mes/libc.nix @@ -6,7 +6,7 @@ }: let pname = "mes-libc"; - inherit (mes) version; + inherit (mes.compiler) version; sources = (import ./sources.nix).x86.linux.gcc; inherit (sources) libtcc1_SOURCES libc_gnu_SOURCES; diff --git a/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix b/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix index 86bcf18643c9..1f30b63cbd0e 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/tinycc/bootstrappable.nix @@ -49,7 +49,7 @@ let ''; } '' catm config.h - ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \ + ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \ -S \ -o tcc.s \ -I . \ @@ -73,8 +73,8 @@ let -D ONE_SOURCE=1 \ ${src}/tcc.c mkdir -p ''${out}/bin - ${mes}/bin/mes --no-auto-compile -e main ${mes}/bin/mescc.scm -- \ - -L ${mes}/lib \ + ${mes.compiler}/bin/mes --no-auto-compile -e main ${mes.srcPost.bin}/bin/mescc.scm -- \ + -L ${mes.libs}/lib \ -l c+tcc \ -o ''${out}/bin/tcc \ tcc.s |