From a674f9458a383b171520a7242debcfdd497ee987 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Wed, 15 Feb 2023 19:57:59 +0100 Subject: gnu: commencement: tcc-boot: Rebuild Mes C Library. * gnu/packages/commencement.scm (tcc-boot)[arguments]: Rebuild the Mes C Library in the "install" phase. --- gnu/packages/commencement.scm | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'gnu/packages/commencement.scm') diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index e34bcecd92..e19d874a3c 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2014, 2015, 2017 Mark H Weaver ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2019-2022 Marius Bakke ;;; Copyright © 2020, 2022 Timothy Sample ;;; Copyright © 2020 Guy Fleury Iteriteka @@ -733,7 +733,8 @@ (define tcc-boot (build-system gnu-build-system) (inputs '()) (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) + (native-inputs `(("mes" ,mes-boot) + ,@(%boot-tcc0-inputs))) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -792,8 +793,26 @@ (define tcc-boot (= 1 (status:exit-val (system* "./tcc" "--help"))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out")) - (tcc (assoc-ref %build-inputs "tcc"))) + (let* ((out (assoc-ref %outputs "out")) + (mes (assoc-ref %build-inputs "mes")) + (tcc (assoc-ref %build-inputs "tcc")) + (interpreter "/mes/loader") + (cppflags + (list + "-D" "BOOTSTRAP=1" + "-D" "ONE_SOURCE=1" + "-D" "TCC_TARGET_I386=1" + "-D" "CONFIG_TCCBOOT=1" + "-D" "CONFIG_TCC_STATIC=1" + "-D" "CONFIG_USE_LIBGCC=1" + "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") + "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:{B}/lib/tcc:.\"") + "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" + tcc "/include" ":/include:{B}/include\"") + "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") + "-D" (string-append "TCC_LIBTCC1_MES=\"libtcc1-mes.a\"")))) (and (mkdir-p (string-append out "/bin")) (copy-file "tcc" (string-append out "/bin/tcc")) @@ -807,7 +826,16 @@ (define tcc-boot (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) (delete-file (string-append out "/lib/tcc/libtcc1.a")) (copy-file "libtcc1.a" - (string-append out "/lib/tcc/libtcc1.a"))))))))))) + (string-append out "/lib/tcc/libtcc1.a")) + + (delete-file (string-append out "/lib/libc.a")) + (apply invoke "./tcc" "-c" "-o" "libc.o" + "-I" (string-append tcc "/include") + "-I" (string-append tcc "/include/linux/x86") + (string-append mes "/lib/libc+gnu.c") + cppflags) + (invoke "./tcc" "-ar" "rc" "libc.a" "libc.o") + (copy-file "libc.a" (string-append out "/lib/libc.a"))))))))))) (define patch-mesboot ;; The initial patch. -- cgit v1.2.3