Annotation of mandoc/Makefile, Revision 1.426
1.426 ! schwarze 1: # $Id: Makefile,v 1.425 2014/08/04 23:44:29 schwarze Exp $
1.419 schwarze 2: #
3: # Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4: # Copyright (c) 2011, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
5: #
6: # Permission to use, copy, modify, and distribute this software for any
7: # purpose with or without fee is hereby granted, provided that the above
8: # copyright notice and this permission notice appear in all copies.
9: #
10: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.259 kristaps 17:
1.413 schwarze 18: VERSION = 1.13.0
19:
20: # === USER SETTINGS ====================================================
21:
1.426 ! schwarze 22: # --- user settings relevant for all builds ----------------------------
! 23:
1.259 kristaps 24: # Specify this if you want to hard-code the operating system to appear
25: # in the lower-left hand corner of -mdoc manuals.
1.375 kristaps 26: #
1.419 schwarze 27: # CFLAGS += -DOSNAME="\"OpenBSD 5.5\""
1.259 kristaps 28:
1.341 kristaps 29: # IFF your system supports multi-byte functions (setlocale(), wcwidth(),
30: # putwchar()) AND has __STDC_ISO_10646__ (that is, wchar_t is simply a
31: # UCS-4 value) should you define USE_WCHAR. If you define it and your
32: # system DOESN'T support this, -Tlocale will produce garbage.
33: # If you don't define it, -Tlocale is a synonym for -Tacsii.
1.375 kristaps 34: #
1.362 kristaps 35: CFLAGS += -DUSE_WCHAR
1.375 kristaps 36:
1.404 schwarze 37: CFLAGS += -I/usr/local/include -g -DHAVE_CONFIG_H
1.319 kristaps 38: CFLAGS += -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings
39: PREFIX = /usr/local
40: BINDIR = $(PREFIX)/bin
1.321 kristaps 41: INCLUDEDIR = $(PREFIX)/include/mandoc
42: LIBDIR = $(PREFIX)/lib/mandoc
1.319 kristaps 43: MANDIR = $(PREFIX)/man
44: EXAMPLEDIR = $(PREFIX)/share/examples/mandoc
1.426 ! schwarze 45:
1.319 kristaps 46: INSTALL = install
47: INSTALL_PROGRAM = $(INSTALL) -m 0755
48: INSTALL_DATA = $(INSTALL) -m 0444
49: INSTALL_LIB = $(INSTALL) -m 0644
1.353 kristaps 50: INSTALL_SOURCE = $(INSTALL) -m 0644
1.319 kristaps 51: INSTALL_MAN = $(INSTALL_DATA)
52:
1.426 ! schwarze 53: # --- user settings related to database support ------------------------
! 54:
1.413 schwarze 55: # If you want to build without database support, for example to avoid
1.426 ! schwarze 56: # the dependency on SQLite3, comment the following line.
! 57: #
1.416 schwarze 58: DBBIN = makewhatis manpage apropos
1.423 schwarze 59:
1.426 ! schwarze 60: # If your system has manpath(1), uncomment this. This is most any
! 61: # system that's not OpenBSD or NetBSD. If uncommented, apropos(1)
! 62: # and makewhatis(8) will use manpath(1) to get the MANPATH variable.
! 63: #
! 64: #CFLAGS += -DUSE_MANPATH
1.420 schwarze 65:
66: # OpenBSD has the ohash functions in libutil.
67: # Comment the following line if your system doesn't.
1.426 ! schwarze 68: #
1.420 schwarze 69: DBLIB += -lutil
1.358 kristaps 70:
1.426 ! schwarze 71: # --- user settings related to man.cgi ---------------------------------
! 72:
! 73: # To build man.cgi, copy cgi.h.example to cgi.h, edit it,
! 74: # and enable the following line.
! 75: #
! 76: #DBBIN += man.cgi
! 77:
! 78: # If your system does not support static binaries, comment this,
! 79: # for example on Mac OS X.
! 80: #
! 81: STATIC = -static
! 82:
! 83: # Linux requires -pthread for statical linking.
! 84: #
! 85: #STATIC += -pthread
! 86:
! 87: WWWPREFIX = /var/www
! 88: HTDOCDIR = $(WWWPREFIX)/htdocs
! 89: CGIBINDIR = $(WWWPREFIX)/cgi-bin
! 90:
1.413 schwarze 91: # === END OF USER SETTINGS =============================================
92:
93: ALLBIN = mandoc preconv demandoc $(DBBIN)
1.426 ! schwarze 94: DBLIB += -L/usr/local/lib -lsqlite3
1.413 schwarze 95:
96: all: $(ALLBIN)
1.319 kristaps 97:
1.407 schwarze 98: TESTSRCS = test-fgetln.c \
99: test-getsubopt.c \
100: test-mmap.c \
101: test-ohash.c \
1.418 schwarze 102: test-reallocarray.c \
1.407 schwarze 103: test-strlcat.c \
104: test-strlcpy.c \
105: test-strptime.c
106:
1.417 schwarze 107: SRCS = LICENSE \
108: Makefile \
1.401 schwarze 109: NEWS \
1.389 kristaps 110: TODO \
1.401 schwarze 111: apropos.1 \
112: apropos.c \
1.319 kristaps 113: arch.c \
114: arch.in \
115: att.c \
116: att.in \
1.389 kristaps 117: cgi.c \
1.319 kristaps 118: chars.c \
119: chars.in \
1.390 kristaps 120: compat_fgetln.c \
1.362 kristaps 121: compat_getsubopt.c \
1.410 schwarze 122: compat_ohash.c \
123: compat_ohash.h \
1.418 schwarze 124: compat_reallocarray.c \
1.406 schwarze 125: compat_strcasestr.c \
1.362 kristaps 126: compat_strlcat.c \
127: compat_strlcpy.c \
1.406 schwarze 128: compat_strsep.c \
1.319 kristaps 129: config.h.post \
130: config.h.pre \
1.409 schwarze 131: configure \
1.389 kristaps 132: demandoc.1 \
1.369 kristaps 133: demandoc.c \
1.319 kristaps 134: eqn.7 \
135: eqn.c \
1.360 kristaps 136: eqn_html.c \
1.359 kristaps 137: eqn_term.c \
1.319 kristaps 138: example.style.css \
1.401 schwarze 139: gmdiff \
1.319 kristaps 140: html.c \
141: html.h \
142: lib.c \
143: lib.in \
144: libman.h \
145: libmandoc.h \
146: libmdoc.h \
147: libroff.h \
148: main.c \
149: main.h \
1.416 schwarze 150: makewhatis.8 \
1.319 kristaps 151: man.7 \
152: man.c \
1.422 schwarze 153: man.cgi.8 \
1.391 kristaps 154: man-cgi.css \
1.389 kristaps 155: man.h \
1.319 kristaps 156: man_hash.c \
157: man_html.c \
158: man_macro.c \
159: man_term.c \
160: man_validate.c \
161: mandoc.1 \
162: mandoc.3 \
163: mandoc.c \
1.415 schwarze 164: mandoc.db.5 \
1.319 kristaps 165: mandoc.h \
1.414 schwarze 166: mandoc_aux.c \
167: mandoc_aux.h \
1.389 kristaps 168: mandoc_char.7 \
1.355 kristaps 169: mandocdb.c \
1.410 schwarze 170: manpage.c \
1.380 kristaps 171: manpath.c \
172: manpath.h \
1.415 schwarze 173: mansearch.3 \
1.410 schwarze 174: mansearch.c \
175: mansearch.h \
1.411 schwarze 176: mansearch_const.c \
1.319 kristaps 177: mdoc.7 \
178: mdoc.c \
1.389 kristaps 179: mdoc.h \
1.319 kristaps 180: mdoc_argv.c \
181: mdoc_hash.c \
182: mdoc_html.c \
183: mdoc_macro.c \
1.371 schwarze 184: mdoc_man.c \
1.319 kristaps 185: mdoc_term.c \
186: mdoc_validate.c \
187: msec.c \
188: msec.in \
189: out.c \
190: out.h \
1.344 kristaps 191: preconv.1 \
192: preconv.c \
1.342 kristaps 193: predefs.in \
1.319 kristaps 194: read.c \
195: roff.7 \
196: roff.c \
197: st.c \
198: st.in \
199: style.css \
1.401 schwarze 200: tbl.3 \
1.319 kristaps 201: tbl.7 \
202: tbl.c \
203: tbl_data.c \
204: tbl_html.c \
205: tbl_layout.c \
206: tbl_opts.c \
207: tbl_term.c \
208: term.c \
209: term.h \
210: term_ascii.c \
211: term_ps.c \
212: tree.c \
213: vol.c \
1.407 schwarze 214: vol.in \
215: $(TESTSRCS)
1.319 kristaps 216:
217: LIBMAN_OBJS = man.o \
218: man_hash.o \
219: man_macro.o \
220: man_validate.o
1.325 kristaps 221:
1.319 kristaps 222: LIBMDOC_OBJS = arch.o \
223: att.o \
224: lib.o \
225: mdoc.o \
226: mdoc_argv.o \
227: mdoc_hash.o \
228: mdoc_macro.o \
229: mdoc_validate.o \
230: st.o \
231: vol.o
1.325 kristaps 232:
1.319 kristaps 233: LIBROFF_OBJS = eqn.o \
234: roff.o \
235: tbl.o \
236: tbl_data.o \
237: tbl_layout.o \
238: tbl_opts.o
1.325 kristaps 239:
1.319 kristaps 240: LIBMANDOC_OBJS = $(LIBMAN_OBJS) \
241: $(LIBMDOC_OBJS) \
242: $(LIBROFF_OBJS) \
1.333 kristaps 243: chars.o \
1.319 kristaps 244: mandoc.o \
1.414 schwarze 245: mandoc_aux.o \
1.385 schwarze 246: msec.o \
1.319 kristaps 247: read.o
1.325 kristaps 248:
1.390 kristaps 249: COMPAT_OBJS = compat_fgetln.o \
250: compat_getsubopt.o \
1.397 kristaps 251: compat_ohash.o \
1.418 schwarze 252: compat_reallocarray.o \
1.406 schwarze 253: compat_strcasestr.o \
1.362 kristaps 254: compat_strlcat.o \
1.406 schwarze 255: compat_strlcpy.o \
256: compat_strsep.o
1.319 kristaps 257:
1.419 schwarze 258: # === DEPENDENCY HANDLING ==============================================
259:
1.396 kristaps 260: arch.o: arch.in
261: att.o: att.in
262: chars.o: chars.in
263: lib.o: lib.in
264: msec.o: msec.in
265: roff.o: predefs.in
266: st.o: st.in
267: vol.o: vol.in
1.423 schwarze 268: cgi.o: cgi.h
1.396 kristaps 269:
270: $(LIBMAN_OBJS): libman.h
271: $(LIBMDOC_OBJS): libmdoc.h
272: $(LIBROFF_OBJS): libroff.h
1.414 schwarze 273: $(LIBMANDOC_OBJS): mandoc.h mandoc_aux.h mdoc.h man.h libmandoc.h config.h
1.397 kristaps 274: $(COMPAT_OBJS): config.h compat_ohash.h
1.362 kristaps 275:
1.360 kristaps 276: MANDOC_HTML_OBJS = eqn_html.o \
277: html.o \
1.319 kristaps 278: man_html.o \
279: mdoc_html.o \
280: tbl_html.o
1.396 kristaps 281: $(MANDOC_HTML_OBJS): html.h
1.325 kristaps 282:
1.371 schwarze 283: MANDOC_MAN_OBJS = mdoc_man.o
284:
1.359 kristaps 285: MANDOC_TERM_OBJS = eqn_term.o \
286: man_term.o \
1.319 kristaps 287: mdoc_term.o \
288: term.o \
289: term_ascii.o \
290: term_ps.o \
291: tbl_term.o
1.396 kristaps 292: $(MANDOC_TERM_OBJS): term.h
1.325 kristaps 293:
1.319 kristaps 294: MANDOC_OBJS = $(MANDOC_HTML_OBJS) \
1.371 schwarze 295: $(MANDOC_MAN_OBJS) \
1.319 kristaps 296: $(MANDOC_TERM_OBJS) \
297: main.o \
298: out.o \
299: tree.o
1.414 schwarze 300: $(MANDOC_OBJS): main.h mandoc.h mandoc_aux.h mdoc.h man.h config.h out.h
1.319 kristaps 301:
1.416 schwarze 302: MAKEWHATIS_OBJS = mandocdb.o mansearch_const.o manpath.o
303: $(MAKEWHATIS_OBJS): mansearch.h mandoc.h mandoc_aux.h \
1.414 schwarze 304: mdoc.h man.h config.h manpath.h
1.326 kristaps 305:
1.343 kristaps 306: PRECONV_OBJS = preconv.o
1.396 kristaps 307: $(PRECONV_OBJS): config.h
1.376 kristaps 308:
1.412 schwarze 309: APROPOS_OBJS = apropos.o mansearch.o mansearch_const.o manpath.o
1.419 schwarze 310: $(APROPOS_OBJS): config.h mandoc.h mandoc_aux.h manpath.h mansearch.h
1.372 kristaps 311:
1.421 schwarze 312: CGI_OBJS = $(MANDOC_HTML_OBJS) \
313: cgi.o \
314: mansearch.o \
315: mansearch_const.o \
316: out.o
317: $(CGI_OBJS): main.h out.h config.h mandoc.h mandoc_aux.h \
318: manpath.h mansearch.h
319:
1.412 schwarze 320: MANPAGE_OBJS = manpage.o mansearch.o mansearch_const.o manpath.o
1.419 schwarze 321: $(MANPAGE_OBJS): config.h mandoc.h mandoc_aux.h manpath.h mansearch.h
1.381 kristaps 322:
1.369 kristaps 323: DEMANDOC_OBJS = demandoc.o
1.419 schwarze 324: $(DEMANDOC_OBJS): config.h mandoc.h man.h mdoc.h
1.369 kristaps 325:
1.413 schwarze 326: WWW_MANS = apropos.1.html \
1.401 schwarze 327: demandoc.1.html \
1.369 kristaps 328: mandoc.1.html \
1.401 schwarze 329: preconv.1.html \
1.319 kristaps 330: mandoc.3.html \
1.415 schwarze 331: mansearch.3.html \
1.401 schwarze 332: tbl.3.html \
1.415 schwarze 333: mandoc.db.5.html \
1.319 kristaps 334: eqn.7.html \
335: man.7.html \
336: mandoc_char.7.html \
337: mdoc.7.html \
338: roff.7.html \
339: tbl.7.html \
1.416 schwarze 340: makewhatis.8.html \
1.422 schwarze 341: man.cgi.8.html \
1.413 schwarze 342: man.h.html \
343: mandoc.h.html \
1.419 schwarze 344: mandoc_aux.h.html \
1.415 schwarze 345: manpath.h.html \
346: mansearch.h.html \
1.413 schwarze 347: mdoc.h.html
1.319 kristaps 348:
1.419 schwarze 349: WWW_OBJS = mdocml.tar.gz \
350: mdocml.sha256
351:
352: www: $(WWW_OBJS) $(WWW_MANS)
1.319 kristaps 353:
1.419 schwarze 354: # === TARGETS CONTAINING SHELL COMMANDS ================================
1.132 kristaps 355:
1.1 kristaps 356: clean:
1.319 kristaps 357: rm -f libmandoc.a $(LIBMANDOC_OBJS)
1.396 kristaps 358: rm -f apropos $(APROPOS_OBJS)
1.416 schwarze 359: rm -f makewhatis $(MAKEWHATIS_OBJS)
1.343 kristaps 360: rm -f preconv $(PRECONV_OBJS)
1.421 schwarze 361: rm -f man.cgi $(CGI_OBJS)
1.396 kristaps 362: rm -f manpage $(MANPAGE_OBJS)
1.369 kristaps 363: rm -f demandoc $(DEMANDOC_OBJS)
1.319 kristaps 364: rm -f mandoc $(MANDOC_OBJS)
1.396 kristaps 365: rm -f config.h config.log $(COMPAT_OBJS)
1.413 schwarze 366: rm -f $(WWW_MANS) $(WWW_OBJS)
1.396 kristaps 367: rm -rf *.dSYM
1.290 kristaps 368:
1.319 kristaps 369: install: all
1.270 joerg 370: mkdir -p $(DESTDIR)$(BINDIR)
371: mkdir -p $(DESTDIR)$(EXAMPLEDIR)
1.332 kristaps 372: mkdir -p $(DESTDIR)$(LIBDIR)
1.334 kristaps 373: mkdir -p $(DESTDIR)$(INCLUDEDIR)
1.270 joerg 374: mkdir -p $(DESTDIR)$(MANDIR)/man1
1.319 kristaps 375: mkdir -p $(DESTDIR)$(MANDIR)/man3
1.415 schwarze 376: mkdir -p $(DESTDIR)$(MANDIR)/man5
1.270 joerg 377: mkdir -p $(DESTDIR)$(MANDIR)/man7
1.413 schwarze 378: $(INSTALL_PROGRAM) $(ALLBIN) $(DESTDIR)$(BINDIR)
1.324 kristaps 379: $(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR)
1.352 kristaps 380: $(INSTALL_LIB) man.h mdoc.h mandoc.h $(DESTDIR)$(INCLUDEDIR)
1.369 kristaps 381: $(INSTALL_MAN) mandoc.1 preconv.1 demandoc.1 $(DESTDIR)$(MANDIR)/man1
1.415 schwarze 382: $(INSTALL_MAN) mandoc.3 mansearch.3 tbl.3 $(DESTDIR)$(MANDIR)/man3
383: $(INSTALL_MAN) mandoc.db.5 $(DESTDIR)$(MANDIR)/man5
1.419 schwarze 384: $(INSTALL_MAN) man.7 mdoc.7 roff.7 eqn.7 tbl.7 mandoc_char.7 \
385: $(DESTDIR)$(MANDIR)/man7
1.270 joerg 386: $(INSTALL_DATA) example.style.css $(DESTDIR)$(EXAMPLEDIR)
1.387 kristaps 387:
388: installcgi: all
389: mkdir -p $(DESTDIR)$(CGIBINDIR)
390: mkdir -p $(DESTDIR)$(HTDOCDIR)
1.424 schwarze 391: mkdir -p $(DESTDIR)$(WWWPREFIX)/man/mandoc/man1
392: mkdir -p $(DESTDIR)$(WWWPREFIX)/man/mandoc/man8
1.421 schwarze 393: $(INSTALL_PROGRAM) man.cgi $(DESTDIR)$(CGIBINDIR)
1.387 kristaps 394: $(INSTALL_DATA) example.style.css $(DESTDIR)$(HTDOCDIR)/man.css
1.391 kristaps 395: $(INSTALL_DATA) man-cgi.css $(DESTDIR)$(HTDOCDIR)
1.424 schwarze 396: $(INSTALL_MAN) apropos.1 $(DESTDIR)$(WWWPREFIX)/man/mandoc/man1/
397: $(INSTALL_MAN) man.cgi.8 $(DESTDIR)$(WWWPREFIX)/man/mandoc/man8/
1.60 kristaps 398:
1.419 schwarze 399: installwww: www
1.413 schwarze 400: mkdir -p $(DESTDIR)$(HTDOCDIR)/snapshots
401: $(INSTALL_DATA) $(WWW_MANS) style.css $(DESTDIR)$(HTDOCDIR)
402: $(INSTALL_DATA) $(WWW_OBJS) $(DESTDIR)$(HTDOCDIR)/snapshots
403: $(INSTALL_DATA) mdocml.tar.gz \
404: $(DESTDIR)$(HTDOCDIR)/snapshots/mdocml-$(VERSION).tar.gz
1.419 schwarze 405: $(INSTALL_DATA) mdocml.sha256 \
406: $(DESTDIR)$(HTDOCDIR)/snapshots/mdocml-$(VERSION).sha256
1.319 kristaps 407:
1.362 kristaps 408: libmandoc.a: $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
409: $(AR) rs $@ $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
1.319 kristaps 410:
411: mandoc: $(MANDOC_OBJS) libmandoc.a
1.368 kristaps 412: $(CC) $(LDFLAGS) -o $@ $(MANDOC_OBJS) libmandoc.a
1.325 kristaps 413:
1.416 schwarze 414: makewhatis: $(MAKEWHATIS_OBJS) libmandoc.a
415: $(CC) $(LDFLAGS) -o $@ $(MAKEWHATIS_OBJS) libmandoc.a $(DBLIB)
1.326 kristaps 416:
1.343 kristaps 417: preconv: $(PRECONV_OBJS)
1.368 kristaps 418: $(CC) $(LDFLAGS) -o $@ $(PRECONV_OBJS)
1.343 kristaps 419:
1.396 kristaps 420: manpage: $(MANPAGE_OBJS) libmandoc.a
421: $(CC) $(LDFLAGS) -o $@ $(MANPAGE_OBJS) libmandoc.a $(DBLIB)
1.383 kristaps 422:
1.372 kristaps 423: apropos: $(APROPOS_OBJS) libmandoc.a
1.373 kristaps 424: $(CC) $(LDFLAGS) -o $@ $(APROPOS_OBJS) libmandoc.a $(DBLIB)
1.421 schwarze 425:
426: man.cgi: $(CGI_OBJS) libmandoc.a
427: $(CC) $(LDFLAGS) $(STATIC) -o $@ $(CGI_OBJS) libmandoc.a $(DBLIB)
1.372 kristaps 428:
1.369 kristaps 429: demandoc: $(DEMANDOC_OBJS) libmandoc.a
430: $(CC) $(LDFLAGS) -o $@ $(DEMANDOC_OBJS) libmandoc.a
431:
1.419 schwarze 432: mdocml.sha256: mdocml.tar.gz
433: sha256 mdocml.tar.gz > $@
1.319 kristaps 434:
435: mdocml.tar.gz: $(SRCS)
436: mkdir -p .dist/mdocml-$(VERSION)/
1.353 kristaps 437: $(INSTALL_SOURCE) $(SRCS) .dist/mdocml-$(VERSION)
1.409 schwarze 438: chmod 755 .dist/mdocml-$(VERSION)/configure
439: ( cd .dist/ && tar zcf ../$@ mdocml-$(VERSION) )
1.60 kristaps 440: rm -rf .dist/
1.362 kristaps 441:
1.407 schwarze 442: config.h: configure config.h.pre config.h.post $(TESTSRCS)
1.319 kristaps 443: rm -f config.log
1.407 schwarze 444: CC="$(CC)" CFLAGS="$(CFLAGS)" VERSION="$(VERSION)" ./configure
1.60 kristaps 445:
1.419 schwarze 446: .PHONY: clean install installcgi installwww
447: .SUFFIXES: .1 .3 .5 .7 .8 .h
448: .SUFFIXES: .1.html .3.html .5.html .7.html .8.html .h.html
449:
1.319 kristaps 450: .h.h.html:
1.419 schwarze 451: highlight -I $< > $@
1.168 kristaps 452:
1.419 schwarze 453: .1.1.html .3.3.html .5.5.html .7.7.html .8.8.html: mandoc
454: ./mandoc -Thtml -Wall,stop \
455: -Ostyle=style.css,man=%N.%S.html,includes=%I.html $< > $@
CVSweb