| 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, intltool. |
| 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 |
|
| 56 |
git-all: git-mk-install |
| 57 |
|
| 58 |
git-mk-install: |
| 59 |
@echo Installing git makefile |
| 60 |
@any_failed=; find $(top_srcdir) -name Makefile.am | while read x; do \ |
| 61 |
if grep 'include .*/git.mk' $$x >/dev/null; then \ |
| 62 |
echo $$x already includes git.mk; \ |
| 63 |
else \ |
| 64 |
failed=; \ |
| 65 |
echo "Updating $$x"; \ |
| 66 |
{ cat $$x; \ |
| 67 |
echo ''; \ |
| 68 |
echo '-include $$(top_srcdir)/git.mk'; \ |
| 69 |
} > $$x.tmp || failed=1; \ |
| 70 |
if test x$$failed = x; then \ |
| 71 |
mv $$x.tmp $$x || failed=1; \ |
| 72 |
fi; \ |
| 73 |
if test x$$failed = x; then : else \ |
| 74 |
echo Failed updating $$x; >&2 \ |
| 75 |
any_failed=1; \ |
| 76 |
fi; \ |
| 77 |
fi; done; test -z "$$any_failed" |
| 78 |
|
| 79 |
.PHONY: git-all git-mk-install |
| 80 |
|
| 81 |
|
| 82 |
### .gitignore generation |
| 83 |
|
| 84 |
$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk |
| 85 |
@echo Generating $@; \ |
| 86 |
{ \ |
| 87 |
if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \ |
| 88 |
for x in \ |
| 89 |
$(DOC_MODULE)-decl-list.txt \ |
| 90 |
$(DOC_MODULE)-decl.txt \ |
| 91 |
tmpl/$(DOC_MODULE)-unused.sgml \ |
| 92 |
"tmpl/*.bak" \ |
| 93 |
xml html \ |
| 94 |
; do echo /$$x; done; \ |
| 95 |
fi; \ |
| 96 |
if test "x$(DOC_MODULE)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \ |
| 97 |
for x in \ |
| 98 |
$(_DOC_C_DOCS) \ |
| 99 |
$(_DOC_LC_DOCS) \ |
| 100 |
$(_DOC_OMF_ALL) \ |
| 101 |
$(_DOC_DSK_ALL) \ |
| 102 |
$(_DOC_HTML_ALL) \ |
| 103 |
$(_DOC_POFILES) \ |
| 104 |
"*/.xml2po.mo" \ |
| 105 |
"*/*.omf.out" \ |
| 106 |
; do echo /$$x; done; \ |
| 107 |
fi; \ |
| 108 |
if test -f $(srcdir)/po/Makefile.in.in; then \ |
| 109 |
for x in \ |
| 110 |
po/Makefile.in.in \ |
| 111 |
po/Makefile.in \ |
| 112 |
po/Makefile \ |
| 113 |
po/POTFILES \ |
| 114 |
po/stamp-it \ |
| 115 |
po/.intltool-merge-cache \ |
| 116 |
"po/*.gmo" \ |
| 117 |
"po/*.mo" \ |
| 118 |
intltool-extract.in \ |
| 119 |
intltool-merge.in \ |
| 120 |
intltool-update.in \ |
| 121 |
; do echo /$$x; done; \ |
| 122 |
fi; \ |
| 123 |
if test -f $(srcdir)/configure; then \ |
| 124 |
for x in \ |
| 125 |
autom4te.cache \ |
| 126 |
configure \ |
| 127 |
config.h \ |
| 128 |
stamp-h1 \ |
| 129 |
libtool \ |
| 130 |
config.lt \ |
| 131 |
; do echo /$$x; done; \ |
| 132 |
fi; \ |
| 133 |
for x in \ |
| 134 |
.gitignore \ |
| 135 |
$(GITIGNOREFILES) \ |
| 136 |
$(CLEANFILES) \ |
| 137 |
$(PROGRAMS) \ |
| 138 |
$(EXTRA_PROGRAMS) \ |
| 139 |
$(LTLIBRARIES) \ |
| 140 |
so_locations \ |
| 141 |
.libs _libs \ |
| 142 |
$(MOSTLYCLEANFILES) \ |
| 143 |
"*.$(OBJEXT)" \ |
| 144 |
"*.lo" \ |
| 145 |
$(DISTCLEANFILES) \ |
| 146 |
$(am__CONFIG_DISTCLEAN_FILES) \ |
| 147 |
$(CONFIG_CLEAN_FILES) \ |
| 148 |
TAGS ID GTAGS GRTAGS GSYMS GPATH tags \ |
| 149 |
"*.tab.c" \ |
| 150 |
$(MAINTAINERCLEANFILES) \ |
| 151 |
$(BUILT_SOURCES) \ |
| 152 |
$(DEPDIR) \ |
| 153 |
Makefile \ |
| 154 |
Makefile.in \ |
| 155 |
"*.orig" \ |
| 156 |
"*.rej" \ |
| 157 |
"*.bak" \ |
| 158 |
"*~" \ |
| 159 |
".*.sw[nop]" \ |
| 160 |
; do echo /$$x; done; \ |
| 161 |
} | \ |
| 162 |
sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \ |
| 163 |
sed 's@/[.]/@/@g' | \ |
| 164 |
LANG=C sort | uniq > $@.tmp && \ |
| 165 |
mv $@.tmp $@; |
| 166 |
|
| 167 |
all: $(srcdir)/.gitignore gitignore-recurse-maybe |
| 168 |
gitignore-recurse-maybe: |
| 169 |
@if test "x$(SUBDIRS)" = "x$(DIST_SUBDIRS)"; then :; else \ |
| 170 |
$(MAKE) $(AM_MAKEFLAGS) gitignore-recurse; \ |
| 171 |
fi; |
| 172 |
gitignore-recurse: |
| 173 |
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ |
| 174 |
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse); \ |
| 175 |
done |
| 176 |
gitignore: $(srcdir)/.gitignore gitignore-recurse |
| 177 |
|
| 178 |
maintainer-clean: gitignore-clean |
| 179 |
gitignore-clean: |
| 180 |
-rm -f $(srcdir)/.gitignore |
| 181 |
|
| 182 |
.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe |