diff --git a/mk/target.mk b/mk/target.mk
index 88140d0fb802816a5686dc8a03cf8999d87e9e59..4928732e2e4b733964b88fa2cc4d146dc474b604 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -451,6 +451,8 @@ endef
 ifneq "$(HS_SRCS)" ""
 ifeq "$(SplitObjs)" "YES"
 
+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 $@
@@ -464,16 +466,21 @@ HC_SPLIT_PRE= \
  $(FIND) $(basename $@) -name '*.$(way_)o' -print | xargs $(RM) __rm_food ; fi
 HC_SPLIT_POST  = touch $@
 
-ifeq "$(SplitObjs)" "YES"
-HC_PRE__  = $(HC_SPLIT_PRE) ;
-HC_POST__ = $(HC_SPLIT_POST) ;
-endif
+SRC_HC_PRE_OPTS  += $(HC_SPLIT_PRE) ;
+SRC_HC_POST_OPTS += $(HC_SPLIT_POST) ;
 
-SRC_HC_POST_OPTS += $(HC_POST__)
-SRC_HC_PRE_OPTS  += $(HC_PRE__)
+#
+# If (Haskell) object files are split, cleaning up 
+# consist of descending into the directories where
+# the myriads of object files have been put.
+#
+
+clean ::
+	$(FIND) $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
+	-rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS)) > /dev/null 2>&1
 
 endif # $(SplitObjs)
-endif
+endif # $(HS_SRCS)
 
 #
 # Remove local symbols from library objects if requested.
@@ -1093,21 +1100,6 @@ maintainer-clean:: mostlyclean clean distclean
 	rm -f $(MAINTAINER_CLEAN_FILES)
 endif
 
-#
-# If (Haskell) object files are split, cleaning up 
-# consist of descending into the directories where
-# the myriads of object files have been put.
-#
-
-ifneq "$(HS_OBJS)" ""
-ifneq "$(filter -split-objs,$(HC_OPTS))" ""
-clean ::
-	$(FIND) $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
-	-rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS)) > /dev/null 2>&1
-endif
-endif
-
-
 #################################################################################
 #
 #			Way management