summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan (janneke) Nieuwenhuizen <janneke@gnu.org>2021-12-28 15:55:18 +0100
committerJan (janneke) Nieuwenhuizen <janneke@gnu.org>2022-10-19 07:35:29 +0200
commit83842db321c0dcc080d6480aaf5c018968404a52 (patch)
tree4e71cb3d7b59fd49f513d6595155a2df754a2b8d
parentcc625c9b1edb3878cacb421d2645fb95d001dd10 (diff)
DRAFT gnu: commencement: gcc-mesboot0: Support ARM.
* gnu/packages/commencement.scm (gcc-mesboot0)[native-inputs]: Add gcc-boot-2.95.3-arm.patch. [supported-systems]: Add armhf-linux, aarch64-linux. [arguments]: Cater for armhf-linux, aarch64-linux.
-rw-r--r--gnu/packages/commencement.scm240
1 files changed, 126 insertions, 114 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index e551eb30f96..4c050c432dd 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1367,122 +1367,134 @@ ac_cv_c_float_format='IEEE (little-endian)'
1367 ;; stricly needed, but very helpful for development because it builds 1367 ;; stricly needed, but very helpful for development because it builds
1368 ;; relatively fast. If this configures and builds then gcc-mesboot1 also 1368 ;; relatively fast. If this configures and builds then gcc-mesboot1 also
1369 ;; builds. 1369 ;; builds.
1370 (package 1370 (let ((triplet (match (%current-system)
1371 (inherit gcc-mesboot0) 1371 ((or "armhf-linux" "aarch64-linux")
1372 (name "gcc-core-mesboot1") 1372 "arm-unknown-linux-gnu")
1373 (version "4.6.4") 1373 ((or "i686-linux" "x86_64-linux")
1374 (source (origin 1374 "i686-unknown-linux-gnu"))))
1375 (method url-fetch) 1375 (package
1376 (uri (string-append "mirror://gnu/gcc/gcc-" 1376 (inherit gcc-mesboot0)
1377 version "/gcc-core-" version ".tar.gz")) 1377 (name "gcc-core-mesboot1")
1378 (sha256 1378 (version "4.6.4")
1379 (base32 1379 (source (origin
1380 "173kdb188qg79pcz073cj9967rs2vzanyjdjyxy9v0xb0p5sad75")))) 1380 (method url-fetch)
1381 (inputs `(("gmp-source" ,gmp-boot) 1381 (uri (string-append "mirror://gnu/gcc/gcc-"
1382 ("mpfr-source" ,mpfr-boot) 1382 version "/gcc-core-" version ".tar.gz"))
1383 ("mpc-source" ,mpc-boot))) 1383 (sha256
1384 (native-inputs (%boot-mesboot1-inputs)) 1384 (base32
1385 (arguments 1385 "173kdb188qg79pcz073cj9967rs2vzanyjdjyxy9v0xb0p5sad75"))))
1386 (list #:implicit-inputs? #f 1386 (supported-systems '("armhf-linux" "aarch64-linux"
1387 #:guile %bootstrap-guile 1387 "i686-linux" "x86_64-linux"))
1388 #:tests? #f 1388 (inputs `(("gmp-source" ,gmp-boot)
1389 #:modules '((guix build gnu-build-system) 1389 ("mpfr-source" ,mpfr-boot)
1390 (guix build utils) 1390 ("mpc-source" ,mpc-boot)))
1391 (srfi srfi-1)) 1391 (native-inputs (%boot-mesboot1-inputs))
1392 #:parallel-build? #f ; for debugging 1392 (arguments
1393 #:make-flags 1393 (list #:implicit-inputs? #f
1394 #~(let* ((libc (assoc-ref %build-inputs "libc")) 1394 #:guile %bootstrap-guile
1395 (ldflags (string-append 1395 #:tests? #f
1396 "-B" libc "/lib " 1396 #:modules '((guix build gnu-build-system)
1397 "-Wl,-dynamic-linker " 1397 (guix build utils)
1398 "-Wl," libc 1398 (srfi srfi-1))
1399 #$(glibc-dynamic-linker "i686-linux")))) 1399 #:parallel-build? #f ; for debugging
1400 (list (string-append "LDFLAGS=" ldflags) 1400 #:make-flags
1401 (string-append "LDFLAGS_FOR_TARGET=" ldflags))) 1401 #~(let* ((libc (assoc-ref %build-inputs "libc"))
1402 #:configure-flags 1402 (ldflags (string-append
1403 #~(let ((out (assoc-ref %outputs "out")) 1403 "-B" libc "/lib "
1404 (glibc (assoc-ref %build-inputs "libc"))) 1404 "-Wl,-dynamic-linker "
1405 (list (string-append "--prefix=" out) 1405 "-Wl," libc
1406 "--build=i686-unknown-linux-gnu" 1406 #$(glibc-dynamic-linker "i686-linux"))))
1407 "--host=i686-unknown-linux-gnu" 1407 (list (string-append "LDFLAGS=" ldflags)
1408 (string-append "--with-native-system-header-dir=" glibc "/include") 1408 (string-append "LDFLAGS_FOR_TARGET=" ldflags)))
1409 (string-append "--with-build-sysroot=" glibc "/include") 1409 #:configure-flags
1410 "--disable-bootstrap" 1410 #~(let ((out (assoc-ref %outputs "out"))
1411 "--disable-decimal-float" 1411 (glibc (assoc-ref %build-inputs "libc")))
1412 "--disable-libatomic" 1412 (list (string-append "--prefix=" out)
1413 "--disable-libcilkrts" 1413 (string-append "--build=" #$triplet)
1414 "--disable-libgomp" 1414 (string-append "--host=" #$triplet)
1415 "--disable-libitm" 1415 (string-append "--with-native-system-header-dir=" glibc "/include")
1416 "--disable-libmudflap" 1416 (string-append "--with-build-sysroot=" glibc "/include")
1417 "--disable-libquadmath" 1417 "--disable-bootstrap"
1418 "--disable-libsanitizer" 1418 "--disable-decimal-float"
1419 "--disable-libssp" 1419 "--disable-libatomic"
1420 "--disable-libvtv" 1420 "--disable-libcilkrts"
1421 "--disable-lto" 1421 "--disable-libgomp"
1422 "--disable-lto-plugin" 1422 "--disable-libitm"
1423 "--disable-multilib" 1423 "--disable-libmudflap"
1424 "--disable-plugin" 1424 "--disable-libquadmath"
1425 "--disable-threads" 1425 "--disable-libsanitizer"
1426 "--enable-languages=c" 1426 "--disable-libssp"
1427 "--enable-static" 1427 "--disable-libvtv"
1428 "--disable-shared" 1428 "--disable-lto"
1429 "--enable-threads=single" 1429 "--disable-lto-plugin"
1430 "--disable-libstdcxx-pch" 1430 "--disable-multilib"
1431 "--disable-build-with-cxx")) 1431 "--disable-plugin"
1432 #:phases 1432 "--disable-threads"
1433 #~(modify-phases %standard-phases 1433 "--enable-languages=c"
1434 (add-after 'unpack 'apply-boot-patch 1434 "--enable-static"
1435 (lambda* (#:key inputs #:allow-other-keys) 1435 "--disable-shared"
1436 (let ((patch-file 1436 "--enable-threads=single"
1437 #$(local-file 1437 "--disable-libstdcxx-pch"
1438 (search-patch "gcc-boot-4.6.4.patch")))) 1438 "--disable-build-with-cxx"))
1439 (invoke "patch" "--force" "-p1" "-i" patch-file)))) 1439 #:phases
1440 ;; c&p from commencement.scm:gcc-boot0 1440 #~(modify-phases %standard-phases
1441 (add-after 'unpack 'unpack-gmp&co 1441 (add-after 'unpack 'apply-boot-patch
1442 (lambda* (#:key inputs #:allow-other-keys) 1442 (lambda* (#:key inputs #:allow-other-keys)
1443 (let ((gmp (assoc-ref %build-inputs "gmp-source")) 1443 (let ((patch-file
1444 (mpfr (assoc-ref %build-inputs "mpfr-source")) 1444 #$(local-file
1445 (mpc (assoc-ref %build-inputs "mpc-source"))) 1445 (search-patch "gcc-boot-4.6.4.patch"))))
1446 (invoke "patch" "--force" "-p1" "-i" patch-file)))
1447 (lambda* (#:key inputs #:allow-other-keys)
1448 (let ((patch-file
1449 #$(local-file
1450 (search-patch "gcc-boot-2.95.3-arm.patch"))))
1451 (invoke "patch" "--force" "-p1" "-i" patch-file))))
1452 ;; c&p from commencement.scm:gcc-boot0
1453 (add-after 'unpack 'unpack-gmp&co
1454 (lambda* (#:key inputs #:allow-other-keys)
1455 (let ((gmp (assoc-ref %build-inputs "gmp-source"))
1456 (mpfr (assoc-ref %build-inputs "mpfr-source"))
1457 (mpc (assoc-ref %build-inputs "mpc-source")))
1446 1458
1447 ;; To reduce the set of pre-built bootstrap inputs, build 1459 ;; To reduce the set of pre-built bootstrap inputs, build
1448 ;; GMP & co. from GCC. 1460 ;; GMP & co. from GCC.
1449 (for-each (lambda (source) 1461 (for-each (lambda (source)
1450 (or (invoke "tar" "xvf" source) 1462 (or (invoke "tar" "xvf" source)
1451 (error "failed to unpack tarball" 1463 (error "failed to unpack tarball"
1452 source))) 1464 source)))
1453 (list gmp mpfr mpc)) 1465 (list gmp mpfr mpc))
1454 1466
1455 ;; Create symlinks like `gmp' -> `gmp-x.y.z'. 1467 ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
1456 #$@(map (lambda (lib package) 1468 #$@(map (lambda (lib package)
1457 ;; Drop trailing letters, as gmp-6.0.0a unpacks 1469 ;; Drop trailing letters, as gmp-6.0.0a unpacks
1458 ;; into gmp-6.0.0. 1470 ;; into gmp-6.0.0.
1459 #~(symlink #$(string-trim-right 1471 #~(symlink #$(string-trim-right
1460 (basename 1472 (basename
1461 (origin-actual-file-name lib) 1473 (origin-actual-file-name lib)
1462 ".tar.gz") 1474 ".tar.gz")
1463 char-set:letter) 1475 char-set:letter)
1464 #$package)) 1476 #$package))
1465 (list gmp-boot mpfr-boot mpc-boot) 1477 (list gmp-boot mpfr-boot mpc-boot)
1466 '("gmp" "mpfr" "mpc"))))) 1478 '("gmp" "mpfr" "mpc")))))
1467 (add-before 'configure 'setenv 1479 (add-before 'configure 'setenv
1468 (lambda* (#:key outputs #:allow-other-keys) 1480 (lambda* (#:key outputs #:allow-other-keys)
1469 (let* ((out (assoc-ref outputs "out")) 1481 (let* ((out (assoc-ref outputs "out"))
1470 (binutils (assoc-ref %build-inputs "binutils")) 1482 (binutils (assoc-ref %build-inputs "binutils"))
1471 (bash (assoc-ref %build-inputs "bash")) 1483 (bash (assoc-ref %build-inputs "bash"))
1472 (gcc (assoc-ref %build-inputs "gcc")) 1484 (gcc (assoc-ref %build-inputs "gcc"))
1473 (glibc (assoc-ref %build-inputs "libc")) 1485 (glibc (assoc-ref %build-inputs "libc"))
1474 (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) 1486 (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
1475 (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) 1487 (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
1476 (setenv "C_INCLUDE_PATH" (string-append 1488 (setenv "C_INCLUDE_PATH" (string-append
1477 gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" 1489 gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
1478 ":" kernel-headers "/include" 1490 ":" kernel-headers "/include"
1479 ":" glibc "/include" 1491 ":" glibc "/include"
1480 ":" (getcwd) "/mpfr/src")) 1492 ":" (getcwd) "/mpfr/src"))
1481 (setenv "LIBRARY_PATH" (string-append glibc "/lib" 1493 (setenv "LIBRARY_PATH" (string-append glibc "/lib"
1482 ":" gcc "/lib")) 1494 ":" gcc "/lib"))
1483 (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) 1495 (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
1484 (format (current-error-port) "LIBRARY_PATH=~a\n" 1496 (format (current-error-port) "LIBRARY_PATH=~a\n"
1485 (getenv "LIBRARY_PATH")))))))))) 1497 (getenv "LIBRARY_PATH")))))))))))
1486 1498
1487(define gcc-mesboot1 1499(define gcc-mesboot1
1488 (package 1500 (package