1.PHONY: clean install installwww 2.SUFFIXES: .sgml .html .md5 .h .h.html 3.SUFFIXES: .1 .3 .7 .8 4.SUFFIXES: .1.html .3.html .7.html .8.html 5 6# Specify this if you want to hard-code the operating system to appear 7# in the lower-left hand corner of -mdoc manuals. 8# 9# CFLAGS += -DOSNAME="\"OpenBSD 5.4\"" 10 11VERSION = 1.13.0 12VDATE = 4 January 2014 13 14# IFF your system supports multi-byte functions (setlocale(), wcwidth(), 15# putwchar()) AND has __STDC_ISO_10646__ (that is, wchar_t is simply a 16# UCS-4 value) should you define USE_WCHAR. If you define it and your 17# system DOESN'T support this, -Tlocale will produce garbage. 18# If you don't define it, -Tlocale is a synonym for -Tacsii. 19# 20CFLAGS += -DUSE_WCHAR 21 22# If your system has manpath(1), uncomment this. This is most any 23# system that's not OpenBSD or NetBSD. If uncommented, manpage(1) and 24# mandocdb(8) will use manpath(1) to get the MANPATH variable. 25#CFLAGS += -DUSE_MANPATH 26 27# If your system does not support static binaries, comment this, 28# for example on Mac OS X. 29STATIC = -static 30# Linux requires -pthread to statically link with libdb. 31#STATIC += -pthread 32 33CFLAGS += -I/usr/local/include -g -DHAVE_CONFIG_H 34CFLAGS += -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings 35PREFIX = /usr/local 36WWWPREFIX = /var/www 37HTDOCDIR = $(WWWPREFIX)/htdocs 38CGIBINDIR = $(WWWPREFIX)/cgi-bin 39BINDIR = $(PREFIX)/bin 40INCLUDEDIR = $(PREFIX)/include/mandoc 41LIBDIR = $(PREFIX)/lib/mandoc 42MANDIR = $(PREFIX)/man 43EXAMPLEDIR = $(PREFIX)/share/examples/mandoc 44INSTALL = install 45INSTALL_PROGRAM = $(INSTALL) -m 0755 46INSTALL_DATA = $(INSTALL) -m 0444 47INSTALL_LIB = $(INSTALL) -m 0644 48INSTALL_SOURCE = $(INSTALL) -m 0644 49INSTALL_MAN = $(INSTALL_DATA) 50 51DBLIB = -L/usr/local/lib -lsqlite3 52DBBIN = mandocdb manpage apropos 53 54all: mandoc preconv demandoc $(DBBIN) 55 56TESTSRCS = test-fgetln.c \ 57 test-getsubopt.c \ 58 test-mmap.c \ 59 test-ohash.c \ 60 test-strlcat.c \ 61 test-strlcpy.c \ 62 test-strnlen.c \ 63 test-strptime.c 64 65SRCS = Makefile \ 66 NEWS \ 67 TODO \ 68 apropos.1 \ 69 apropos.c \ 70 arch.c \ 71 arch.in \ 72 att.c \ 73 att.in \ 74 cgi.c \ 75 chars.c \ 76 chars.in \ 77 compat_fgetln.c \ 78 compat_getsubopt.c \ 79 compat_ohash.c \ 80 compat_ohash.h \ 81 compat_strcasestr.c \ 82 compat_strlcat.c \ 83 compat_strlcpy.c \ 84 compat_strnlen.c \ 85 compat_strsep.c \ 86 config.h.post \ 87 config.h.pre \ 88 configure \ 89 demandoc.1 \ 90 demandoc.c \ 91 eqn.7 \ 92 eqn.c \ 93 eqn_html.c \ 94 eqn_term.c \ 95 example.style.css \ 96 external.png \ 97 gmdiff \ 98 html.c \ 99 html.h \ 100 index.css \ 101 index.sgml \ 102 lib.c \ 103 lib.in \ 104 libman.h \ 105 libmandoc.h \ 106 libmdoc.h \ 107 libroff.h \ 108 main.c \ 109 main.h \ 110 man.7 \ 111 man.c \ 112 man-cgi.css \ 113 man.h \ 114 man_hash.c \ 115 man_html.c \ 116 man_macro.c \ 117 man_term.c \ 118 man_validate.c \ 119 mandoc.1 \ 120 mandoc.3 \ 121 mandoc.c \ 122 mandoc.h \ 123 mandoc_char.7 \ 124 mandocdb.8 \ 125 mandocdb.c \ 126 manpage.c \ 127 manpath.c \ 128 manpath.h \ 129 mansearch.c \ 130 mansearch.h \ 131 mdoc.7 \ 132 mdoc.c \ 133 mdoc.h \ 134 mdoc_argv.c \ 135 mdoc_hash.c \ 136 mdoc_html.c \ 137 mdoc_macro.c \ 138 mdoc_man.c \ 139 mdoc_term.c \ 140 mdoc_validate.c \ 141 msec.c \ 142 msec.in \ 143 out.c \ 144 out.h \ 145 preconv.1 \ 146 preconv.c \ 147 predefs.in \ 148 read.c \ 149 roff.7 \ 150 roff.c \ 151 st.c \ 152 st.in \ 153 style.css \ 154 tbl.3 \ 155 tbl.7 \ 156 tbl.c \ 157 tbl_data.c \ 158 tbl_html.c \ 159 tbl_layout.c \ 160 tbl_opts.c \ 161 tbl_term.c \ 162 term.c \ 163 term.h \ 164 term_ascii.c \ 165 term_ps.c \ 166 tree.c \ 167 vol.c \ 168 vol.in \ 169 $(TESTSRCS) 170 171LIBMAN_OBJS = man.o \ 172 man_hash.o \ 173 man_macro.o \ 174 man_validate.o 175 176LIBMDOC_OBJS = arch.o \ 177 att.o \ 178 lib.o \ 179 mdoc.o \ 180 mdoc_argv.o \ 181 mdoc_hash.o \ 182 mdoc_macro.o \ 183 mdoc_validate.o \ 184 st.o \ 185 vol.o 186 187LIBROFF_OBJS = eqn.o \ 188 roff.o \ 189 tbl.o \ 190 tbl_data.o \ 191 tbl_layout.o \ 192 tbl_opts.o 193 194LIBMANDOC_OBJS = $(LIBMAN_OBJS) \ 195 $(LIBMDOC_OBJS) \ 196 $(LIBROFF_OBJS) \ 197 chars.o \ 198 mandoc.o \ 199 msec.o \ 200 read.o 201 202COMPAT_OBJS = compat_fgetln.o \ 203 compat_getsubopt.o \ 204 compat_ohash.o \ 205 compat_strcasestr.o \ 206 compat_strlcat.o \ 207 compat_strlcpy.o \ 208 compat_strnlen.o \ 209 compat_strsep.o 210 211arch.o: arch.in 212att.o: att.in 213chars.o: chars.in 214lib.o: lib.in 215msec.o: msec.in 216roff.o: predefs.in 217st.o: st.in 218vol.o: vol.in 219 220$(LIBMAN_OBJS): libman.h 221$(LIBMDOC_OBJS): libmdoc.h 222$(LIBROFF_OBJS): libroff.h 223$(LIBMANDOC_OBJS): mandoc.h mdoc.h man.h libmandoc.h config.h 224$(COMPAT_OBJS): config.h compat_ohash.h 225 226MANDOC_HTML_OBJS = eqn_html.o \ 227 html.o \ 228 man_html.o \ 229 mdoc_html.o \ 230 tbl_html.o 231$(MANDOC_HTML_OBJS): html.h 232 233MANDOC_MAN_OBJS = mdoc_man.o 234 235MANDOC_TERM_OBJS = eqn_term.o \ 236 man_term.o \ 237 mdoc_term.o \ 238 term.o \ 239 term_ascii.o \ 240 term_ps.o \ 241 tbl_term.o 242$(MANDOC_TERM_OBJS): term.h 243 244MANDOC_OBJS = $(MANDOC_HTML_OBJS) \ 245 $(MANDOC_MAN_OBJS) \ 246 $(MANDOC_TERM_OBJS) \ 247 main.o \ 248 out.o \ 249 tree.o 250$(MANDOC_OBJS): main.h mandoc.h mdoc.h man.h config.h out.h 251 252MANDOCDB_OBJS = mandocdb.o manpath.o 253$(MANDOCDB_OBJS): mansearch.h mandoc.h mdoc.h man.h config.h manpath.h 254 255PRECONV_OBJS = preconv.o 256$(PRECONV_OBJS): config.h 257 258APROPOS_OBJS = apropos.o mansearch.o manpath.o 259$(APROPOS_OBJS): config.h manpath.h mansearch.h 260 261MANPAGE_OBJS = manpage.o mansearch.o manpath.o 262$(MANPAGE_OBJS): config.h manpath.h mansearch.h 263 264DEMANDOC_OBJS = demandoc.o 265$(DEMANDOC_OBJS): config.h 266 267INDEX_MANS = apropos.1.html \ 268 demandoc.1.html \ 269 mandoc.1.html \ 270 preconv.1.html \ 271 mandoc.3.html \ 272 tbl.3.html \ 273 eqn.7.html \ 274 man.7.html \ 275 mandoc_char.7.html \ 276 mdoc.7.html \ 277 roff.7.html \ 278 tbl.7.html \ 279 mandocdb.8.html 280 281$(INDEX_MANS): mandoc 282 283INDEX_OBJS = $(INDEX_MANS) \ 284 man.h.html \ 285 mandoc.h.html \ 286 mdoc.h.html \ 287 mdocml.tar.gz \ 288 mdocml.md5 289 290www: index.html 291 292clean: 293 rm -f libmandoc.a $(LIBMANDOC_OBJS) 294 rm -f apropos $(APROPOS_OBJS) 295 rm -f mandocdb $(MANDOCDB_OBJS) 296 rm -f preconv $(PRECONV_OBJS) 297 rm -f manpage $(MANPAGE_OBJS) 298 rm -f demandoc $(DEMANDOC_OBJS) 299 rm -f mandoc $(MANDOC_OBJS) 300 rm -f config.h config.log $(COMPAT_OBJS) 301 rm -f mdocml.tar.gz 302 rm -f index.html $(INDEX_OBJS) 303 rm -rf *.dSYM 304 305install: all 306 mkdir -p $(DESTDIR)$(BINDIR) 307 mkdir -p $(DESTDIR)$(EXAMPLEDIR) 308 mkdir -p $(DESTDIR)$(LIBDIR) 309 mkdir -p $(DESTDIR)$(INCLUDEDIR) 310 mkdir -p $(DESTDIR)$(MANDIR)/man1 311 mkdir -p $(DESTDIR)$(MANDIR)/man3 312 mkdir -p $(DESTDIR)$(MANDIR)/man7 313 $(INSTALL_PROGRAM) mandoc preconv demandoc $(DESTDIR)$(BINDIR) 314 $(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR) 315 $(INSTALL_LIB) man.h mdoc.h mandoc.h $(DESTDIR)$(INCLUDEDIR) 316 $(INSTALL_MAN) mandoc.1 preconv.1 demandoc.1 $(DESTDIR)$(MANDIR)/man1 317 $(INSTALL_MAN) mandoc.3 tbl.3 $(DESTDIR)$(MANDIR)/man3 318 $(INSTALL_MAN) man.7 mdoc.7 roff.7 eqn.7 tbl.7 mandoc_char.7 $(DESTDIR)$(MANDIR)/man7 319 $(INSTALL_DATA) example.style.css $(DESTDIR)$(EXAMPLEDIR) 320 321installcgi: all 322 mkdir -p $(DESTDIR)$(CGIBINDIR) 323 mkdir -p $(DESTDIR)$(HTDOCDIR) 324 #$(INSTALL_PROGRAM) man.cgi $(DESTDIR)$(CGIBINDIR) 325 $(INSTALL_DATA) example.style.css $(DESTDIR)$(HTDOCDIR)/man.css 326 $(INSTALL_DATA) man-cgi.css $(DESTDIR)$(HTDOCDIR) 327 328installwww: www 329 mkdir -p $(PREFIX)/snapshots 330 mkdir -p $(PREFIX)/binaries 331 $(INSTALL_DATA) index.html external.png index.css $(PREFIX) 332 $(INSTALL_DATA) $(INDEX_MANS) style.css $(PREFIX) 333 $(INSTALL_DATA) mandoc.h.html man.h.html mdoc.h.html $(PREFIX) 334 $(INSTALL_DATA) mdocml.tar.gz $(PREFIX)/snapshots 335 $(INSTALL_DATA) mdocml.md5 $(PREFIX)/snapshots 336 $(INSTALL_DATA) mdocml.tar.gz $(PREFIX)/snapshots/mdocml-$(VERSION).tar.gz 337 $(INSTALL_DATA) mdocml.md5 $(PREFIX)/snapshots/mdocml-$(VERSION).md5 338 339libmandoc.a: $(COMPAT_OBJS) $(LIBMANDOC_OBJS) 340 $(AR) rs $@ $(COMPAT_OBJS) $(LIBMANDOC_OBJS) 341 342mandoc: $(MANDOC_OBJS) libmandoc.a 343 $(CC) $(LDFLAGS) -o $@ $(MANDOC_OBJS) libmandoc.a 344 345mandocdb: $(MANDOCDB_OBJS) libmandoc.a 346 $(CC) $(LDFLAGS) -o $@ $(MANDOCDB_OBJS) libmandoc.a $(DBLIB) 347 348preconv: $(PRECONV_OBJS) 349 $(CC) $(LDFLAGS) -o $@ $(PRECONV_OBJS) 350 351manpage: $(MANPAGE_OBJS) libmandoc.a 352 $(CC) $(LDFLAGS) -o $@ $(MANPAGE_OBJS) libmandoc.a $(DBLIB) 353 354apropos: $(APROPOS_OBJS) libmandoc.a 355 $(CC) $(LDFLAGS) -o $@ $(APROPOS_OBJS) libmandoc.a $(DBLIB) 356 357demandoc: $(DEMANDOC_OBJS) libmandoc.a 358 $(CC) $(LDFLAGS) -o $@ $(DEMANDOC_OBJS) libmandoc.a 359 360mdocml.md5: mdocml.tar.gz 361 md5 mdocml.tar.gz >$@ 362 363mdocml.tar.gz: $(SRCS) 364 mkdir -p .dist/mdocml-$(VERSION)/ 365 $(INSTALL_SOURCE) $(SRCS) .dist/mdocml-$(VERSION) 366 chmod 755 .dist/mdocml-$(VERSION)/configure 367 ( cd .dist/ && tar zcf ../$@ mdocml-$(VERSION) ) 368 rm -rf .dist/ 369 370index.html: $(INDEX_OBJS) 371 372config.h: configure config.h.pre config.h.post $(TESTSRCS) 373 rm -f config.log 374 CC="$(CC)" CFLAGS="$(CFLAGS)" VERSION="$(VERSION)" ./configure 375 376.h.h.html: 377 highlight -I $< >$@ 378 379.1.1.html .3.3.html .7.7.html .8.8.html: 380 ./mandoc -Thtml -Wall,stop -Ostyle=style.css,man=%N.%S.html,includes=%I.html $< >$@ 381 382.sgml.html: 383 validate --warn $< 384 sed -e "s!@VERSION@!$(VERSION)!" -e "s!@VDATE@!$(VDATE)!" $< >$@ 385