X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=libffi%2FMakefile;h=8a1f1106559cadf7e7ff962b767b8d6aad436884;hb=960a5edb6ac87c7d85e36f4b70be8da0175819f7;hp=3f674c4106aa99ccffbf9f48c324d78ce1a78123;hpb=c0ea0df71af0e3d1b6e210171876a806cfcda7f4;p=ghc-hetmet.git diff --git a/libffi/Makefile b/libffi/Makefile index 3f674c4..8a1f110 100644 --- a/libffi/Makefile +++ b/libffi/Makefile @@ -56,7 +56,7 @@ PLATFORM := $(shell echo $(HOSTPLATFORM) | sed 's/i[567]86/i486/g') LIBFFI_TARBALL := $(firstword $(wildcard libffi*.tar.gz)) LIBFFI_DIR := $(subst .tar.gz,,$(LIBFFI_TARBALL)) -BINDIST_STAMPS = stamp.ffi +BINDIST_STAMPS = stamp.ffi.build stamp.ffi.configure ifeq "$(BuildSharedLibs)" "YES" STAMP_BUILD = stamp.ffi.build-shared @@ -73,17 +73,17 @@ INSTALL_LIBS += libHSffi.a 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 # other GHC installations. + +HS_DYN_LIB_NAME=libHSffi-ghc$(ProjectVersion)$(soext) + ifeq "$(Windows)" "YES" -DYNAMIC_PROG = libffi.dll.a -DYNAMIC_LIBS = libffi-3.dll -RENAME_LIBS = +DYNAMIC_PROG = $(HS_DYN_LIB_NAME).a +DYNAMIC_LIBS = $(HS_DYN_LIB_NAME) else DYNAMIC_PROG = -DYNAMIC_LIBS = libffi.so libffi.so.5 libffi.so.5.0.5 +DYNAMIC_LIBS = libffi.so libffi.so.5 libffi.so.5.0.7 endif -HS_DYN_LIB_NAME=libHSffi-ghc$(ProjectVersion)$(soext) - ifeq "$(BuildSharedLibs)" "YES" EnableShared=yes else @@ -109,6 +109,11 @@ $(STAMP_CONFIGURE): $(TAR) -zxf $(LIBFFI_TARBALL) mv $(LIBFFI_DIR) build chmod +x ln + patch -p0 < libffi-dllize-3.0.6.patch + + # This patch is just the resulting delta from running automake, autoreconf, libtoolize --force --copy + patch -p0 < libffi-autotools-update.patch + (set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \ PATH=`pwd`:$$PATH; \ export PATH; \ @@ -123,6 +128,11 @@ $(STAMP_CONFIGURE): # soname, but we don't need that anyway! $(CP) build/libtool build/libtool.orig sed -e s/soname_spec=.*/soname_spec="$(HS_DYN_LIB_NAME)"/ build/libtool.orig > build/libtool + + # We don't want libtool's cygwin hacks + $(CP) build/libtool build/libtool.orig + sed -e s/dlname=\'\$$tdlname\'/dlname=\'\$$dlname\'/ build/libtool.orig > build/libtool + touch $@ ffi.h: $(STAMP_CONFIGURE) @@ -131,12 +141,11 @@ ffi.h: $(STAMP_CONFIGURE) $(STAMP_BUILD): $(STAMP_CONFIGURE) $(MAKE) -C build MAKEFLAGS= (cd build; ./libtool --mode=install cp libffi.la $(FPTOOLS_TOP_ABS)/libffi) + $(CP) $(STATIC_LIB) libHSffi.a + $(CP) $(STATIC_LIB) libHSffi_p.a touch $@ -$(STATIC_LIB) $(DYNAMIC_LIBS) $(DYNAMIC_PROG): $(STAMP_BUILD) - -libHSffi.a libHSffi_p.a: $(STATIC_LIB) - $(CP) $(STATIC_LIB) $@ +libHSffi.a libHSffi_p.a: $(STAMP_BUILD) all :: libHSffi.a libHSffi_p.a @@ -152,15 +161,27 @@ HSffi.o: libHSffi.a all :: HSffi.o ifeq "$(BuildSharedLibs)" "YES" +ifeq "$(Windows)" "YES" +# Windows libtool creates .dll, and as we already patched that +# there is no need to copy from libffi.dll to libHSffi...dll. +# However, the renaming is still required for the import library +# libffi.dll.a. +$(HS_DYN_LIB_NAME).a: $(STAMP_BUILD) + $(CP) libffi.dll.a $(HS_DYN_LIB_NAME).a +all :: $(HS_DYN_LIB_NAME).a + +else +# Rename libffi.so to libHSffi...so $(HS_DYN_LIB_NAME): $(DYNAMIC_LIBS) $(CP) $(word 1,$(DYNAMIC_LIBS)) $(HS_DYN_LIB_NAME) all :: $(HS_DYN_LIB_NAME) endif +endif clean distclean maintainer-clean :: $(RM) -f stamp.ffi.* ffi.h empty.c - $(RM) -f libffi.a libffi.la $(DYNAMIC_PROG) $(DYNAMIC_LIBS) $(ORIG_DYNAMIC_LIBS) + $(RM) -f libffi.a libffi.la $(DYNAMIC_PROG) $(DYNAMIC_LIBS) $(HS_DYN_LIB_NAME) $(HS_DYN_LIB_NAME).a $(RM) -rf build #----------------------------------------------------------------------------- @@ -169,6 +190,7 @@ clean distclean maintainer-clean :: include $(TOP)/mk/target.mk +BINDIST_EXTRAS += package.conf.in BINDIST_EXTRAS += $(BINDIST_STAMPS) BINDIST_EXTRAS += $(INSTALL_PROGS) BINDIST_EXTRAS += $(INSTALL_LIBS)