Make a mingw tree from mingw tarballs
[ghc-hetmet.git] / libffi / ghc.mk
index fde3a9c..a1c2748 100644 (file)
@@ -68,7 +68,7 @@ BINDIST_STAMPS = libffi/stamp.ffi.build libfii/stamp.ffi.configure
 
 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
@@ -82,7 +82,7 @@ libffi_DYNAMIC_PROG = $(libffi_HS_DYN_LIB).a
 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"
@@ -105,41 +105,46 @@ endif
 
 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) $(SHELL) configure \
-                 --enable-static=yes \
+           CC=$(WhatGccIsCalled) \
+        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)
+                 --host=$(PLATFORM) --build=$(PLATFORM)
 
        # libffi.so needs to be built with the correct soname.
        # 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 && \
@@ -150,8 +155,8 @@ $(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE)
 $(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))
 
@@ -163,7 +168,7 @@ $(eval $(call all-target,libffi,libffi/libHSffi.a libffi/libHSffi_p.a))
 libffi/HSffi.o: libffi/libHSffi.a
        cd libffi && \
          touch empty.c; \
-         $(CC) -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))
 
@@ -175,7 +180,7 @@ libffi/libffi.dll.a $(libffi_HS_DYN_LIB): $(libffi_STAMP_BUILD)
 # 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))
 
@@ -183,7 +188,7 @@ else
 $(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