From 43e7787c1497fec5addc5db5bf5c29ed2191cf74 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 17 Apr 2009 21:11:37 -0400 Subject: [git.mk] Document more --- git.mk | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 87 insertions(+), 20 deletions(-) diff --git a/git.mk b/git.mk index e6606bc5..767d7d66 100644 --- a/git.mk +++ b/git.mk @@ -3,15 +3,48 @@ # Copyright 2009 Red Hat, Inc. # Written by Behdad Esfahbod # +# The canonical source for this file is pango/git.mk, or whereever the +# header of pango/git.mk suggests in the future. +# # To use in your project, import this file in your git repo's toplevel, # then do "make -f git.mk". This modifies all Makefile.am files in # your project to include git.mk. # # This enables automatic .gitignore generation. If you need to ignore # more files, add them to the GITIGNOREFILES variable in your Makefile.am. +# But think twice before doing that. If a file has to be in .gitignore, +# chances are very high that it's a generated file and should be in one +# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES. +# +# The only case that you need to manually add a file to GITIGNOREFILES is +# when remove files in one of mostlyclean-local, clean-local, distclean-local, +# or maintainer-clean-local. +# # Note that for files like editor backup, etc, there are better places to # ignore them. See "man gitignore". # +# If "make maintainer-clean" removes the files but they are not recognized +# by this script (that is, if "git stat" shows untracked files still), send +# me the output of "git stat" as well as your Makefile.am and Makefile for +# the directories involved. +# +# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see +# pango/Makefile.am. +# +# Don't EXTRA_DIST this file. It is supposed to only live in git clones, +# not tarballs. It serves no useful purpose in tarballs and clutters the +# build dir. +# +# +# KNOWN ISSUES: +# +# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the +# submodule doesn't find us. If you have configure.{in,ac} files in +# subdirs, add a proxy git.mk file in those dirs that simply does: +# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste. +# And add those files to git. See vte/gnome-pty-helper/git.mk for +# example. +# git-all: git-mk-install @@ -34,21 +67,53 @@ git-mk-install: echo Failed updating $$x; >&2 \ any_failed=1; \ fi; \ - fi; done; test x$$any_failed = x + fi; done; test -z "$$any_failed" + +.PHONY: git-all git-mk-install ### .gitignore generation .gitignore: Makefile.am $(top_srcdir)/git.mk - @echo Generating $@ - @GTKDOCIGNOREFILES=; test "x$(DOC_MODULE)" = x || \ - GTKDOCIGNOREFILES=" \ - $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt \ - tmpl/$(DOC_MODULE)-unused.sgml tmpl/*.bak \ - xml html"; \ - for x in .gitignore \ + @echo Generating $@; \ + GTKDOCGITIGNOREFILES=; test "x$(DOC_MODULE)" = x || \ + GTKDOCGITIGNOREFILES=" \ + $(DOC_MODULE)-decl-list.txt \ + $(DOC_MODULE)-decl.txt \ + tmpl/$(DOC_MODULE)-unused.sgml \ + tmpl/*.bak \ + xml html \ + "; \ + INTLTOOLGITIGNOREFILES=; test -f $(srcdir)/po/Makefile.in.in && \ + INTLTOOLGITIGNOREFILES=" \ + po/Makefile.in.in \ + po/Makefile.in \ + po/Makefile \ + po/*.gmo \ + po/*.mo \ + po/POTFILES \ + po/stamp-it \ + intltool-extract.in \ + intltool-merge.in \ + intltool-update.in \ + "; \ + AUTOCONFGITIGNOREFILES=; test -f $(srcdir)/configure && \ + AUTOCONFGITIGNOREFILES=" \ + autom4te.cache \ + configure \ + config.h \ + stamp-h1 \ + libtool \ + config.lt \ + gtk-doc.make \ + git.mk \ + "; \ + for x in \ + .gitignore \ + $$GTKDOCGITIGNOREFILES \ + $$INTLTOOLGITIGNOREFILES \ + $$AUTOCONFGITIGNOREFILES \ $(GITIGNOREFILES) \ - $$GTKDOCIGNOREFILES \ $(CLEANFILES) \ $(PROGRAMS) \ $(EXTRA_PROGRAMS) \ @@ -63,28 +128,30 @@ git-mk-install: $(CONFIG_CLEAN_FILES) \ TAGS ID GTAGS GRTAGS GSYMS GPATH tags \ "*.tab.c" \ - $(top_builddir)/config.h $(top_builddir)/stamp-h1 \ - $(top_builddir)/libtool $(top_builddir)/config.lt \ $(MAINTAINERCLEANFILES) \ $(BUILT_SOURCES) \ $(DEPDIR) \ - $(top_srcdir)/autom4te.cache \ Makefile \ Makefile.in \ - $(top_srcdir)/configure \ - $(top_srcdir)/gtk-doc.make \ - $(top_srcdir)/git.mk \ - "*.orig" "*.rej" "*.bak" "*~" \ + "*.orig" \ + "*.rej" \ + "*.bak" \ + "*~" \ ; do echo /$$x; done | \ grep -v '/[.][.]/' | \ sed 's@/[.]/@/@g' | \ LANG=C sort | uniq > $@.tmp && \ - mv $@.tmp $@ + mv $@.tmp $@; -Makefile.in: $(top_srcdir)/git.mk -all: .gitignore +all: .gitignore gitignore-recurse +gitignore-recurse: + @if test "x$(SUBDIRS)" = "x$(DIST_SUBDIRS)"; then :; else \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore); \ + done; \ + fi; maintainer-clean-local: gitignore-clean gitignore-clean: rm -f .gitignore -.PHONY: gitignore-clean +.PHONY: gitignore-clean gitignore-recurse -- cgit v1.2.1