|
| 1 | +# git.mk |
| 2 | +# |
| 3 | +# Copyright 2009, Red Hat, Inc. |
| 4 | +# Written by Behdad Esfahbod |
| 5 | +# |
| 6 | +# Copying and distribution of this file, with or without modification, |
| 7 | +# are permitted in any medium without royalty provided the copyright |
| 8 | +# notice and this notice are preserved. |
| 9 | +# |
| 10 | +# The canonical source for this file is pango/git.mk, or whereever the |
| 11 | +# header of pango/git.mk suggests in the future. |
| 12 | +# |
| 13 | +# To use in your project, import this file in your git repo's toplevel, |
| 14 | +# then do "make -f git.mk". This modifies all Makefile.am files in |
| 15 | +# your project to include git.mk. |
| 16 | +# |
| 17 | +# This enables automatic .gitignore generation. If you need to ignore |
| 18 | +# more files, add them to the GITIGNOREFILES variable in your Makefile.am. |
| 19 | +# But think twice before doing that. If a file has to be in .gitignore, |
| 20 | +# chances are very high that it's a generated file and should be in one |
| 21 | +# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES. |
| 22 | +# |
| 23 | +# The only case that you need to manually add a file to GITIGNOREFILES is |
| 24 | +# when remove files in one of mostlyclean-local, clean-local, distclean-local, |
| 25 | +# or maintainer-clean-local. |
| 26 | +# |
| 27 | +# Note that for files like editor backup, etc, there are better places to |
| 28 | +# ignore them. See "man gitignore". |
| 29 | +# |
| 30 | +# If "make maintainer-clean" removes the files but they are not recognized |
| 31 | +# by this script (that is, if "git status" shows untracked files still), send |
| 32 | +# me the output of "git status" as well as your Makefile.am and Makefile for |
| 33 | +# the directories involved. |
| 34 | +# |
| 35 | +# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see |
| 36 | +# pango/Makefile.am. |
| 37 | +# |
| 38 | +# Don't EXTRA_DIST this file. It is supposed to only live in git clones, |
| 39 | +# not tarballs. It serves no useful purpose in tarballs and clutters the |
| 40 | +# build dir. |
| 41 | +# |
| 42 | +# This file knows how to handle autoconf, automake, libtool, gtk-doc, |
| 43 | +# gnome-doc-utils, mallard, intltool, gsettings. |
| 44 | +# |
| 45 | +# |
| 46 | +# KNOWN ISSUES: |
| 47 | +# |
| 48 | +# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the |
| 49 | +# submodule doesn't find us. If you have configure.{in,ac} files in |
| 50 | +# subdirs, add a proxy git.mk file in those dirs that simply does: |
| 51 | +# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste. |
| 52 | +# And add those files to git. See vte/gnome-pty-helper/git.mk for |
| 53 | +# example. |
| 54 | +# |
| 55 | +# ChangeLog |
| 56 | +# |
| 57 | +# - 2010-12-06 Add support for Mallard docs |
| 58 | +# - 2010-12-06 Start this change log |
| 59 | + |
| 60 | +git-all: git-mk-install |
| 61 | + |
| 62 | +git-mk-install: |
| 63 | + @echo Installing git makefile |
| 64 | + @any_failed=; find $(top_srcdir) -name Makefile.am | while read x; do \ |
| 65 | + if grep 'include .*/git.mk' $$x >/dev/null; then \ |
| 66 | + echo $$x already includes git.mk; \ |
| 67 | + else \ |
| 68 | + failed=; \ |
| 69 | + echo "Updating $$x"; \ |
| 70 | + { cat $$x; \ |
| 71 | + echo ''; \ |
| 72 | + echo '-include $$(top_srcdir)/git.mk'; \ |
| 73 | + } > $$x.tmp || failed=1; \ |
| 74 | + if test x$$failed = x; then \ |
| 75 | + mv $$x.tmp $$x || failed=1; \ |
| 76 | + fi; \ |
| 77 | + if test x$$failed = x; then : else \ |
| 78 | + echo Failed updating $$x; >&2 \ |
| 79 | + any_failed=1; \ |
| 80 | + fi; \ |
| 81 | + fi; done; test -z "$$any_failed" |
| 82 | + |
| 83 | +.PHONY: git-all git-mk-install |
| 84 | + |
| 85 | + |
| 86 | +### .gitignore generation |
| 87 | + |
| 88 | +$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk |
| 89 | + $(AM_V_GEN) \ |
| 90 | + { \ |
| 91 | + if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \ |
| 92 | + for x in \ |
| 93 | + $(DOC_MODULE)-decl-list.txt \ |
| 94 | + $(DOC_MODULE)-decl.txt \ |
| 95 | + tmpl/$(DOC_MODULE)-unused.sgml \ |
| 96 | + "tmpl/*.bak" \ |
| 97 | + xml html \ |
| 98 | + ; do echo /$$x; done; \ |
| 99 | + fi; \ |
| 100 | + if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \ |
| 101 | + for x in \ |
| 102 | + $(_DOC_C_DOCS) \ |
| 103 | + $(_DOC_LC_DOCS) \ |
| 104 | + $(_DOC_OMF_ALL) \ |
| 105 | + $(_DOC_DSK_ALL) \ |
| 106 | + $(_DOC_HTML_ALL) \ |
| 107 | + $(_DOC_MOFILES) \ |
| 108 | + $(_DOC_POFILES) \ |
| 109 | + $(DOC_H_FILE) \ |
| 110 | + "*/.xml2po.mo" \ |
| 111 | + "*/*.omf.out" \ |
| 112 | + ; do echo /$$x; done; \ |
| 113 | + fi; \ |
| 114 | + if test "x$(gsettings_SCHEMAS)" = x; then :; else \ |
| 115 | + for x in \ |
| 116 | + $(gsettings_SCHEMAS:.xml=.valid) \ |
| 117 | + $(gsettings__enum_file) \ |
| 118 | + ; do echo /$$x; done; \ |
| 119 | + fi; \ |
| 120 | + if test -f $(srcdir)/po/Makefile.in.in; then \ |
| 121 | + for x in \ |
| 122 | + po/Makefile.in.in \ |
| 123 | + po/Makefile.in \ |
| 124 | + po/Makefile \ |
| 125 | + po/POTFILES \ |
| 126 | + po/stamp-it \ |
| 127 | + po/.intltool-merge-cache \ |
| 128 | + "po/*.gmo" \ |
| 129 | + "po/*.mo" \ |
| 130 | + po/$(GETTEXT_PACKAGE).pot \ |
| 131 | + intltool-extract.in \ |
| 132 | + intltool-merge.in \ |
| 133 | + intltool-update.in \ |
| 134 | + ; do echo /$$x; done; \ |
| 135 | + fi; \ |
| 136 | + if test -f $(srcdir)/configure; then \ |
| 137 | + for x in \ |
| 138 | + autom4te.cache \ |
| 139 | + configure \ |
| 140 | + config.h \ |
| 141 | + stamp-h1 \ |
| 142 | + libtool \ |
| 143 | + config.lt \ |
| 144 | + ; do echo /$$x; done; \ |
| 145 | + fi; \ |
| 146 | + for x in \ |
| 147 | + .gitignore \ |
| 148 | + $(GITIGNOREFILES) \ |
| 149 | + $(CLEANFILES) \ |
| 150 | + $(PROGRAMS) \ |
| 151 | + $(check_PROGRAMS) \ |
| 152 | + $(EXTRA_PROGRAMS) \ |
| 153 | + $(LTLIBRARIES) \ |
| 154 | + so_locations \ |
| 155 | + .libs _libs \ |
| 156 | + $(MOSTLYCLEANFILES) \ |
| 157 | + "*.$(OBJEXT)" \ |
| 158 | + "*.lo" \ |
| 159 | + $(DISTCLEANFILES) \ |
| 160 | + $(am__CONFIG_DISTCLEAN_FILES) \ |
| 161 | + $(CONFIG_CLEAN_FILES) \ |
| 162 | + TAGS ID GTAGS GRTAGS GSYMS GPATH tags \ |
| 163 | + "*.tab.c" \ |
| 164 | + $(MAINTAINERCLEANFILES) \ |
| 165 | + $(BUILT_SOURCES) \ |
| 166 | + $(DEPDIR) \ |
| 167 | + Makefile \ |
| 168 | + Makefile.in \ |
| 169 | + "*.orig" \ |
| 170 | + "*.rej" \ |
| 171 | + "*.bak" \ |
| 172 | + "*~" \ |
| 173 | + ".*.sw[nop]" \ |
| 174 | + ".dirstamp" \ |
| 175 | + ; do echo /$$x; done; \ |
| 176 | + } | \ |
| 177 | + sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \ |
| 178 | + sed 's@/[.]/@/@g' | \ |
| 179 | + LC_ALL=C sort | uniq > $@.tmp && \ |
| 180 | + mv $@.tmp $@; |
| 181 | + |
| 182 | +all: $(srcdir)/.gitignore gitignore-recurse-maybe |
| 183 | +gitignore-recurse-maybe: |
| 184 | + @if test "x$(SUBDIRS)" = "x$(DIST_SUBDIRS)"; then :; else \ |
| 185 | + $(MAKE) $(AM_MAKEFLAGS) gitignore-recurse; \ |
| 186 | + fi; |
| 187 | +gitignore-recurse: |
| 188 | + @for subdir in $(DIST_SUBDIRS); do \ |
| 189 | + case " $(SUBDIRS) " in \ |
| 190 | + *" $$subdir "*) :;; \ |
| 191 | + *) test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse || echo "Skipping $$subdir");; \ |
| 192 | + esac; \ |
| 193 | + done |
| 194 | +gitignore: $(srcdir)/.gitignore gitignore-recurse |
| 195 | + |
| 196 | +maintainer-clean: gitignore-clean |
| 197 | +gitignore-clean: |
| 198 | + -rm -f $(srcdir)/.gitignore |
| 199 | + |
| 200 | +.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe |
0 commit comments