Fix a problem with the libffi testsuite using a method to determine the
compiler to use resulting in the tool being different from one the
library has been built with, and causing a catastrophic failure from the
inability to actually choose any compiler at all in a cross-compilation
configuration.
Address this problem by providing a DejaGNU configuration file defining
the compiler to use, via the CC_FOR_TARGET TCL variable, set from $CC by
autoconf, which will have all the required options set for the target
compiler to build executables in the environment configured, removing
failures like:
FAIL: libffi.call/closure_fn0.c -W -Wall -Wno-psabi -O0 (test for excess errors)
Excess errors:
default_target_compile: No compiler to compile with
UNRESOLVED: libffi.call/closure_fn0.c -W -Wall -Wno-psabi -O0 compilation failed to produce executable
and bringing overall test results for the `riscv64-linux-gnu' target
(here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user
emulation mode as the target board) from:
=== libffi Summary ===
# of unexpected failures 708
# of unresolved testcases 708
# of unsupported tests 30
to:
=== libffi Summary ===
# of expected passes 1934
# of unsupported tests 28
This is a combined backport of the relevant parts of upstream libffi
changes as follows:
- commit
8308984e479e ("[PATCH] Make sure we're running dejagnu tests
with the right compiler."),
- commit
2d9b3939751b ("[PATCH] Fix for closures with sunpro compiler"),
- commit
0c3824702d3d ("[PATCH] Always set CC_FOR_TARGET for dejagnu, to
make the testsuite respect $CC"),
- commit
7d698125b1f0 ("[PATCH] Use the proper C++ compiler to run C++
tests"),
- commit
6b6df1a7bb37 ("[PATCH] Adds `local.exp` to CLEANFILES"),
- commit
6cf0dea78a5a ("[PATCH] Change CLEANFILES to DISTCLEANFILES")
libffi/
* Makefile.am (DISTCLEANFILES): New variable.
* configure.ac: Produce `local.exp'.
* Makefile.in: Regenerate.
* configure: Regenerate.
* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
variable.
* testsuite/Makefile.in: Regenerate.
+2020-04-25 Maciej W. Rozycki <macro@wdc.com>
+
+ * Makefile.am (DISTCLEANFILES): New variable.
+ * configure.ac: Produce `local.exp'.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
+ variable.
+ * testsuite/Makefile.in: Regenerate.
+
2020-01-24 Maciej W. Rozycki <macro@wdc.com>
* configure.ac: Handle `--with-toolexeclibdir='.
libffi.xcodeproj/project.pbxproj \
libtool-ldflags
+# local.exp is generated by configure
+DISTCLEANFILES = local.exp
+
# Automake Documentation:
# If your package has Texinfo files in many directories, you can use the
# variable TEXINFO_TEX to tell Automake where to find the canonical
libtool-ldflags
+# local.exp is generated by configure
+DISTCLEANFILES = local.exp
+
# Automake Documentation:
# If your package has Texinfo files in many directories, you can use the
# variable TEXINFO_TEX to tell Automake where to find the canonical
-rm -f src/x86/$(am__dirstamp)
-rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp)
-rm -f src/xtensa/$(am__dirstamp)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
+cat > local.exp <<EOF
+set CC_FOR_TARGET "$CC"
+set CXX_FOR_TARGET "$CXX"
+EOF
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Test for 64-bit build.
AC_CHECK_SIZEOF([size_t])
+cat > local.exp <<EOF
+set CC_FOR_TARGET "$CC"
+set CXX_FOR_TARGET "$CXX"
+EOF
+
AM_MAINTAINER_MODE
AC_CHECK_HEADERS(sys/mman.h)
AM_RUNTESTFLAGS =
+EXTRA_DEJAGNU_SITE_CONFIG=../local.exp
+
CLEANFILES = *.exe core* *.log *.sum
EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \
echo $(top_srcdir)/../dejagnu/runtest ; \
else echo runtest; fi`
+EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp
CLEANFILES = *.exe core* *.log *.sum
EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \
libffi.call/cls_align_longdouble_split.c \