summaryrefslogtreecommitdiffstats
path: root/Makefile.am
blob: 50812dfa65c809114de0886e523bde778997a7bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Process this file with automake to produce an input makefile.
#
# Copyright (C) 2013, 2014  Patrick "P. J." McDermott
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

SUFFIXES = .sh

sbin_PROGRAMS = firman

firman_SOURCES =
# Hack to work around Automake's lack of support for linking programs in other
# languages.
# Even uglier to support out-of-tree builds with VPATH.
firman_DEPENDENCIES = config.sh $(firman_SOURCES)
firman_LINK = \
	set -e; \
	vpath='$(VPATH)'; \
	sources=''; \
	for f in $(firman_SOURCES); do \
		f="$${vpath}$${vpath:+/}$${f}"; \
		sources="$${sources} $${f}"; \
		$(SH) -n "$${f}"; \
	done; \
	'$(srcdir)/tools/shld.sh' -I '$(SH)' -o $@ config.sh $${sources}

EXTRA_DIST = \
	autogen.sh \
	tools/shld.sh \
	tools/shmin.sh

todo_script = \
	/^[0-9]* .[ \t]*\#[ \t]*TODO/,/^[0-9]* \.[ \t]*[^ \t\#]/{ \
		/^[0-9]* \.[ \t]*\#/p; \
	}; \
	/^[0-9]* .[ \t]*\#[ \t]*FIXME/,/^[0-9]* \.[ \t]*[^ \t\#]/{ \
		/^[0-9]* \.[ \t]*\#/p; \
	}; \
	/^[0-9]* .[ \t]*\#[ \t]*XXX/,/^[0-9]* \.[ \t]*[^ \t\#]/{ \
		/^[0-9]* \.[ \t]*\#/p; \
	};
todo:
	@set -e; \
	printf '\n'; \
	printf 'Code comments:\n'; \
	printf '==============\n\n'; \
	for f in $(firman_SOURCES); do \
		printed=false; \
		sed '=' "$(top_srcdir)/$${f}" | sed 'N; s/\n/ ./' | sed -n \
			'$(todo_script)' | while read -r lineno line; do \
			if ! $${printed}; then \
				printf '%s:\n' "$${f}"; \
				printed=true; \
			fi; \
			printf ' %6d %s\n' $${lineno} "$${line#.}"; \
		done; \
	done; \
	printf '\n'; \
	if [ -f '$(top_srcdir)/TODO' ]; then \
		printf 'TODO file:\n'; \
		printf '==========\n\n'; \
		cat '$(top_srcdir)/TODO'; \
		printf '\n'; \
	fi

really-clean: distclean
	rm -Rf $(srcdir)/aclocal.m4 $(srcdir)/autom4te.cache/ \
		$(srcdir)/configure \
		$(srcdir)/build-aux/ $(srcdir)/INSTALL $(srcdir)/Makefile.in \
		$(srcdir)/ChangeLog

dist-hook:
	if [ -d '$(srcdir)/.git' ]; then \
		printf 'Generated file.  Do not edit.\n\n' \
			>'$(distdir)/ChangeLog~'; \
		GIT_DIR='$(srcdir)/.git' git log --stat --color=never \
			>>'$(distdir)/ChangeLog~'; \
		mv '$(distdir)/ChangeLog~' '$(distdir)/ChangeLog'; \
	fi

release:
	sed "s/^Released: ????-??-??\$$/Released: $$(date '+%Y-%m-%d')/" \
		'$(srcdir)/NEWS' >'$(srcdir)/NEWS~'
	mv '$(srcdir)/NEWS~' '$(srcdir)/NEWS'
	$(MAKE) distcheck
	set -e; \
	export GIT_DIR='$(srcdir)/.git'; \
	export GIT_WORK_TREE='$(srcdir)'; \
	git commit -m 'NEWS: Release $(PACKAGE) $(VERSION)' -- NEWS; \
	git tag '$(PACKAGE)/$(VERSION)' HEAD; \
	git push --tags origin master:master
	md5sum $(DIST_ARCHIVES) >MD5SUMS
	sha256sum $(DIST_ARCHIVES) >SHA256SUMS
	ssh files@files.pehjota.net mkdir -p files/pub/$(PACKAGE)
	rsync -az --progress --stats $(DIST_ARCHIVES) MD5SUMS SHA256SUMS \
		files@files.pehjota.net:files/pub/$(PACKAGE)/$(VERSION)/

include $(top_srcdir)/src/local.mk