INSTALL_HEADERS += libffi/ffi.h
libffi_STATIC_LIB = libffi/libffi.a
-INSTALL_LIBS += libffi/libHSffi.a libffi/HSffi.o
+INSTALL_LIBS += libffi/libHSffi.a libffi/libHSffi_p.a libffi/HSffi.o
# We have to add the GHC version to the name of our dynamic libs, because
# they will be residing in the system location along with dynamic libs from
libffi_DYNAMIC_LIBS = $(libffi_HS_DYN_LIB)
else
libffi_DYNAMIC_PROG =
-libffi_DYNAMIC_LIBS = libffi/libffi.so libffi/libffi.so.5 libffi/libffi.so.5.0.7
+libffi_DYNAMIC_LIBS = libffi/libffi.so libffi/libffi.so.5 libffi/libffi.so.5.0.9
endif
ifeq "$(BuildSharedLibs)" "YES"
ifneq "$(BINDIST)" "YES"
$(libffi_STAMP_CONFIGURE):
- $(RM) -rf $(LIBFFI_DIR) libffi/build
- cd libffi && $(TAR) -zxf tarball/libffi*.tar.gz
+ "$(RM)" $(RM_OPTS) -r $(LIBFFI_DIR) libffi/build
+ cd libffi && $(TAR) -zxf ../ghc-tarballs/libffi/libffi*.tar.gz
mv libffi/libffi-* libffi/build
chmod +x libffi/ln
- cd libffi && $(PATCH) -p0 < libffi.dllize-3.0.6.patch
-
- # This patch is just the resulting delta from running automake, autoreconf, libtoolize --force --copy
- cd libffi && $(PATCH) -p0 < libffi.autotools-update.patch
+ cd libffi/build && "$(PATCH)" -p1 < ../libffi.dllize-3.0.8.patch
+ # This patch is just the resulting delta from running
+ # automake && autoreconf && libtoolize --force --copy
+ cd libffi/build && "$(PATCH)" -p1 < ../libffi.autotools-update-3.0.8.patch
+# Because -Werror may be in SRC_CC_OPTS/SRC_LD_OPTS, we need to turn
+# warnings off or the compilation of libffi might fail due to warnings
cd libffi && \
(set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \
PATH=`pwd`:$$PATH; \
export PATH; \
cd build && \
CC=$(WhatGccIsCalled) \
- CFLAGS="$(SRC_CC_OPTS)" \
- LDFLAGS="$(SRC_LD_OPTS)" \
- $(SHELL) configure \
+ CFLAGS="$(SRC_CC_OPTS) $(CONF_CC_OPTS) -w" \
+ LDFLAGS="$(SRC_LD_OPTS) $(CONF_LD_OPTS) -w" \
+ "$(SHELL)" configure \
--enable-static=yes \
--enable-shared=$(libffi_EnableShared) \
--host=$(PLATFORM) --build=$(PLATFORM)
# NOTE: this builds libffi_convience.so with the incorrect
# soname, but we don't need that anyway!
cd libffi && \
- $(CP) build/libtool build/libtool.orig; \
+ "$(CP)" build/libtool build/libtool.orig; \
sed -e s/soname_spec=.*/soname_spec="$(libffi_HS_DYN_LIB_NAME)"/ build/libtool.orig > build/libtool
# We don't want libtool's cygwin hacks
cd libffi && \
- $(CP) build/libtool build/libtool.orig; \
+ "$(CP)" build/libtool build/libtool.orig; \
sed -e s/dlname=\'\$$tdlname\'/dlname=\'\$$dlname\'/ build/libtool.orig > build/libtool
touch $@
libffi/ffi.h: $(libffi_STAMP_CONFIGURE)
- $(CP) libffi/build/include/ffi.h $@
+ "$(CP)" libffi/build/include/ffi.h $@
$(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE)
cd libffi && \
$(libffi_STATIC_LIB): $(libffi_STAMP_BUILD)
# Rename libffi.a to libHSffi.a
libffi/libHSffi.a libffi/libHSffi_p.a: $(libffi_STATIC_LIB)
- $(CP) $(libffi_STATIC_LIB) libffi/libHSffi.a
- $(CP) $(libffi_STATIC_LIB) libffi/libHSffi_p.a
+ "$(CP)" $(libffi_STATIC_LIB) libffi/libHSffi.a
+ "$(CP)" $(libffi_STATIC_LIB) libffi/libHSffi_p.a
$(eval $(call all-target,libffi,libffi/libHSffi.a libffi/libHSffi_p.a))
libffi/HSffi.o: libffi/libHSffi.a
cd libffi && \
touch empty.c; \
- $(CC) $(SRC_CC_OPTS) -c empty.c -o HSffi.o
+ "$(CC)" $(SRC_CC_OPTS) $(CONF_CC_OPTS) -c empty.c -o HSffi.o
$(eval $(call all-target,libffi,libffi/HSffi.o))
# However, the renaming is still required for the import library
# libffi.dll.a.
$(libffi_HS_DYN_LIB).a: libffi/libffi.dll.a
- $(CP) libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
+ "$(CP)" libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB).a))
$(libffi_DYNAMIC_LIBS): $(libffi_STAMP_BUILD)
# Rename libffi.so to libHSffi...so
$(libffi_HS_DYN_LIB): $(libffi_DYNAMIC_LIBS)
- $(CP) $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB)
+ "$(CP)" $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB)
$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB)))
endif