summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/guile-cross-compilation.patch
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-03-21 23:39:43 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-03-21 23:39:43 -0400
commita9429c8f2207841c649438187d6e19046d323a16 (patch)
treea06e4b8a87b6a42742cf6750276746a10b6c2139 /gnu/packages/patches/guile-cross-compilation.patch
parentf0136b36ae8c1e9c174043bd50e0e24413c0f345 (diff)
parent49b350fafc2c3ea1db66461b73d4e304cd13ec92 (diff)
Merge branch 'staging' into core-updates.
Diffstat (limited to 'gnu/packages/patches/guile-cross-compilation.patch')
-rw-r--r--gnu/packages/patches/guile-cross-compilation.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/patches/guile-cross-compilation.patch b/gnu/packages/patches/guile-cross-compilation.patch
new file mode 100644
index 0000000000..a594cb9421
--- /dev/null
+++ b/gnu/packages/patches/guile-cross-compilation.patch
@@ -0,0 +1,55 @@
+When cross-compiling, get type sizes of the host system, not the build system.
+
+This is Guile commit 24b30130ca75653bdbacea84ce0443608379d630, which
+fixes <https://issues.guix.gnu.org/54198>, with one difference: it uses
+8 instead of SIZEOF_INTMAX_T, such that we do not need to modify
+'configure.ac' to check for the size of 'intmax_t' and to run 'autoreconf'
+(libguile/numbers.c expects SCM_SIZEOF_INTMAX_T = 8).
+
+diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c
+index 01b14f14d..691ebd0af 100644
+--- a/libguile/gen-scmconfig.c
++++ b/libguile/gen-scmconfig.c
+@@ -1,4 +1,4 @@
+-/* Copyright 2003-2013,2018,2020,2021
++/* Copyright 2003-2013, 2018, 2020-2022
+ Free Software Foundation, Inc.
+
+ This file is part of Guile.
+@@ -238,21 +238,21 @@ main (int argc, char *argv[])
+ pf ("\n");
+ pf ("/* Standard types. */\n");
+
+- pf ("#define SCM_SIZEOF_CHAR %zu\n", sizeof (char));
+- pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %zu\n", sizeof (unsigned char));
+- pf ("#define SCM_SIZEOF_SHORT %zu\n", sizeof (short));
+- pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %zu\n", sizeof (unsigned short));
+- pf ("#define SCM_SIZEOF_LONG %zu\n", sizeof (long));
+- pf ("#define SCM_SIZEOF_UNSIGNED_LONG %zu\n", sizeof (unsigned long));
+- pf ("#define SCM_SIZEOF_INT %zu\n", sizeof (int));
+- pf ("#define SCM_SIZEOF_UNSIGNED_INT %zu\n", sizeof (unsigned int));
+- pf ("#define SCM_SIZEOF_SIZE_T %zu\n", sizeof (size_t));
+- pf ("#define SCM_SIZEOF_LONG_LONG %zu\n", sizeof (long long));
+- pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %zu\n", sizeof (unsigned long long));
+- pf ("#define SCM_SIZEOF_INTMAX %zu\n", sizeof (intmax_t));
+- pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %zu\n", sizeof (ptrdiff_t));
+- pf ("#define SCM_SIZEOF_INTPTR_T %zu\n", sizeof (intptr_t));
+- pf ("#define SCM_SIZEOF_UINTPTR_T %zu\n", sizeof (uintptr_t));
++ pf ("#define SCM_SIZEOF_CHAR %d\n", SIZEOF_CHAR);
++ pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %d\n", SIZEOF_UNSIGNED_CHAR);
++ pf ("#define SCM_SIZEOF_SHORT %d\n", SIZEOF_SHORT);
++ pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %d\n", SIZEOF_UNSIGNED_SHORT);
++ pf ("#define SCM_SIZEOF_LONG %d\n", SIZEOF_LONG);
++ pf ("#define SCM_SIZEOF_UNSIGNED_LONG %d\n", SIZEOF_UNSIGNED_LONG);
++ pf ("#define SCM_SIZEOF_INT %d\n", SIZEOF_INT);
++ pf ("#define SCM_SIZEOF_UNSIGNED_INT %d\n", SIZEOF_UNSIGNED_INT);
++ pf ("#define SCM_SIZEOF_SIZE_T %d\n", SIZEOF_SIZE_T);
++ pf ("#define SCM_SIZEOF_LONG_LONG %d\n", SIZEOF_LONG_LONG);
++ pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %d\n", SIZEOF_UNSIGNED_LONG_LONG);
++ pf ("#define SCM_SIZEOF_INTMAX %d\n", 8); /* like SIZEOF_INTMAX_T */
++ pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %d\n", SIZEOF_PTRDIFF_T);
++ pf ("#define SCM_SIZEOF_INTPTR_T %d\n", SIZEOF_INTPTR_T);
++ pf ("#define SCM_SIZEOF_UINTPTR_T %d\n", SIZEOF_UINTPTR_T);
+
+ pf ("\n");
+ pf ("/* same as POSIX \"struct timespec\" -- always defined */\n");