78 lines
2.6 KiB
Diff
78 lines
2.6 KiB
Diff
|
From dc0f8f8bf8608c39da32e3c8ca1484b766fc7452 Mon Sep 17 00:00:00 2001
|
||
|
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||
|
Date: Mon, 17 May 2021 16:47:19 -0400
|
||
|
Subject: [PATCH] build: Fix cross-compilation.
|
||
|
|
||
|
The cross-compilation issues corrected by this change were discovered
|
||
|
when attempting to cross-compile disarchive for the i586-gnu target on
|
||
|
GNU Guix.
|
||
|
|
||
|
* configure.ac [O_NOFOLLOW]: Rewrite test using AC_COMPUTE_INT, which
|
||
|
is supported even when cross-compiling.
|
||
|
(GUILD_TARGET_OPTION): New computed variable.
|
||
|
* build-aux/guile.am ($(AM_V_GUILEC)GUILE_AUTO_COMPILE): Use it.
|
||
|
---
|
||
|
build-aux/guile.am | 6 +++---
|
||
|
configure.ac | 24 +++++++++++++++---------
|
||
|
2 files changed, 18 insertions(+), 12 deletions(-)
|
||
|
|
||
|
diff --git a/build-aux/guile.am b/build-aux/guile.am
|
||
|
index bec04ea..7745125 100644
|
||
|
--- a/build-aux/guile.am
|
||
|
+++ b/build-aux/guile.am
|
||
|
@@ -54,7 +54,7 @@ AM_V_GUILEC_0 = @echo " GUILEC" $@;
|
||
|
SUFFIXES = .scm .go
|
||
|
|
||
|
.scm.go:
|
||
|
- $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
|
||
|
- $(top_builddir)/pre-inst-env \
|
||
|
- $(GUILD) compile $(GUILE_WARNINGS) \
|
||
|
+ $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
|
||
|
+ $(top_builddir)/pre-inst-env \
|
||
|
+ $(GUILD) compile $(GUILE_WARNINGS) $(GUILD_TARGET_OPTION) \
|
||
|
-o "$@" "$<"
|
||
|
diff --git a/configure.ac b/configure.ac
|
||
|
index 99c5ac5..0cd0173 100644
|
||
|
--- a/configure.ac
|
||
|
+++ b/configure.ac
|
||
|
@@ -39,21 +39,27 @@ AS_IF([test "x$GUILD" = "x"],
|
||
|
[AC_MSG_ERROR(m4_normalize([
|
||
|
'guild' binary not found; please check your Guile installation.]))])])
|
||
|
|
||
|
+dnl This argument is passed to guild; it ensures cross-compiling uses
|
||
|
+dnl the right target.
|
||
|
+if test -n "$host_alias"; then
|
||
|
+ AC_SUBST([GUILD_TARGET_OPTION], [--target=$host_alias])
|
||
|
+fi
|
||
|
+
|
||
|
GUILE_MODULE_REQUIRED(gcrypt hash)
|
||
|
|
||
|
dnl Guile defines a handful of values from <fcntl.h>, but it is
|
||
|
dnl missing O_NOFOLLOW.
|
||
|
AC_ARG_VAR([O_NOFOLLOW], [value to use for O_NOFOLLOW (cf. <fcntl.h>)])
|
||
|
AS_IF([test "x$O_NOFOLLOW" = "x"],
|
||
|
- [AC_MSG_CHECKING([the value of O_NOFOLLOW])
|
||
|
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
|
||
|
- #include <fcntl.h>
|
||
|
- #include <stdio.h>
|
||
|
- ]], [[
|
||
|
- printf("%d\n", O_NOFOLLOW)
|
||
|
- ]])],
|
||
|
- [O_NOFOLLOW=`./conftest$EXEEXT`],
|
||
|
- [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])])
|
||
|
+ [AC_MSG_CHECKING([the value of O_NOFOLLOW])]
|
||
|
+ [AC_COMPUTE_INT([O_NOFOLLOW],
|
||
|
+ [O_NOFOLLOW],
|
||
|
+ [[
|
||
|
+ #include <fcntl.h>
|
||
|
+ #include <stdio.h>
|
||
|
+ ]],
|
||
|
+ [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])]
|
||
|
+ [AC_MSG_RESULT([$O_NOFOLLOW])])
|
||
|
|
||
|
AC_ARG_VAR([TAR], [tar utility])
|
||
|
AS_IF([test "x$TAR" = "x"], [AC_PATH_PROG([TAR], [tar])])
|
||
|
--
|
||
|
2.31.1
|
||
|
|