From c793cc35a0959a3e68ab09802e2c978750e94ace Mon Sep 17 00:00:00 2001
From: Ian Lynagh <ian@well-typed.com>
Date: Thu, 29 Nov 2012 23:52:07 +0000
Subject: [PATCH] libffi build system tweaks

---
 compiler/ghc.mk | 3 +++
 configure.ac    | 2 +-
 ghc.mk          | 8 +-------
 libffi/ghc.mk   | 1 +
 rts/ghc.mk      | 5 ++++-
 5 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/compiler/ghc.mk b/compiler/ghc.mk
index 887f91b28084..0e53ca5e6248 100644
--- a/compiler/ghc.mk
+++ b/compiler/ghc.mk
@@ -500,7 +500,10 @@ $(foreach way,$$(compiler_stage3_WAYS),\
 compiler/prelude/PrimOp_HC_OPTS  += -fforce-recomp
 
 # LibFFI.hs #includes ffi.h
+ifneq "$(UseSystemLibFFI)" "YES"
 compiler/stage2/build/LibFFI.hs : $(libffi_HEADERS)
+endif
+
 # On Windows it seems we also need to link directly to libffi
 ifeq "$(HostOS_CPP)" "mingw32"
 define windowsDynLinkToFfi
diff --git a/configure.ac b/configure.ac
index 6b9335edda4b..06512358aaab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -137,7 +137,7 @@ AS_IF([test "$UseSystemLibFFI" = "YES"], [
  AC_CHECK_LIB(ffi, ffi_call,
   [AC_CHECK_HEADERS([ffi.h], [break], [])
    AC_DEFINE([HAVE_LIBFFI], [1], [Define to 1 if you have libffi.])],
-  [UseSystemLibFFI="NO"])
+  [AC_MSG_ERROR([Cannot find system libffi])])
  CFLAGS="$CFLAGS2"
  LDFLAGS="$LDFLAGS2"
 ])
diff --git a/ghc.mk b/ghc.mk
index 852baa9f3210..f73c8018fe53 100644
--- a/ghc.mk
+++ b/ghc.mk
@@ -618,18 +618,12 @@ else
 MAYBE_GHCI=driver/ghci
 endif
 
-ifeq "$(UseSystemLibFFI)" "YES"
-MAYBE_LIBFFI=
-else
-MAYBE_LIBFFI=libffi
-endif
-
 BUILD_DIRS += \
    driver \
    $(MAYBE_GHCI) \
    driver/ghc \
    driver/haddock \
-   $(MAYBE_LIBFFI) \
+   libffi \
    includes \
    rts
 
diff --git a/libffi/ghc.mk b/libffi/ghc.mk
index 07d6d3d74cf3..3ced47627f67 100644
--- a/libffi/ghc.mk
+++ b/libffi/ghc.mk
@@ -44,6 +44,7 @@ endif
 
 ifneq "$(BINDIST)" "YES"
 $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
+	false ffi
 	$(call removeFiles,$(libffi_STAMP_STATIC_CONFIGURE))
 	$(call removeFiles,$(libffi_STAMP_STATIC_BUILD))
 	$(call removeFiles,$(libffi_STAMP_STATIC_INSTALL))
diff --git a/rts/ghc.mk b/rts/ghc.mk
index bf01a90d5a9f..e3c9fa6b47b8 100644
--- a/rts/ghc.mk
+++ b/rts/ghc.mk
@@ -493,7 +493,10 @@ endif
 
 $(eval $(call dependencies,rts,dist,1))
 
-$(rts_dist_depfile_c_asm) : $(libffi_HEADERS) $(DTRACEPROBES_H)
+$(rts_dist_depfile_c_asm) : $(DTRACEPROBES_H)
+ifneq "$(UseSystemLibFFI)" "YES"
+$(rts_dist_depfile_c_asm) : $(libffi_HEADERS)
+endif
 
 # -----------------------------------------------------------------------------
 # compile dtrace probes if dtrace is supported
-- 
GitLab