-MOSTLY_CLEAN_FILES += $(HS_OBJS) $(C_OBJS)
-CLEAN_FILES += $(HS_PROG) $(C_PROG) $(SCRIPT_PROG) $(PROG) $(LIBRARY) \
- $(HS_IFACES) \
- a.out core
-MAINTAINER_CLEAN_FILES += .depend $(BOOT_SRCS)
+MOSTLY_CLEAN_FILES += $(HS_OBJS) $(C_OBJS)
+CLEAN_FILES += $(HS_PROG) $(C_PROG) $(SCRIPT_PROG) $(SCRIPT_LINK) \
+ $(PROG) $(LIBRARY) $(HS_IFACES) $(HS_SS) a.out \
+ $(patsubst %.hsc,%.hs,$(HSC_SRCS)) \
+ $(patsubst %.hsc,%_hsc.c,$(HSC_SRCS)) \
+ $(patsubst %.hsc,%_hsc.h,$(HSC_SRCS))
+
+# Don't clean the .hc files if we're bootstrapping
+ifneq "$(BootingFromHc)" "YES"
+CLEAN_FILES += $(HS_HCS)
+endif
+
+DIST_CLEAN_FILES += .depend
+MAINTAINER_CLEAN_FILES += $(BOOT_SRCS)