Commit ddd69b56 authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

libffi: switch to using a Git version, brings Microblaze and Xtensa support



We already had backported patches for the Blackfin and AArch64
support, and now we would have needed to also backport the Xtensa
support and the Microblaze support. This starts to get crazy.

Let's switch to using a Git version from Github, until libffi finally
releases a new stable version.

In order to achieve this, we also need to:

 * autoreconf the package, so that a libffi.pc file gets generated

 * manually install the libffi.pc file, because it doesn't get
   installed by libffi Makefile, for some reason

 * remove the part of the target post install hook that was messing
   with libffi.pc, since it was modifying the one in STAGING_DIR
   (which is odd for a target post install hook), and the libffi.pc
   file is anyway not installed to the target anymore.

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent b26e9f54
Loading
Loading
Loading
Loading
+0 −1044

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −2326

File deleted.

Preview size limit exceeded, changes collapsed.

+23 −6
Original line number Diff line number Diff line
@@ -4,12 +4,17 @@
#
#############################################################

LIBFFI_VERSION = 3.0.11
LIBFFI_SITE    = ftp://sources.redhat.com/pub/libffi/
LIBFFI_VERSION = bcc0c28001b6d427d5cd8037d2e3c892babc6b4c
LIBFFI_SITE    = http://github.com/atgreen/libffi/tarball/$(LIBFFI_VERSION)
LIBFFI_LICENSE = MIT
LIBFFI_LICENSE_FILES = LICENSE
LIBFFI_INSTALL_STAGING = YES

# We're using a version from Git which strangely bundles a generated
# configure script, but it's broken (doesn't generate the libffi.pc
# file).
LIBFFI_AUTORECONF = YES

# Newer CS MIPS toolchains use a different (compact) eh_frame format
# libffi don't like them, just switch to the older format
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209)$(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203),y)
@@ -17,9 +22,11 @@ LIBFFI_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -mno-compact-eh"
endif

# Move the headers to the usual location, and adjust the .pc file
# accordingly
# accordingly. For some reason, the libffi build system forgets to
# install the .pc file, so we do it manually.
define LIBFFI_MOVE_STAGING_HEADERS
	mv $(STAGING_DIR)/usr/lib/libffi-*/include/*.h $(STAGING_DIR)/usr/include/
	$(INSTALL) -D -m 0644 $(@D)/libffi.pc $(STAGING_DIR)/usr/lib/pkgconfig/libffi.pc
	$(SED) '/^includedir.*/d' $(STAGING_DIR)/usr/lib/pkgconfig/libffi.pc
	$(SED) '/^Cflags:.*/d' $(STAGING_DIR)/usr/lib/pkgconfig/libffi.pc
	rm -rf $(TARGET_DIR)/usr/lib/libffi-*
@@ -31,13 +38,23 @@ LIBFFI_POST_INSTALL_STAGING_HOOKS += LIBFFI_MOVE_STAGING_HEADERS
define LIBFFI_MOVE_TARGET_HEADERS
	install -d $(TARGET_DIR)/usr/include/
	mv $(TARGET_DIR)/usr/lib/libffi-*/include/*.h $(TARGET_DIR)/usr/include/
	$(SED) '/^includedir.*/d' $(STAGING_DIR)/usr/lib/pkgconfig/libffi.pc
	$(SED) '/^Cflags:.*/d' $(STAGING_DIR)/usr/lib/pkgconfig/libffi.pc
	rm -rf $(TARGET_DIR)/usr/lib/libffi-*
endef

LIBFFI_POST_INSTALL_TARGET_HOOKS += LIBFFI_MOVE_TARGET_HEADERS

# We're using a version from Git which strangely bundles a generated
# configure script, but it's broken (doesn't generate the libffi.pc
# file).
HOST_LIBFFI_AUTORECONF = YES

# For some reason, the libffi build system forgets to install the .pc
# file, so we do it manually.
define HOST_LIBFFI_INSTALL_PC_FILE
	$(INSTALL) -D $(@D)/libffi.pc $(HOST_DIR)/usr/lib/pkgconfig/libffi.pc
endef

HOST_LIBFFI_POST_INSTALL_HOOKS += HOST_LIBFFI_INSTALL_PC_FILE

$(eval $(autotools-package))
$(eval $(host-autotools-package))