Makefile: dist: include a ChangeLog
[ng-jackspa.git] / Makefile
blobdd50650abe92df4da30721a0720a3126173e53ad
1 # GNU Makefile for ng-jackspa
2 # Copyright © 2012,2013 Géraud Meyer <graud@gmx.com>
4 # This file is part of ng-jackspa.
6 # ng-jackspa is free software; you can redistribute it and/or modify it under
7 # the terms of the GNU General Public License version 2 as published by the
8 # Free Software Foundation.
10 # This package is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 # more details.
15 # You should have received a copy of the GNU General Public License along
16 # with ng-jackspa. If not, see <http://www.gnu.org/licenses/>.
18 prefix ?= $(HOME)/.local
19 bindir ?= $(prefix)/bin
20 datarootdir ?= $(prefix)/share
21 sysconfdir ?= $(prefix)/etc
22 docdir ?= $(datarootdir)/doc/$(PACKAGE_TARNAME)
23 mandir ?= $(datarootdir)/man
24 # DESTDIR = # distributors set this on the command line
26 PACKAGE_NAME ?= ng-jackspa
27 PACKAGE_TARNAME ?= ngjackspa
29 RM ?= rm
30 CP ?= cp
31 LN ?= ln
32 MKDIR ?= mkdir
33 INSTALL ?= install
34 SED ?= sed
35 TAR ?= tar
36 TAR_FLAGS = --owner root --group root --mode a+rX,o-w --mtime .
37 MAKE ?= make
38 QMAKE = qmake
39 ASCIIDOC ?= asciidoc
40 ASCIIDOC_FLAGS = -apackagename="$(PACKAGE_NAME)" -aversion="$(VERSION)"
41 XMLTO ?= xmlto
42 MD5SUM ?= md5sum
43 SHA512SUM ?= sha512sum
45 # Get the version via git or from the VERSION file or from the project
46 # directory name.
47 VERSION = $(shell test -x version.sh && ./version.sh $(PACKAGE_TARNAME) \
48 || echo "unknown_version")
49 # Allow either to be overwritten by setting DIST_VERSION on the command line.
50 ifdef DIST_VERSION
51 VERSION = $(DIST_VERSION)
52 endif
53 PACKAGE_VERSION = $(VERSION)
54 # Remove the _g<SHA1> part from the $VERSION
55 RPM_VERSION = $(shell echo $(VERSION) | $(SED) -e 's/_g[0-9a-z]\+//')
57 CFLAGS ?= -Wall -Werror -g
58 CXXFLAGS ?= $(CFLAGS)
59 override CFLAGS += -DG_DISABLE_DEPRECATED `pkg-config --cflags glib-2.0`
60 override CXXFLAGS += -DG_DISABLE_DEPRECATED `pkg-config --cflags glib-2.0`
61 override LDFLAGS += -lm -ljack -ldl `pkg-config --libs glib-2.0` -g
63 PROGS = njackspa gjackspa qjackspa jackspa-cli
64 SCRIPTS =
65 MODULES = jackspa.o control.o
66 OBJECTS = $(MODULES) $(PROGS:%=%.o)
67 COMMONS = interface.c
68 TESTS =
69 QMAKE_PRO = qjackspa.pro
70 QMAKE_MAKEFILE = Makefile.qmake
71 MANDOC = ng-jackspa.1
72 MANLINKS = njackspa.1 gjackspa.1 qjackspa.1 jackspa-cli.1
73 MANTARGET = ng-jackspa.1
74 HTMLDOC = README.html ng-jackspa.1.html
75 RELEASEDOC = $(MANDOC) $(HTMLDOC)
77 TARNAME = $(PACKAGE_TARNAME)-$(RPM_VERSION)
79 all : build
80 .PHONY : all .help help build doc clean distclean dist install install-doc \
81 force
82 .help :
83 @echo "Available targets for $(PACKAGE_NAME) Makefile:"
84 @echo " .help all build clean doc distclean ChangeLog dist"
85 @echo " install install-doc"
86 @echo "Useful variables for $(PACKAGE_NAME) Makefile:"
87 @echo " CFLAGS CXXFLAGS CPPFLAGS LDFLAGS prefix DESTDIR MAKE"
88 help : .help
90 build : $(PROGS) $(TESTS)
91 doc : $(MANDOC) $(HTMLDOC)
93 clean :
94 -$(MAKE) -f $(QMAKE_MAKEFILE) clean mocclean
95 $(RM) $(PROGS) $(OBJECTS) $(QMAKE_MAKEFILE)
96 distclean : clean
97 $(RM) $(MANDOC) $(HTMLDOC)
98 $(RM) -r $(TARNAME)
99 $(RM) $(PACKAGE_TARNAME)-*.tar $(PACKAGE_TARNAME)-*.tar.gz \
100 $(PACKAGE_TARNAME)-*.tar.gz.md5 $(PACKAGE_TARNAME)-*.tar.gz.sha512 \
101 $(PACKAGE_TARNAME)-*.tar.gz.sig $(PACKAGE_TARNAME)-*.tar.gz.asc
102 maintainer-clean: distclean
103 test ! -d .git && test ! -f .git || { $(RM) VERSION; $(RM) ChangeLog; }
105 install : build
106 $(MKDIR) -p $(DESTDIR)$(bindir)
107 set -e; for prog in $(PROGS) $(SCRIPTS); do \
108 $(INSTALL) -p -m 0755 "$$prog" "$(DESTDIR)$(bindir)/"; \
109 done
110 install-doc : doc
111 $(MKDIR) -p $(DESTDIR)$(mandir)/man1
112 set -e; for doc in $(MANDOC); do \
113 gzip -9 <"$$doc" >"$$doc".gz; \
114 $(INSTALL) -p -m 0644 "$$doc".gz "$(DESTDIR)$(mandir)/man1/"; \
115 $(RM) "$$doc".gz; \
116 done
117 set -e; for doc in $(MANLINKS); do \
118 $(LN) -s -f "$(MANTARGET)".gz "$(DESTDIR)$(mandir)/man1/$$doc".gz; \
119 done
120 $(MKDIR) -p $(DESTDIR)$(docdir)
121 set -e; for doc in $(HTMLDOC); do \
122 $(INSTALL) -p -m 0644 "$$doc" "$(DESTDIR)$(docdir)/"; \
123 done
125 $(TARNAME).tar : ChangeLog
126 $(MKDIR) -p $(TARNAME)
127 echo $(VERSION) > $(TARNAME)/VERSION
128 $(CP) -p ChangeLog $(TARNAME)
129 git archive --format=tar --prefix=$(TARNAME)/ HEAD > $(TARNAME).tar
130 $(TAR) $(TAR_FLAGS) -rf $(TARNAME).tar $(TARNAME)
131 $(RM) -r $(TARNAME)
132 dist : $(TARNAME).tar.gz
133 nodocdist :
134 $(MAKE) $(TARNAME).tar.gz NODOCDIST=yes
135 $(TARNAME).tar.gz :
136 set -e; \
137 if test -f ../$(TARNAME).tar.gz; then \
138 echo NOTE: re-using already existing ../$(TARNAME).tar.gz; \
139 $(CP) ../$(TARNAME).tar.gz .; \
140 else \
141 if test -d .git || test -f .git; then \
142 $(MAKE) $(TARNAME).tar; \
143 else \
144 echo WARNING: re-building the distribution archive in ../$(TARNAME).tar; \
145 sleep 3; \
146 $(MAKE) distclean; \
147 ( cd .. && $(TAR) $(TAR_FLAGS) --mtime $(TARNAME) -cvf $(TARNAME).tar $(TARNAME) \
148 && $(MV) $(TARNAME).tar $(TARNAME)/ ); \
149 fi; \
150 if test x$(NODOCDIST) = x; then \
151 $(MAKE) $(RELEASEDOC); \
152 $(MKDIR) $(TARNAME); \
153 $(CP) -p -P $(RELEASEDOC) $(TARNAME); \
154 $(TAR) $(TAR_FLAGS) -rf $(TARNAME).tar $(TARNAME); \
155 $(RM) -r $(TARNAME); \
156 fi; \
157 gzip -f -9 $(TARNAME).tar; \
159 $(MD5SUM) $(TARNAME).tar.gz > $(TARNAME).tar.gz.md5
160 $(SHA512SUM) $(TARNAME).tar.gz > $(TARNAME).tar.gz.sha512
162 ChangeLog :
163 ( echo "# $@ for $(PACKAGE_NAME) - automatically generated from the VCS's history"; \
164 echo; \
165 ./gitchangelog.sh --tags --tag-pattern 'version\/[^\n]*' \
166 -- - --date-order ) \
167 | $(SED) 's/^\[version/\f\[version/' \
168 > $@
170 njackspa : njackspa.c curses.c $(COMMONS) $(MODULES)
171 $(CC) $(CFLAGS) -o $@ $< $(MODULES) $(LDFLAGS) -lncurses
172 gjackspa : gjackspa.cpp $(COMMONS) $(MODULES)
173 $(CXX) $(CXXFLAGS) `pkg-config gtkmm-2.4 --cflags` -DGTK_DISABLE_DEPRECATED \
174 -o $@ $< $(MODULES) $(LDFLAGS) `pkg-config gtkmm-2.4 --libs`
175 qjackspa : force $(QMAKE_MAKEFILE)
176 $(MAKE) -f $(QMAKE_MAKEFILE)
177 jackspa-cli : jackspa-cli.c $(COMMONS) $(MODULES)
178 $(CC) -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED $(CFLAGS) \
179 -o $@ $< $(MODULES) $(LDFLAGS)
181 jackspa.o : ladspa.c
183 $(QMAKE_MAKEFILE) : $(QMAKE_PRO)
184 $(QMAKE) -o $@
186 README.html : README asciidoc.conf
187 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b xhtml11 -d article -a readme $<
188 %.html : %.txt asciidoc.conf
189 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b xhtml11 -d manpage $<
190 %.xml : %.txt asciidoc.conf
191 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b docbook -d manpage $<
192 % : %.xml
193 $(XMLTO) man $<
195 force :