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
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
36 TAR_FLAGS
= --owner root
--group root
--mode a
+rX
,o-w
--mtime .
40 ASCIIDOC_FLAGS
= -apackagename
="$(PACKAGE_NAME)" -aversion
="$(VERSION)"
43 SHA512SUM ?
= sha512sum
45 # Get the version via git or from the VERSION file or from the project
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.
51 VERSION
= $(DIST_VERSION
)
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
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
65 MODULES
= jackspa.o control.o
66 OBJECTS
= $(MODULES
) $(PROGS
:%=%.o
)
69 QMAKE_PRO
= qjackspa.pro
70 QMAKE_MAKEFILE
= Makefile.qmake
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
)
80 .PHONY
: all .help help build doc
clean distclean dist install install-doc \
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"
90 build
: $(PROGS
) $(TESTS
)
91 doc
: $(MANDOC
) $(HTMLDOC
)
94 -$(MAKE
) -f
$(QMAKE_MAKEFILE
) clean mocclean
95 $(RM
) $(PROGS
) $(OBJECTS
) $(QMAKE_MAKEFILE
)
97 $(RM
) $(MANDOC
) $(HTMLDOC
)
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
; }
106 $(MKDIR
) -p
$(DESTDIR
)$(bindir)
107 set
-e
; for prog in
$(PROGS
) $(SCRIPTS
); do \
108 $(INSTALL
) -p
-m
0755 "$$prog" "$(DESTDIR)$(bindir)/"; \
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/"; \
117 set
-e
; for doc in
$(MANLINKS
); do \
118 $(LN
) -s
-f
"$(MANTARGET)".gz
"$(DESTDIR)$(mandir)/man1/$$doc".gz
; \
120 $(MKDIR
) -p
$(DESTDIR
)$(docdir
)
121 set
-e
; for doc in
$(HTMLDOC
); do \
122 $(INSTALL
) -p
-m
0644 "$$doc" "$(DESTDIR)$(docdir)/"; \
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
)
132 dist : $(TARNAME
).
tar.gz
134 $(MAKE
) $(TARNAME
).
tar.gz NODOCDIST
=yes
137 if
test -f ..
/$(TARNAME
).
tar.gz
; then \
138 echo NOTE
: re-using already existing ..
/$(TARNAME
).
tar.gz
; \
139 $(CP
) ..
/$(TARNAME
).
tar.gz .
; \
141 if
test -d .git ||
test -f .git
; then \
142 $(MAKE
) $(TARNAME
).
tar; \
144 echo WARNING
: re-building the distribution archive in ..
/$(TARNAME
).
tar; \
147 ( cd ..
&& $(TAR
) $(TAR_FLAGS
) --mtime
$(TARNAME
) -cvf
$(TARNAME
).
tar $(TARNAME
) \
148 && $(MV
) $(TARNAME
).
tar $(TARNAME
)/ ); \
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
); \
157 gzip
-f
-9 $(TARNAME
).
tar; \
159 $(MD5SUM
) $(TARNAME
).
tar.gz
> $(TARNAME
).
tar.gz.md5
160 $(SHA512SUM
) $(TARNAME
).
tar.gz
> $(TARNAME
).
tar.gz.sha512
163 ( echo
"# $@ for $(PACKAGE_NAME) - automatically generated from the VCS's history"; \
165 .
/gitchangelog.sh
--tags --tag-pattern
'version\/[^\n]*' \
166 -- - --date-order
) \
167 |
$(SED
) 's/^\[version/\f\[version/' \
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
)
183 $(QMAKE_MAKEFILE
) : $(QMAKE_PRO
)
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
$<