summaryrefslogtreecommitdiffstats
path: root/package/libffi/libffi.mk
diff options
context:
space:
mode:
Diffstat (limited to 'package/libffi/libffi.mk')
-rw-r--r--package/libffi/libffi.mk29
1 files changed, 23 insertions, 6 deletions
diff --git a/package/libffi/libffi.mk b/package/libffi/libffi.mk
index 64b3eb412..9fb86d71c 100644
--- a/package/libffi/libffi.mk
+++ b/package/libffi/libffi.mk
@@ -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))
-