diff --git a/compiler/ghc.mk b/compiler/ghc.mk
index 887f91b28084481193a406f4a4d2268be054cd1a..0e53ca5e6248f2b4df39ac17e8251e8020d53731 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 6b9335edda4b404c15bcd0e45d838003bbfcb24d..06512358aaabf10c5b177cbdcdf895b9fef2fd28 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 852baa9f321068ae9c36dd471c74ab1dba91b4f4..f73c8018fe531a49cd6819ecb7c7625d58cd5a2e 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 07d6d3d74cf33dd348da787bedab76e8760b685e..3ced47627f673c2459e39eaee57dc221d7547161 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 bf01a90d5a9fa669b537a4a811366b7de5e9f169..e3c9fa6b47b8e76977cec55dfb0791eb17ef2d08 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