Hi Joachim, and others interested in bug #427796 ...

I think this should fix it for you.

Sat Jul 28 18:33:05 BST 2007  Duncan Coutts <[EMAIL PROTECTED]>
  * Be more careful about cleaning split-objs and stub files
  And build the code gen tools without using split-objs at all.


I've attached a standard patch format version of this change.

It touches Makefile.am so you'll need to autoreconf, but I assume you're
already doing that.

Let me know if there are any remaining problems.

Duncan
diff -rN -u old-gtk2hs-0.9.12/Makefile.am new-gtk2hs-0.9.12/Makefile.am
--- old-gtk2hs-0.9.12/Makefile.am	2007-07-28 18:50:23.000000000 +0100
+++ new-gtk2hs-0.9.12/Makefile.am	2007-07-28 18:50:24.000000000 +0100
@@ -86,6 +86,7 @@
 tools_hierarchyGen_TypeGenerator_MAIN = \
   $(tools_hierarchyGen_TypeGenerator_SOURCES)
 tools_hierarchyGen_TypeGenerator_EXTERNALDEPS = base
+tools_hierarchyGen_TypeGenerator_NOSPLITOBJS = yes
 tools_hierarchyGen_TypeGenerator_SOURCESDIRS = tools/hierarchyGen
 tools_hierarchyGen_TypeGenerator_SOURCES = \
   tools/hierarchyGen/TypeGen.hs
@@ -105,6 +106,7 @@
 tools_callbackGen_HookGenerator_MAIN = \
   $(tools_callbackGen_HookGenerator_SOURCES)
 tools_callbackGen_HookGenerator_EXTERNALDEPS = base
+tools_callbackGen_HookGenerator_NOSPLITOBJS = yes
 tools_callbackGen_HookGenerator_SOURCESDIRS = tools/callbackGen
 tools_callbackGen_HookGenerator_SOURCES = \
   tools/callbackGen/HookGenerator.hs
@@ -123,8 +125,7 @@
 
 tools_c2hs_c2hsLocal_MAIN = c2hs/toplevel/Main.hs
 tools_c2hs_c2hsLocal_EXTERNALDEPS	= base haskell98
-tools_c2hs_c2hsLocal_HEADER		= 
-tools_c2hs_c2hsLocal_HCFLAGS		= 
+tools_c2hs_c2hsLocal_NOSPLITOBJS	= yes
 
 tools_c2hs_c2hsLocal_SOURCESDIRS = 			\
 	tools/c2hs/base/admin tools/c2hs/base/errors	\
@@ -319,6 +320,7 @@
 
 if ENABLE_SPLITOBJS
 libHSglib_a_AR = $(srcdir)/mk/link-splitobjs.sh
+glib_CLEANFILES_SPLIT = $(libHSglib_a_HSFILES:.hs=_split/)
 else
 libHSglib_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -686,9 +688,9 @@
 gtk_MOSTLYCLEANFILES += $(libHSgtk_a_HSFILES:.hs=.hi)
 gtk_MOSTLYCLEANFILES += \
 	$(libHSgtk_a_CHSFILES:.chs=.chi)	\
-	$(libHSgtk_a_LIBADD)	\
-	$(libHSgtk_a_LIBADD:.o=_.c)	\
-	$(libHSgtk_a_LIBADD:.o=_.h)
+	$(libHSgtk_a_CHSFILES:.chs=_stub.h)	\
+	$(libHSgtk_a_CHSFILES:.chs=_stub.o)	\
+	$(libHSgtk_a_CHSFILES:.chs=_stub.c)
 gtk_CLEANFILES  = $(libHSgtk_a_BUILDSOURCES)
 gtk_CLEANFILES += $(libHSgtk_a_CHSFILES_HS:.hs=.dep)
 
@@ -700,6 +702,7 @@
 
 if ENABLE_SPLITOBJS
 libHSgtk_a_AR = $(srcdir)/mk/link-splitobjs.sh
