DISTCLEANFILES =
CLEANFILES =
+# Distribution should be buildable without working gob.
+AM_DISTCHECK_CONFIGURE_FLAGS = GOB2=false
+
EXTRA_DIST = $(MAINTAINERCLEANFILES) m4/gnulib-cache.m4
AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src \
engine_GOBS = src/engine/palette.gob src/engine/texture.gob \
src/engine/music.gob src/engine/sound.gob src/engine/mesh.gob
+EXTRA_DIST += $(engine_GOBS)
MAINTAINERCLEANFILES += $(engine_GOBS:.gob=.gobstamp) \
$(engine_GOBS:.gob=.c) $(engine_GOBS:.gob=.h)
$(GOB_V) od='$(@D)'; case $$od in \
src/*) od=src ;; \
*/src/*) od=$${od%/src/*}/src ;; \
- esac; $(GOB2) -o "$$od" --file-sep=/ --no-private-header $<
+ esac; $(GOB2) -o "$$od" --file-sep=/ \
+ --no-private-header --no-touch-headers $<
$(AM_V_at) mv -f $@.tmp $@
else
if HAVE_GOB2
.gobstamp.c: ; $(STAMP_RECOVER)
.gobstamp.h: ; $(STAMP_RECOVER)
+# The gob rules refrain from updating unchanged headers for the convenience of
+# developers, but the headers should be distributed with up-to-date timestamps.
+dist-hook: update-headers
+update-headers: unfuck-distdir
+ for f in $(engine_GOBS:.gob=.h); do \
+ touch -c '$(distdir)'/"$$f" || exit; \
+ done
+.PHONY: update-headers
+
+# When running "make dist" in a VPATH build with a read-only srcdir, Automake
+# will produce a distribution with all files read-only. Moreover, the files
+# are read-only in distdir when the dist hooks are run. This hook will
+# manually fix up the permissions. All dist hooks that modify files in
+# distdir should list unfuck-distdir as a prerequisite.
+dist-hook: unfuck-distdir
+unfuck-distdir:
+ find '$(distdir)' -type f -exec chmod u+w {} +
+.PHONY: unfuck-distdir
+
include $(top_srcdir)/lib/gnulib.mk
include $(top_srcdir)/libltdl/ltdl.mk