From dc0f8f8bf8608c39da32e3c8ca1484b766fc7452 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer 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 , but it is dnl missing O_NOFOLLOW. AC_ARG_VAR([O_NOFOLLOW], [value to use for O_NOFOLLOW (cf. )]) AS_IF([test "x$O_NOFOLLOW" = "x"], - [AC_MSG_CHECKING([the value of O_NOFOLLOW]) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[ - #include - #include - ]], [[ - 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 + #include + ]], + [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