+gtk_CLEANFILES_SPLIT = $(libHSgtk_a_HSFILES:.hs=_split/)
 else
 libHSgtk_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -813,6 +816,7 @@
 
 if ENABLE_SPLITOBJS
 libHSglade_a_AR = $(srcdir)/mk/link-splitobjs.sh
+glade_CLEANFILES_SPLIT = $(libHSglade_a_HSFILES:.hs=_split/)
 else
 libHSglade_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -933,9 +937,9 @@
 gconf_MOSTLYCLEANFILES += $(libHSgconf_a_HSFILES:.hs=.hi)
 gconf_MOSTLYCLEANFILES += \
 	$(libHSgconf_a_CHSFILES:.chs=.chi)	\
-	$(libHSgconf_a_LIBADD)	\
-	$(libHSgconf_a_LIBADD:.o=_.c)	\
-	$(libHSgconf_a_LIBADD:.o=_.h)
+	$(libHSgconf_a_CHSFILES:.chs=_stub.h)	\
+	$(libHSgconf_a_CHSFILES:.chs=_stub.h)	\
+	$(libHSgconf_a_CHSFILES:.chs=_stub.c)
 gconf_CLEANFILES  = $(libHSgconf_a_BUILDSOURCES)
 gconf_CLEANFILES += $(libHSgconf_a_CHSFILES_HS:.hs=.dep)
 
@@ -948,6 +952,7 @@
 
 if ENABLE_SPLITOBJS
 libHSgconf_a_AR = $(srcdir)/mk/link-splitobjs.sh
+gconf_CLEANFILES_SPLIT = $(libHSgconf_a_HSFILES:.hs=_split/)
 else
 libHSgconf_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1073,6 +1078,7 @@
 
 if ENABLE_SPLITOBJS
 libHSsourceview_a_AR = $(srcdir)/mk/link-splitobjs.sh
+sourceview_CLEANFILES_SPLIT = $(libHSsourceview_a_HSFILES:.hs=_split/)
 else
 libHSsourceview_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1186,6 +1192,7 @@
 
 if ENABLE_SPLITOBJS
 libHSmozembed_a_AR = $(srcdir)/mk/link-splitobjs.sh
+mozembed_CLEANFILES_SPLIT = $(libHSmozembed_a_HSFILES:.hs=_split/)
 else
 libHSmozembed_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1319,6 +1326,7 @@
 
 if ENABLE_SPLITOBJS
 libHScairo_a_AR = $(srcdir)/mk/link-splitobjs.sh
+cairo_CLEANFILES_SPLIT = $(libHScairo_a_HSFILES:.hs=_split/)
 else
 libHScairo_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1417,6 +1425,7 @@
 
 if ENABLE_SPLITOBJS
 libHSsvgcairo_a_AR = $(srcdir)/mk/link-splitobjs.sh
+svgcairo_CLEANFILES_SPLIT = $(libHSsvgcairo_a_HSFILES:.hs=_split/)
 else
 libHSsvgcairo_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1538,6 +1547,7 @@
 
 if ENABLE_SPLITOBJS
 libHSgtkglext_a_AR = $(srcdir)/mk/link-splitobjs.sh
+gtkglext_CLEANFILES_SPLIT = $(libHSgtkglext_a_HSFILES:.hs=_split/)
 else
 libHSgtkglext_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1612,6 +1622,7 @@
 
 soegtk_MOSTLYCLEANFILES  = $(am_libHSsoegtk_a_OBJECTS)
 soegtk_MOSTLYCLEANFILES += $(libHSsoegtk_a_HSFILES:.hs=.hi)
+soegtk_MOSTLYCLEANFILES += $(libHSsoegtk_a_BUILDSOURCES)
 
 ifeq (,$(findstring clean,$(MAKECMDGOALS)))
 -include soegtk/libHSsoegtk_a.deps
@@ -1619,6 +1630,7 @@
 
 if ENABLE_SPLITOBJS
 libHSsoegtk_a_AR = $(srcdir)/mk/link-splitobjs.sh
