diff options
| author | Jan (janneke) Nieuwenhuizen <janneke@gnu.org> | 2021-12-28 15:55:18 +0100 |
|---|---|---|
| committer | Jan (janneke) Nieuwenhuizen <janneke@gnu.org> | 2022-10-19 07:35:29 +0200 |
| commit | 83842db321c0dcc080d6480aaf5c018968404a52 (patch) | |
| tree | 4e71cb3d7b59fd49f513d6595155a2df754a2b8d | |
| parent | cc625c9b1edb3878cacb421d2645fb95d001dd10 (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.scm | 240 |
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 |
