OCAMLMKLIB = ocamlmklib
 DLL = dll$(ARCHIVE).so
 
+BUILT_SOURCES = gdome_xslt.c
+
 CLEANFILES = \
   $(ARCHIVE).cma $(ARCHIVE).cmxa $(ARCHIVE).a lib$(ARCHIVE).a $(DLL)   \
   *.cmo *.cmx *.cmi
 endif
 
 noinst_LTLIBRARIES = libmlgdome2-xslt.la
-C_SRC = ml_gdome_xslt.c
+C_SRC = ml_gdome_xslt.c gdome_xslt.c
 libmlgdome2_xslt_la_SOURCES = $(C_SRC)
 
-O_S = $(C_SRC:%.c=%.o) $(top_builddir)/C/gdome_xslt/gdome_xslt.o
+O_S = $(C_SRC:%.c=%.o)
 LO_S = $(O_S:%.o=%.lo)
 CMA_DEPS = i_gdome_xslt.cmo gdome_xslt.cmo
 CMXA_DEPS = $(CMA_DEPS:%.cmo=%.cmx)
 SHARED_LIBS = $(LIBXSLT_LIBS) $(GDOME_LIBS) -lmlgdome
 
+gdome_xslt.c: $(top_srcdir)/C/gdome_xslt/gdome_xslt.c
+       cp $< $@
+
 $(ARCHIVE).cma: $(CMA_DEPS)
        $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(CMA_DEPS) $(SHARED_LIBS)
 
 #
 $(DLL) lib$(ARCHIVE).a: $(O_S)
        $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(O_S)  $(SHARED_LIBS)
-       for f in $(O_S); do     \
-               rm $$f; \
-       done
 
 INCLUDES = $(GDOME_CFLAGS) $(MLGDOME_CFLAGS) -I/usr/include/caml -I$(top_srcdir)/C/gdome_xslt