blob: 9fb86d71cb5fb52c759e918e9577130064287259 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#############################################################
#
# 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)
LIBFFI_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -mno-compact-eh"
endif
# Move the headers to the usual location, and adjust the .pc file
# 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-*
endef
LIBFFI_POST_INSTALL_STAGING_HOOKS += LIBFFI_MOVE_STAGING_HEADERS
# Similar for target headers
define LIBFFI_MOVE_TARGET_HEADERS
install -d $(TARGET_DIR)/usr/include/
mv $(TARGET_DIR)/usr/lib/libffi-*/include/*.h $(TARGET_DIR)/usr/include/
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))
|