Annotation of mandoc/Makefile, Revision 1.395.2.29
1.395.2.29! schwarze 1: # $Id: Makefile,v 1.395.2.28 2014/08/12 21:37:42 schwarze Exp $
1.395.2.18 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.395.2.18 schwarze 18: VERSION = 1.12.4
1.395.2.14 schwarze 19:
20: # === USER SETTINGS ====================================================
21:
1.395.2.21 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.395.2.18 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.
1.395.2.28 schwarze 33: # If you don't define it, -Tlocale is a synonym for -Tascii.
1.375 kristaps 34: #
1.362 kristaps 35: CFLAGS += -DUSE_WCHAR
1.375 kristaps 36:
1.395.2.27 schwarze 37: CFLAGS += -g -W -Wall -Wstrict-prototypes
38: CFLAGS += -Wno-unused-parameter -Wwrite-strings
1.319 kristaps 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.395.2.21 schwarze 45:
1.319 kristaps 46: INSTALL = install
1.395.2.22 schwarze 47: INSTALL_PROGRAM = $(INSTALL) -m 0555
1.319 kristaps 48: INSTALL_DATA = $(INSTALL) -m 0444
1.395.2.22 schwarze 49: INSTALL_LIB = $(INSTALL) -m 0444
1.353 kristaps 50: INSTALL_SOURCE = $(INSTALL) -m 0644
1.319 kristaps 51: INSTALL_MAN = $(INSTALL_DATA)
52:
1.395.2.21 schwarze 53: # --- user settings related to database support ------------------------
54:
55: # If you want to build without database support, for example to avoid
56: # the dependency on Berkeley DB, comment the following line.
1.395.2.23 schwarze 57: # However, you won't get apropos(1) and makewhatis(8) in that case.
1.395.2.21 schwarze 58: #
1.395.2.23 schwarze 59: BUILD_TARGETS += db-build
60:
61: # The remaining settings in this section
62: # are only relevant if db-build is enabled.
63: # Otherwise, they have no effect either way.
1.395.2.21 schwarze 64:
1.375 kristaps 65: # Non-BSD systems (Linux, etc.) need -ldb to compile mandocdb and
66: # apropos.
67: #
1.358 kristaps 68: #DBLIB = -ldb
1.395.2.21 schwarze 69:
70: # If your system has manpath(1), uncomment this. This is most any
71: # system that's not OpenBSD or NetBSD. If uncommented, apropos(1)
72: # and mandocdb(8) will use manpath(1) to get the MANPATH variable.
73: #
74: #CFLAGS += -DUSE_MANPATH
75:
1.395.2.18 schwarze 76: # === END OF USER SETTINGS =============================================
77:
1.395.2.23 schwarze 78: INSTALL_TARGETS = $(BUILD_TARGETS:-build=-install)
1.395.2.18 schwarze 79:
1.395.2.23 schwarze 80: BASEBIN = mandoc preconv demandoc
81: DBBIN = apropos mandocdb
1.319 kristaps 82:
1.395.2.11 schwarze 83: TESTSRCS = test-betoh64.c \
84: test-fgetln.c \
85: test-getsubopt.c \
86: test-mmap.c \
1.395.2.17 schwarze 87: test-reallocarray.c \
1.395.2.22 schwarze 88: test-strcasestr.c \
1.395.2.11 schwarze 89: test-strlcat.c \
90: test-strlcpy.c \
1.395.2.22 schwarze 91: test-strptime.c \
92: test-strsep.c
1.395.2.11 schwarze 93:
1.395.2.24 schwarze 94: SRCS = apropos.c \
1.389 kristaps 95: apropos_db.c \
1.319 kristaps 96: arch.c \
97: att.c \
98: chars.c \
1.390 kristaps 99: compat_fgetln.c \
1.362 kristaps 100: compat_getsubopt.c \
1.395.2.17 schwarze 101: compat_reallocarray.c \
1.395.2.10 schwarze 102: compat_strcasestr.c \
1.362 kristaps 103: compat_strlcat.c \
104: compat_strlcpy.c \
1.395.2.10 schwarze 105: compat_strsep.c \
1.369 kristaps 106: demandoc.c \
1.319 kristaps 107: eqn.c \
1.360 kristaps 108: eqn_html.c \
1.359 kristaps 109: eqn_term.c \
1.319 kristaps 110: html.c \
111: lib.c \
112: main.c \
113: man.c \
114: man_hash.c \
115: man_html.c \
116: man_macro.c \
117: man_term.c \
118: man_validate.c \
119: mandoc.c \
1.395.2.15 schwarze 120: mandoc_aux.c \
1.355 kristaps 121: mandocdb.c \
1.380 kristaps 122: manpath.c \
1.319 kristaps 123: mdoc.c \
124: mdoc_argv.c \
125: mdoc_hash.c \
126: mdoc_html.c \
127: mdoc_macro.c \
1.371 schwarze 128: mdoc_man.c \
1.319 kristaps 129: mdoc_term.c \
130: mdoc_validate.c \
131: msec.c \
132: out.c \
1.344 kristaps 133: preconv.c \
1.319 kristaps 134: read.c \
135: roff.c \
136: st.c \
137: tbl.c \
138: tbl_data.c \
139: tbl_html.c \
140: tbl_layout.c \
141: tbl_opts.c \
142: tbl_term.c \
143: term.c \
144: term_ascii.c \
145: term_ps.c \
146: tree.c \
147: vol.c \
1.395.2.24 schwarze 148: $(TESTSRCS)
149:
1.395.2.29! schwarze 150: DISTFILES = INSTALL \
! 151: LICENSE \
1.395.2.24 schwarze 152: Makefile \
153: Makefile.depend \
154: NEWS \
155: TODO \
156: apropos.1 \
157: apropos_db.h \
158: arch.in \
159: att.in \
160: chars.in \
161: config.h.post \
162: config.h.pre \
163: configure \
164: demandoc.1 \
165: eqn.7 \
166: example.style.css \
167: gmdiff \
168: html.h \
169: lib.in \
170: libman.h \
171: libmandoc.h \
172: libmdoc.h \
173: libroff.h \
174: main.h \
175: man.7 \
176: man.h \
177: mandoc.1 \
178: mandoc.3 \
179: mandoc.h \
180: mandoc_aux.h \
181: mandoc_char.7 \
1.395.2.25 schwarze 182: mandoc_escape.3 \
1.395.2.24 schwarze 183: mandoc_html.3 \
1.395.2.25 schwarze 184: mandoc_malloc.3 \
1.395.2.24 schwarze 185: mandocdb.8 \
186: mandocdb.h \
187: manpath.h \
1.395.2.25 schwarze 188: mchars_alloc.3 \
1.395.2.24 schwarze 189: mdoc.7 \
190: mdoc.h \
191: msec.in \
192: out.h \
193: preconv.1 \
194: predefs.in \
195: roff.7 \
196: st.in \
197: style.css \
198: tbl.3 \
199: tbl.7 \
200: term.h \
1.389 kristaps 201: vol.in \
1.395.2.11 schwarze 202: whatis.1 \
1.395.2.24 schwarze 203: $(SRCS)
1.319 kristaps 204:
205: LIBMAN_OBJS = man.o \
206: man_hash.o \
207: man_macro.o \
208: man_validate.o
1.325 kristaps 209:
1.319 kristaps 210: LIBMDOC_OBJS = arch.o \
211: att.o \
212: lib.o \
213: mdoc.o \
214: mdoc_argv.o \
215: mdoc_hash.o \
216: mdoc_macro.o \
217: mdoc_validate.o \
218: st.o \
219: vol.o
1.325 kristaps 220:
1.319 kristaps 221: LIBROFF_OBJS = eqn.o \
222: roff.o \
223: tbl.o \
224: tbl_data.o \
225: tbl_layout.o \
226: tbl_opts.o
1.325 kristaps 227:
1.319 kristaps 228: LIBMANDOC_OBJS = $(LIBMAN_OBJS) \
229: $(LIBMDOC_OBJS) \
230: $(LIBROFF_OBJS) \
1.333 kristaps 231: chars.o \
1.319 kristaps 232: mandoc.o \
1.395.2.15 schwarze 233: mandoc_aux.o \
1.385 schwarze 234: msec.o \
1.319 kristaps 235: read.o
1.325 kristaps 236:
1.390 kristaps 237: COMPAT_OBJS = compat_fgetln.o \
238: compat_getsubopt.o \
1.395.2.17 schwarze 239: compat_reallocarray.o \
1.395.2.10 schwarze 240: compat_strcasestr.o \
1.362 kristaps 241: compat_strlcat.o \
1.395.2.10 schwarze 242: compat_strlcpy.o \
243: compat_strsep.o
1.319 kristaps 244:
1.360 kristaps 245: MANDOC_HTML_OBJS = eqn_html.o \
246: html.o \
1.319 kristaps 247: man_html.o \
248: mdoc_html.o \
249: tbl_html.o
1.325 kristaps 250:
1.371 schwarze 251: MANDOC_MAN_OBJS = mdoc_man.o
252:
1.359 kristaps 253: MANDOC_TERM_OBJS = eqn_term.o \
254: man_term.o \
1.319 kristaps 255: mdoc_term.o \
256: term.o \
257: term_ascii.o \
258: term_ps.o \
259: tbl_term.o
1.325 kristaps 260:
1.319 kristaps 261: MANDOC_OBJS = $(MANDOC_HTML_OBJS) \
1.371 schwarze 262: $(MANDOC_MAN_OBJS) \
1.319 kristaps 263: $(MANDOC_TERM_OBJS) \
264: main.o \
265: out.o \
266: tree.o
267:
1.380 kristaps 268: MANDOCDB_OBJS = mandocdb.o manpath.o
1.326 kristaps 269:
1.343 kristaps 270: PRECONV_OBJS = preconv.o
271:
1.380 kristaps 272: APROPOS_OBJS = apropos.o apropos_db.o manpath.o
1.376 kristaps 273:
1.369 kristaps 274: DEMANDOC_OBJS = demandoc.o
275:
1.395.2.14 schwarze 276: WWW_OBJS = mdocml.tar.gz \
1.395.2.18 schwarze 277: mdocml.sha256
278:
1.395.2.24 schwarze 279: # === DEPENDENCY HANDLING ==============================================
280:
281: all: base-build $(BUILD_TARGETS)
282:
283: base-build: $(BASEBIN)
284:
285: db-build: $(DBBIN)
286:
287: install: base-install $(INSTALL_TARGETS)
288:
1.395.2.29! schwarze 289: www: $(WWW_OBJS)
1.395.2.18 schwarze 290:
1.395.2.26 schwarze 291: include Makefile.depend
1.395.2.24 schwarze 292:
1.395.2.18 schwarze 293: # === TARGETS CONTAINING SHELL COMMANDS ================================
1.42 kristaps 294:
1.1 kristaps 295: clean:
1.319 kristaps 296: rm -f libmandoc.a $(LIBMANDOC_OBJS)
1.395.2.23 schwarze 297: rm -f apropos $(APROPOS_OBJS)
1.355 kristaps 298: rm -f mandocdb $(MANDOCDB_OBJS)
1.343 kristaps 299: rm -f preconv $(PRECONV_OBJS)
1.369 kristaps 300: rm -f demandoc $(DEMANDOC_OBJS)
1.319 kristaps 301: rm -f mandoc $(MANDOC_OBJS)
1.395.2.1 schwarze 302: rm -f config.h config.log $(COMPAT_OBJS)
1.395.2.29! schwarze 303: rm -f $(WWW_OBJS)
1.395.2.1 schwarze 304: rm -rf *.dSYM
1.290 kristaps 305:
1.395.2.23 schwarze 306: base-install: base-build
1.270 joerg 307: mkdir -p $(DESTDIR)$(BINDIR)
308: mkdir -p $(DESTDIR)$(EXAMPLEDIR)
1.332 kristaps 309: mkdir -p $(DESTDIR)$(LIBDIR)
1.334 kristaps 310: mkdir -p $(DESTDIR)$(INCLUDEDIR)
1.270 joerg 311: mkdir -p $(DESTDIR)$(MANDIR)/man1
1.319 kristaps 312: mkdir -p $(DESTDIR)$(MANDIR)/man3
1.270 joerg 313: mkdir -p $(DESTDIR)$(MANDIR)/man7
1.395.2.23 schwarze 314: $(INSTALL_PROGRAM) $(BASEBIN) $(DESTDIR)$(BINDIR)
1.324 kristaps 315: $(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR)
1.395.2.23 schwarze 316: $(INSTALL_LIB) man.h mandoc.h mandoc_aux.h mdoc.h \
317: $(DESTDIR)$(INCLUDEDIR)
1.369 kristaps 318: $(INSTALL_MAN) mandoc.1 preconv.1 demandoc.1 $(DESTDIR)$(MANDIR)/man1
1.395.2.25 schwarze 319: $(INSTALL_MAN) mandoc.3 mandoc_escape.3 mandoc_malloc.3 \
320: mchars_alloc.3 tbl.3 $(DESTDIR)$(MANDIR)/man3
1.395.2.18 schwarze 321: $(INSTALL_MAN) man.7 mdoc.7 roff.7 eqn.7 tbl.7 mandoc_char.7 \
322: $(DESTDIR)$(MANDIR)/man7
1.270 joerg 323: $(INSTALL_DATA) example.style.css $(DESTDIR)$(EXAMPLEDIR)
1.387 kristaps 324:
1.395.2.23 schwarze 325: db-install: db-build
326: mkdir -p $(DESTDIR)$(BINDIR)
327: mkdir -p $(DESTDIR)$(MANDIR)/man1
328: mkdir -p $(DESTDIR)$(MANDIR)/man8
329: $(INSTALL_PROGRAM) $(DBBIN) $(DESTDIR)$(BINDIR)
330: ln -f $(DESTDIR)$(BINDIR)/apropos $(DESTDIR)$(BINDIR)/whatis
331: $(INSTALL_MAN) apropos.1 whatis.1 $(DESTDIR)$(MANDIR)/man1
332: $(INSTALL_MAN) mandocdb.8 $(DESTDIR)$(MANDIR)/man8
333:
1.395.2.26 schwarze 334: depend: config.h
1.395.2.24 schwarze 335: mkdep -f Makefile.depend $(CFLAGS) $(SRCS)
336: perl -e 'undef $$/; $$_ = <>; s|/usr/include/\S+||g; \
337: s|\\\n||g; s| +| |g; print;' Makefile.depend > Makefile.tmp
338: mv Makefile.tmp Makefile.depend
339:
1.362 kristaps 340: libmandoc.a: $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
341: $(AR) rs $@ $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
1.319 kristaps 342:
343: mandoc: $(MANDOC_OBJS) libmandoc.a
1.368 kristaps 344: $(CC) $(LDFLAGS) -o $@ $(MANDOC_OBJS) libmandoc.a
1.325 kristaps 345:
1.355 kristaps 346: mandocdb: $(MANDOCDB_OBJS) libmandoc.a
1.368 kristaps 347: $(CC) $(LDFLAGS) -o $@ $(MANDOCDB_OBJS) libmandoc.a $(DBLIB)
1.326 kristaps 348:
1.343 kristaps 349: preconv: $(PRECONV_OBJS)
1.368 kristaps 350: $(CC) $(LDFLAGS) -o $@ $(PRECONV_OBJS)
1.343 kristaps 351:
1.372 kristaps 352: apropos: $(APROPOS_OBJS) libmandoc.a
1.373 kristaps 353: $(CC) $(LDFLAGS) -o $@ $(APROPOS_OBJS) libmandoc.a $(DBLIB)
1.372 kristaps 354:
1.369 kristaps 355: demandoc: $(DEMANDOC_OBJS) libmandoc.a
356: $(CC) $(LDFLAGS) -o $@ $(DEMANDOC_OBJS) libmandoc.a
357:
1.395.2.18 schwarze 358: mdocml.sha256: mdocml.tar.gz
359: sha256 mdocml.tar.gz > $@
1.319 kristaps 360:
1.395.2.24 schwarze 361: mdocml.tar.gz: $(DISTFILES)
1.319 kristaps 362: mkdir -p .dist/mdocml-$(VERSION)/
1.395.2.24 schwarze 363: $(INSTALL_SOURCE) $(DISTFILES) .dist/mdocml-$(VERSION)
1.395.2.13 schwarze 364: chmod 755 .dist/mdocml-$(VERSION)/configure
365: ( cd .dist/ && tar zcf ../$@ mdocml-$(VERSION) )
1.60 kristaps 366: rm -rf .dist/
1.362 kristaps 367:
1.395.2.11 schwarze 368: config.h: configure config.h.pre config.h.post $(TESTSRCS)
1.319 kristaps 369: rm -f config.log
1.395.2.11 schwarze 370: CC="$(CC)" CFLAGS="$(CFLAGS)" VERSION="$(VERSION)" ./configure
1.60 kristaps 371:
1.395.2.29! schwarze 372: .PHONY: base-install db-install install
1.395.2.26 schwarze 373: .PHONY: clean depend
CVSweb