diff --git a/mk/suffix.mk b/mk/suffix.mk
index 79d6c7d6a248dbed9f917e318b29139ba520c901..9e086ecf299c3c77082594771fa3cff0d018bf5a 100644
--- a/mk/suffix.mk
+++ b/mk/suffix.mk
@@ -142,6 +142,10 @@ endif
 	@$(RM) $@
 	$(FLEX) -t $(FLEX_OPTS) $< > $@ || ( $(RM) $@ && exit 1 )
 
+# stubs are automatically generated and compiled by GHC
+%_stub.$(way_)o: %.o
+	@:
+
 #-----------------------------------------------------------------------------
 # Yacc stuff
 
diff --git a/mk/target.mk b/mk/target.mk
index d5fa97e648e5f0b9153d8248ae3645a1a865bb55..7afcf5170e0fc29736c04c9acc35afd17d687d21 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -437,7 +437,7 @@ all :: $(LIBRARY)
 
 define BUILD_LIB
 $(RM) $@
-$(AR) $(AR_OPTS) $@ $(LIBOBJS)
+$(AR) $(AR_OPTS) $@ $(STUBOBJS) $(LIBOBJS)
 $(RANLIB) $@
 endef
 
@@ -455,7 +455,7 @@ SRC_HC_OPTS += -split-objs
 
 define BUILD_LIB
 $(RM) $@
-TMPDIR=$(TMPDIR); export TMPDIR; $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o' -print | xargs ar q $@
+TMPDIR=$(TMPDIR); export TMPDIR; ( echo $(STUBOBJS) ; $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o' -print ) | xargs ar q $@
 $(RANLIB) $@
 endef
 
@@ -499,7 +499,7 @@ SRC_HC_POST_OPTS += \
 endif
 endif
 
-$(LIBRARY) :: $(LIBOBJS)
+$(LIBRARY) :: $(STUBOBJS) $(LIBOBJS)
 	$(BUILD_LIB)
 endif