Makefile: install-doc: install manpage links for each command
[ng-jackspa.git] / Makefile
blob3b2abb27d4c9988f8740d170446ee617cf94f8af
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 # Get the version via git or from the VERSION file or from the project
30 # directory name.
31 VERSION = $(shell test -x version.sh && ./version.sh $(PACKAGE_TARNAME) \
32 || echo "unknown_version")
33 # Allow either to be overwritten by setting DIST_VERSION on the command line.
34 ifdef DIST_VERSION
35 VERSION = $(DIST_VERSION)
36 endif
37 PACKAGE_VERSION = $(VERSION)
39 RM ?= rm
40 LN ?= ln
41 MKDIR ?= mkdir
42 INSTALL ?= install
43 MAKE ?= make
44 QMAKE = qmake
45 ASCIIDOC ?= asciidoc
46 ASCIIDOC_FLAGS = -apackagename="$(PACKAGE_NAME)" -aversion="$(VERSION)"
47 XMLTO ?= xmlto
49 CFLAGS ?= -Wall -Werror -g
50 CXXFLAGS ?= $(CFLAGS)
51 override CFLAGS += -DG_DISABLE_DEPRECATED `pkg-config --cflags glib-2.0`
52 override CXXFLAGS += -DG_DISABLE_DEPRECATED `pkg-config --cflags glib-2.0`
53 override LDFLAGS += -lm -ljack -ldl `pkg-config --libs glib-2.0` -g
55 PROGS = njackspa gjackspa qjackspa jackspa-cli
56 SCRIPTS =
57 MODULES = jackspa.o control.o
58 OBJECTS = $(MODULES) $(PROGS:%=%.o)
59 COMMONS = interface.c
60 TESTS =
61 QMAKE_PRO = qjackspa.pro
62 QMAKE_MAKEFILE = Makefile.qmake
63 MANDOC = ng-jackspa.1
64 MANLINKS = njackspa.1 gjackspa.1 qjackspa.1 jackspa-cli.1
65 MANTARGET = ng-jackspa.1
66 HTMLDOC = README.html ng-jackspa.1.html
68 all : build
69 .PHONY : all .help help build doc clean distclean install install-doc force
70 .help :
71 @echo "Available targets for $(PACKAGE_NAME) Makefile:"
72 @echo " .help all build clean doc distclean install install-doc"
73 @echo "Useful variables for $(PACKAGE_NAME) Makefile:"
74 @echo " CFLAGS CXXFLAGS CPPFLAGS LDFLAGS prefix DESTDIR MAKE"
75 help : .help
77 build : $(PROGS) $(TESTS)
78 doc : $(MANDOC) $(HTMLDOC)
80 clean :
81 -$(MAKE) -f $(QMAKE_MAKEFILE) clean mocclean
82 -$(RM) $(PROGS) $(OBJECTS) $(QMAKE_MAKEFILE)
83 distclean : clean
84 -$(RM) $(MANDOC) $(HTMLDOC)
86 install : build
87 $(MKDIR) -p $(DESTDIR)$(bindir)
88 set -e; for prog in $(PROGS) $(SCRIPTS); do \
89 $(INSTALL) -p -m 0755 "$$prog" "$(DESTDIR)$(bindir)/"; \
90 done
91 install-doc : doc
92 $(MKDIR) -p $(DESTDIR)$(mandir)/man1
93 set -e; for doc in $(MANDOC); do \
94 gzip -9 <"$$doc" >"$$doc".gz; \
95 $(INSTALL) -p -m 0644 "$$doc".gz "$(DESTDIR)$(mandir)/man1/"; \
96 $(RM) "$$doc".gz; \
97 done
98 set -e; for doc in $(MANLINKS); do \
99 $(LN) -s -f "$(MANTARGET)".gz "$(DESTDIR)$(mandir)/man1/$$doc".gz; \
100 done
101 $(MKDIR) -p $(DESTDIR)$(docdir)
102 set -e; for doc in $(HTMLDOC); do \
103 $(INSTALL) -p -m 0644 "$$doc" "$(DESTDIR)$(docdir)/"; \
104 done
106 njackspa : njackspa.c curses.c $(COMMONS) $(MODULES)
107 $(CC) $(CFLAGS) -o $@ $< $(MODULES) $(LDFLAGS) -lncurses
108 gjackspa : gjackspa.cpp $(COMMONS) $(MODULES)
109 $(CXX) $(CXXFLAGS) `pkg-config gtkmm-2.4 --cflags` -DGTK_DISABLE_DEPRECATED \
110 -o $@ $< $(MODULES) $(LDFLAGS) `pkg-config gtkmm-2.4 --libs`
111 qjackspa : force $(QMAKE_MAKEFILE)
112 $(MAKE) -f $(QMAKE_MAKEFILE)
113 jackspa-cli : jackspa-cli.c $(COMMONS) $(MODULES)
114 $(CC) -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED $(CFLAGS) \
115 -o $@ $< $(MODULES) $(LDFLAGS)
117 jackspa.o : ladspa.c
119 $(QMAKE_MAKEFILE) : $(QMAKE_PRO)
120 $(QMAKE) -o $@
122 README.html : README asciidoc.conf
123 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b xhtml11 -d article -a readme $<
124 %.html : %.txt asciidoc.conf
125 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b xhtml11 -d manpage $<
126 %.xml : %.txt asciidoc.conf
127 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b docbook -d manpage $<
128 % : %.xml
129 $(XMLTO) man $<
131 force :