qi: Bump to release 2.12
[dragora.git] / qi / Makefile
blob4401611c0665041ba93136f08aadce0bf3e58eab
1 # Makefile for Qi.
3 # Copyright (c) 2015-2024 Matias Fonzo, <selk@dragora.org>.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 project = qi
18 version = 2.12
20 ## DO NOT MAKE CHANGES HERE.
22 # Use config.mak to override any of the following variables:
23 prefix = /usr/local
24 exec_prefix = $(prefix)
25 bindir = $(exec_prefix)/bin
26 sbindir = $(exec_prefix)/sbin
27 libexecdir = $(exec_prefix)/libexec
28 sysconfdir = $(prefix)/etc
29 localstatedir = $(prefix)/var
30 datarootdir = $(prefix)/share
31 infodir = $(datarootdir)/info
32 mandir = $(datarootdir)/man
33 docdir = $(datarootdir)/doc
34 arch = $(shell uname -m)
35 packagedir = $(prefix)/pkgs
36 targetdir = $(prefix)
37 outdir = $(localstatedir)/cache/qi/packages
38 qi_cflags = -O2
39 qi_cxxflags = -O2
40 qi_ldflags =
41 qi_cppflags =
43 DISTNAME = ${project}-${version}
45 MAKEINFO = makeinfo
46 INSTALL = install
47 INSTALL_PROGRAM = ${INSTALL} -p -m 755
48 INSTALL_DATA = ${INSTALL} -p -m 644
49 INSTALL_DIR = mkdir -p -m 755
50 HELP2MAN_OPTS = --locale=C --version-string=${version}
52 .PHONY: all \
53 doc info man html \
54 dist distclean clean \
55 install install-info \
56 uninstall uninstall-info
58 -include config.mak
61 all : $(project) $(project)rc
63 $(project) : src/$(project)
65 src/$(project) : src/$(project).in
67 @echo "Making src/$(project) ..."
68 @echo ""
69 sed -e "s|@VERSION@|$(version)|g" \
70 -e "s|@PREFIX@|$(prefix)|g" \
71 -e "s|@BINDIR@|$(bindir)|g" \
72 -e "s|@SBINDIR@|$(sbindir)|g" \
73 -e "s|@LIBEXECDIR@|$(libexecdir)|g" \
74 -e "s|@SYSCONFDIR@|$(sysconfdir)|g" \
75 -e "s|@LOCALSTATEDIR@|$(localstatedir)|g" \
76 -e "s|@INFODIR@|$(infodir)|g" \
77 -e "s|@MANDIR@|$(mandir)|g" \
78 -e "s|@DOCDIR@|$(docdir)|g" \
79 -e "s|@ARCH@|$(arch)|g" \
80 -e "s|@PACKAGEDIR@|$(packagedir)|g" \
81 -e "s|@TARGETDIR@|$(targetdir)|g" \
82 -e "s|@OUTDIR@|$(outdir)|g" \
83 -e "s|@QICFLAGS@|$(qi_cflags)|g" \
84 -e "s|@QICXXFLAGS@|$(qi_cxxflags)|g" \
85 -e "s|@QILDFLAGS@|$(qi_ldflags)|g" \
86 -e "s|@QICPPFLAGS@|$(qi_cppflags)|g" \
87 $< > $@ && \
88 chmod 755 $@
90 $(project)rc : etc/$(project)rc
92 etc/$(project)rc : etc/$(project)rc.in
94 @echo "Making config: etc/$(project)rc ..."
95 @echo ""
96 sed -e "s|@PREFIX@|$(prefix)|g" \
97 -e "s|@BINDIR@|$(bindir)|g" \
98 -e "s|@SBINDIR@|$(sbindir)|g" \
99 -e "s|@LIBEXECDIR@|$(libexecdir)|g" \
100 -e "s|@SYSCONFDIR@|$(sysconfdir)|g" \
101 -e "s|@LOCALSTATEDIR@|$(localstatedir)|g" \
102 -e "s|@INFODIR@|$(infodir)|g" \
103 -e "s|@MANDIR@|$(mandir)|g" \
104 -e "s|@DOCDIR@|$(docdir)|g" \
105 -e "s|@ARCH@|$(arch)|g" \
106 -e "s|@PACKAGEDIR@|$(packagedir)|g" \
107 -e "s|@TARGETDIR@|$(targetdir)|g" \
108 -e "s|@OUTDIR@|$(outdir)|g" \
109 -e "s|@QICFLAGS@|$(qi_cflags)|g" \
110 -e "s|@QICXXFLAGS@|$(qi_cxxflags)|g" \
111 -e "s|@QILDFLAGS@|$(qi_ldflags)|g" \
112 -e "s|@QICPPFLAGS@|$(qi_cppflags)|g" \
113 $< > $@ && \
114 chmod 644 $@
116 doc : info man html
118 info : doc/$(project).info
120 doc/$(project).info : doc/$(project)-header.texi doc/$(project)-content.texi
121 cd doc && env LANG=C $(MAKEINFO) $(project)-header.texi -o $(project).info
123 man : doc/$(project).1
125 doc/qi.1 : doc/$(project).1.in src/$(project).in
126 env LANG=C help2man ${HELP2MAN_OPTS} \
127 --name="a simple but well-integrated package manager" \
128 --info-page=qi \
129 --output=$@ doc/$(project).1.in
130 sed -e "s#QI.1.IN#QI#g" -e "s#qi.1.in#qi#g" -i $@
132 html : doc/$(project).html
134 doc/$(project).html : doc/$(project)-header.texi doc/$(project)-content.texi
135 cd doc && env LANG=C $(MAKEINFO) --html --no-split \
136 $(project)-header.texi -o $(project).html
138 dist : doc
139 rm -f $(DISTNAME)
140 ln -sf . $(DISTNAME)
141 tarlz --solid -9 -cvf $(DISTNAME).tar.lz \
142 $(DISTNAME)/AUTHORS \
143 $(DISTNAME)/COPYING \
144 $(DISTNAME)/CREDITS \
145 $(DISTNAME)/Makefile \
146 $(DISTNAME)/NEWS \
147 $(DISTNAME)/README.md \
148 $(DISTNAME)/configure \
149 $(DISTNAME)/doc/example.order \
150 $(DISTNAME)/doc/fdl.txt \
151 $(DISTNAME)/doc/qi.1 \
152 $(DISTNAME)/doc/qi.1.in \
153 $(DISTNAME)/doc/$(project).html \
154 $(DISTNAME)/doc/$(project).info \
155 $(DISTNAME)/doc/$(project)-header.texi \
156 $(DISTNAME)/doc/$(project)-content.texi \
157 $(DISTNAME)/doc/recipe1 \
158 $(DISTNAME)/doc/recipe2 \
159 $(DISTNAME)/doc/recipe3 \
160 $(DISTNAME)/etc/$(project)rc.in \
161 $(DISTNAME)/src/qi.in
162 rm -f $(DISTNAME)
163 sha256sum $(DISTNAME).tar.lz > $(DISTNAME).tar.lz.sha256
165 distclean : clean
166 -rm -f *.tar *.tar.lz *.tar.lz.*
168 clean :
169 -rm -f src/$(project) etc/$(project)rc config.mak
171 install : all install-info install-man
173 @echo ""
174 @echo "* Checking required directories ..."
175 if [ ! -d "$(DESTDIR)${bindir}" ] ; then \
176 $(INSTALL_DIR) "$(DESTDIR)${bindir}" ; \
178 if [ ! -d "$(DESTDIR)${sysconfdir}" ] ; then \
179 $(INSTALL_DIR) "$(DESTDIR)${sysconfdir}" ; \
182 @echo ""
183 @echo "* Installing on $(DESTDIR)${bindir} ..."
184 $(INSTALL_PROGRAM) src/$(project) "$(DESTDIR)${bindir}/$(project)"
186 @echo ""
187 @echo "* Installing config file on $(DESTDIR)${sysconfdir} ..."
188 $(INSTALL_DATA) etc/$(project)rc "$(DESTDIR)${sysconfdir}/$(project)rc"
190 @echo ""
191 @echo "* Creating package and target directory (if needed) ..."
192 if [ ! -d "$(DESTDIR)${packagedir}" ] ; then \
193 $(INSTALL_DIR) "$(DESTDIR)${packagedir}" ; \
195 if [ ! -d "$(DESTDIR)${targetdir}" ] ; then \
196 $(INSTALL_DIR) "$(DESTDIR)${targetdir}" ; \
198 @echo ""
199 @echo "Done."
201 install-info :
203 @echo ""
204 @echo "* Installing Info document on $(DESTDIR)${infodir} ..."
205 if [ ! -d "$(DESTDIR)${infodir}" ] ; then \
206 $(INSTALL_DIR) "$(DESTDIR)${infodir}" ; \
209 $(INSTALL_DATA) doc/$(project).info \
210 "$(DESTDIR)${infodir}/$(project).info"
212 -install-info --info-dir="$(DESTDIR)${infodir}" \
213 "$(DESTDIR)${infodir}/$(project).info"
215 install-man :
217 @echo ""
218 @echo "* Installing manual pages on $(DESTDIR)${mandir}/man1 ..."
219 if [ ! -d "$(DESTDIR)${mandir}/man1" ] ; then \
220 $(INSTALL_DIR) "$(DESTDIR)${mandir}/man1" ; \
223 $(INSTALL_DATA) doc/$(project).1 "$(DESTDIR)${mandir}/man1"
225 uninstall : uninstall-info uninstall-man
227 @echo ""
228 @echo "* Uninstalling from $(DESTDIR)${bindir} ..."
229 -rm -f "$(DESTDIR)${bindir}/$(project)"
231 -rm -f "$(DESTDIR)${sysconfdir}/$(project)rc"
233 uninstall-info :
235 -install-info \
236 --info-dir="$(DESTDIR)${infodir}" \
237 --remove "$(DESTDIR)${infodir}/$(project).info"
239 -rm -f "$(DESTDIR)${infodir}/$(project).info"
241 uninstall-man :
243 -rm -f "$(DESTDIR)${mandir}/man1/$(project).1"