+soegtk_CLEANFILES_SPLIT = $(libHSsoegtk_a_HSFILES:.hs=_split/)
 else
 libHSsoegtk_a_AR = $(AR) $(ARFLAGS)
 endif
@@ -1968,18 +1980,29 @@
 	rm -f $(doc_MOSTLYCLEANFILES)
 
 clean: mostlyclean clean-am
-	rm -f $(c2hs_CLEANFILES)
-	rm -f $(glib_CLEANFILES)
-	rm -f $(gtk_CLEANFILES)
-	rm -f $(glade_CLEANFILES)
-	rm -f $(gconf_CLEANFILES)
-	rm -f $(sourceview_CLEANFILES)
-	rm -f $(mozembed_CLEANFILES)
-	rm -f $(cairo_CLEANFILES)
-	rm -f $(svgcairo_CLEANFILES)
-	rm -f $(gtkglext_CLEANFILES)
-	rm -f $(soegtk_CLEANFILES)
-	rm -f $(doc_CLEANFILES)
+	rm -f  $(c2hs_CLEANFILES)
+	rm -rf $(c2hs_CLEANFILES_SPLIT)
+	rm -f  $(glib_CLEANFILES)
+	rm -rf $(glib_CLEANFILES_SPLIT)
+	rm -f  $(gtk_CLEANFILES)
+	rm -rf $(gtk_CLEANFILES_SPLIT)
+	rm -f  $(glade_CLEANFILES)
+	rm -rf $(glade_CLEANFILES_SPLIT)
+	rm -f  $(gconf_CLEANFILES)
+	rm -rf $(gconf_CLEANFILES_SPLIT)
+	rm -f  $(sourceview_CLEANFILES)
+	rm -rf $(sourceview_CLEANFILES_SPLIT)
+	rm -f  $(mozembed_CLEANFILES)
+	rm -rf $(mozembed_CLEANFILES_SPLIT)
+	rm -f  $(cairo_CLEANFILES)
+	rm -rf $(cairo_CLEANFILES_SPLIT)
+	rm -f  $(svgcairo_CLEANFILES)
+	rm -rf $(svgcairo_CLEANFILES_SPLIT)
+	rm -f  $(gtkglext_CLEANFILES)
+	rm -rf $(gtkglext_CLEANFILES_SPLIT)
+	rm -f  $(soegtk_CLEANFILES)
+	rm -rf $(soegtk_CLEANFILES_SPLIT)
+	rm -f  $(doc_CLEANFILES)
 
 distclean: clean distclean-am
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
diff -rN -u old-gtk2hs-0.9.12/mk/common.mk new-gtk2hs-0.9.12/mk/common.mk
--- old-gtk2hs-0.9.12/mk/common.mk	2007-07-28 18:50:23.000000000 +0100
+++ new-gtk2hs-0.9.12/mk/common.mk	2007-07-28 18:50:23.000000000 +0100
@@ -59,10 +59,10 @@
 #Obviously the 'subdir-objects' option only works for C/C++ files.
 if ENABLE_SPLITOBJS
 %.o : %.hs $(CONFIG_HEADER)
-	rm -rf $@ $*_split/
-	mkdir -p $*_split
+	$(if $($(PKG)_NOSPLITOBJS),,rm -rf $@ $*_split/; mkdir -p $*_split)
 	$(strip $(HC) +RTS $(HSTOOLFLAGS) -RTS \
-	-c $< -o $@ -split-objs $(HCFLAGS) $($(PKG)_HCFLAGS) \
+	$(if $($(PKG)_NOSPLITOBJS),,-split-objs) \
+	-c $< -o $@ $(HCFLAGS) $($(PKG)_HCFLAGS) \
 	$(call getVar,$<,HCFLAGS) -i$(HS_SEARCH_PATH) \
 	$(HCFLAGS_PACKAGE_DEPS) $(HCFLAGS_PACKAGE_NAME) \
 	$(addprefix '-#include<,$(addsuffix >', $($(PKG)_HEADER))) \

Reply via email to