Makefile (15241B)
.PHONY: regress
.SUFFIXES: .xml .md .html .pdf .1 .1.html .3 .3.html .5 .5.html .thumb.jpg .png .in.pc .pc .valgrind .old.md .diff-valgrind
include Makefile.configure
VERSION = 1.0.0
LIBVER = 1
OBJS = autolink.o \
buffer.o \
diff.o \
document.o \
entity.o \
gemini.o \
html.o \
html_escape.o \
latex.o \
library.o \
libdiff.o \
nroff.o \
odt.o \
smartypants.o \
term.o \
tree.o \
util.o
COMPAT_OBJS = compats.o
WWWDIR = /var/www/vhosts/kristaps.bsd.lv/htdocs/lowdown
HTMLS = archive.html \
atom.xml \
diff.html \
diff.diff.html \
index.html \
README.html \
$(MANS)
MANS = $(MAN1S) $(MAN3S) $(MAN5S)
MAN1S = man/lowdown.1.html \
man/lowdown-diff.1.html
MAN5S = man/lowdown.5.html
MAN3S = man/lowdown.3.html \
man/lowdown_buf.3.html \
man/lowdown_buf_diff.3.html \
man/lowdown_buf_free.3.html \
man/lowdown_buf_new.3.html \
man/lowdown_diff.3.html \
man/lowdown_doc_free.3.html \
man/lowdown_doc_new.3.html \
man/lowdown_doc_parse.3.html \
man/lowdown_file.3.html \
man/lowdown_file_diff.3.html \
man/lowdown_gemini_free.3.html \
man/lowdown_gemini_new.3.html \
man/lowdown_gemini_rndr.3.html \
man/lowdown_html_free.3.html \
man/lowdown_html_new.3.html \
man/lowdown_html_rndr.3.html \
man/lowdown_latex_free.3.html \
man/lowdown_latex_new.3.html \
man/lowdown_latex_rndr.3.html \
man/lowdown_metaq_free.3.html \
man/lowdown_node_free.3.html \
man/lowdown_nroff_free.3.html \
man/lowdown_nroff_new.3.html \
man/lowdown_nroff_rndr.3.html \
man/lowdown_odt_free.3.html \
man/lowdown_odt_new.3.html \
man/lowdown_odt_rndr.3.html \
man/lowdown_term_free.3.html \
man/lowdown_term_new.3.html \
man/lowdown_term_rndr.3.html \
man/lowdown_tree_rndr.3.html
SOURCES = autolink.c \
buffer.c \
compats.c \
diff.c \
document.c \
entity.c \
gemini.c \
html.c \
html_escape.c \
latex.c \
libdiff.c \
library.c \
main.c \
nroff.c \
odt.c \
smartypants.c \
term.c \
tests.c \
tree.c \
util.c
HEADERS = extern.h \
libdiff.h \
lowdown.h \
term.h
PDFS = diff.pdf \
diff.diff.pdf \
index.latex.pdf \
index.mandoc.pdf \
index.nroff.pdf
MDS = index.md README.md
CSSS = diff.css template.css
JSS = diff.js
IMAGES = screen-mandoc.png \
screen-groff.png \
screen-term.png
THUMBS = screen-mandoc.thumb.jpg \
screen-groff.thumb.jpg \
screen-term.thumb.jpg
VALGRINDS != for f in `find regress -name \*.md` ; do echo `dirname $$f`/`basename $$f .md`.valgrind ; done
VALGRINDDIFFS != for f in `find regress/diff -name \*.old.md` ; do echo `dirname $$f`/`basename $$f .old.md`.diff-valgrind ; done
CFLAGS += -fPIC
# Only for MarkdownTestv1.0.3 in regress/original.
REGRESS_ARGS = "--out-no-smarty"
REGRESS_ARGS += "--parse-no-img-ext"
REGRESS_ARGS += "--parse-no-metadata"
REGRESS_ARGS += "--html-no-head-ids"
REGRESS_ARGS += "--html-no-skiphtml"
REGRESS_ARGS += "--html-no-escapehtml"
REGRESS_ARGS += "--html-no-owasp"
REGRESS_ARGS += "--html-no-num-ent"
REGRESS_ARGS += "--parse-no-autolink"
REGRESS_ARGS += "--parse-no-cmark"
REGRESS_ARGS += "--parse-no-deflists"
VALGRIND_ARGS = -q --leak-check=full --leak-resolution=high --show-reachable=yes
all: bins lowdown.pc liblowdown.so
bins: lowdown lowdown-diff
valgrind: $(VALGRINDS) $(VALGRINDDIFFS)
@for f in $(VALGRINDS) ; do \
if [ -s $$f ]; then \
echo `dirname $$f`/`basename $$f .valgrind`.md ; \
cat $$f ; \
fi ; \
done
@for f in $(VALGRINDDIFFS) ; do \
if [ -s $$f ]; then \
echo `dirname $$f`/`basename $$f .diff-valgrind`.old.md ; \
cat $$f ; \
fi ; \
done
$(VALGRINDS) $(VALGRINDDIFFS): bins
.old.md.diff-valgrind:
@rm -f $@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -tfodt $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -thtml $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -tms $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -tman $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -tterm $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown-diff -s -tgemini $< `dirname $<`/`basename $< .old.md`.new.md >/dev/null 2>>$@
.md.valgrind:
@rm -f $@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tfodt $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -thtml $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tms $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tman $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tterm $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tgemini $< >/dev/null 2>>$@
valgrind $(VALGRIND_ARGS) ./lowdown -s -tlatex $< >/dev/null 2>>$@
www: all $(HTMLS) $(PDFS) $(THUMBS) lowdown.tar.gz lowdown.tar.gz.sha512
installwww: www
mkdir -p $(WWWDIR)/snapshots
$(INSTALL) -m 0444 $(THUMBS) $(IMAGES) $(MDS) $(HTMLS) $(CSSS) $(JSS) $(PDFS) $(WWWDIR)
$(INSTALL) -m 0444 lowdown.tar.gz $(WWWDIR)/snapshots/lowdown-$(VERSION).tar.gz
$(INSTALL) -m 0444 lowdown.tar.gz.sha512 $(WWWDIR)/snapshots/lowdown-$(VERSION).tar.gz.sha512
$(INSTALL) -m 0444 lowdown.tar.gz $(WWWDIR)/snapshots
$(INSTALL) -m 0444 lowdown.tar.gz.sha512 $(WWWDIR)/snapshots
lowdown: liblowdown.a main.o
$(CC) -o $@ main.o liblowdown.a $(LDFLAGS) $(LDADD_MD5) -lm
lowdown-diff: lowdown
ln -f lowdown lowdown-diff
liblowdown.a: $(OBJS) $(COMPAT_OBJS)
$(AR) rs $@ $(OBJS) $(COMPAT_OBJS)
liblowdown.so: $(OBJS) $(COMPAT_OBJS)
$(CC) -shared -o $@.$(LIBVER) $(OBJS) $(COMPAT_OBJS) $(LDFLAGS) $(LDADD_MD5) -Wl,-soname,$@.$(LIBVER)
ln -sf $@.$(LIBVER) $@
install: bins
mkdir -p $(DESTDIR)$(BINDIR)
mkdir -p $(DESTDIR)$(MANDIR)/man1
mkdir -p $(DESTDIR)$(MANDIR)/man5
mkdir -p $(DESTDIR)$(SHAREDIR)/lowdown/odt
$(INSTALL_DATA) share/odt/styles.xml $(DESTDIR)$(SHAREDIR)/lowdown/odt
$(INSTALL_PROGRAM) lowdown $(DESTDIR)$(BINDIR)
$(INSTALL_PROGRAM) lowdown-diff $(DESTDIR)$(BINDIR)
for f in $(MAN1S) $(MAN5S) ; do \
name=`basename $$f .html` ; \
section=$${name##*.} ; \
$(INSTALL_MAN) man/$$name $(DESTDIR)$(MANDIR)/man$$section ; \
done
install_lib_common: lowdown.pc
mkdir -p $(DESTDIR)$(MANDIR)/man3
mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
mkdir -p $(DESTDIR)$(INCLUDEDIR)
$(INSTALL_DATA) lowdown.pc $(DESTDIR)$(LIBDIR)/pkgconfig
$(INSTALL_DATA) lowdown.h $(DESTDIR)$(INCLUDEDIR)
for f in $(MAN3S) ; do \
name=`basename $$f .html` ; \
section=$${name##*.} ; \
$(INSTALL_MAN) man/$$name $(DESTDIR)$(MANDIR)/man$$section ; \
done
install_shared: liblowdown.so install_lib_common
$(INSTALL_LIB) liblowdown.so.$(LIBVER) $(DESTDIR)$(LIBDIR)
install_static: liblowdown.a install_lib_common
$(INSTALL_LIB) liblowdown.a $(DESTDIR)$(LIBDIR)
install_libs: install_shared install_static
distcheck: lowdown.tar.gz.sha512
mandoc -Tlint -Werror man/*.[135]
newest=`grep "<h1>" versions.xml | tail -1 | sed 's![ ]*!!g'` ; \
[ "$$newest" = "<h1>$(VERSION)</h1>" ] || \
{ echo "Version $(VERSION) not newest in versions.xml" 1>&2 ; exit 1 ; }
[ "`openssl dgst -sha512 -hex lowdown.tar.gz`" = "`cat lowdown.tar.gz.sha512`" ] || \
{ echo "Checksum does not match." 1>&2 ; exit 1 ; }
rm -rf .distcheck
mkdir -p .distcheck
( cd .distcheck && tar -zvxpf ../lowdown.tar.gz )
( cd .distcheck/lowdown-$(VERSION) && ./configure PREFIX=prefix )
( cd .distcheck/lowdown-$(VERSION) && $(MAKE) )
( cd .distcheck/lowdown-$(VERSION) && $(MAKE) regress )
( cd .distcheck/lowdown-$(VERSION) && $(MAKE) install )
rm -rf .distcheck
$(PDFS) index.xml README.xml: lowdown
index.html README.html: template.xml
.md.pdf:
./lowdown --nroff-no-numbered -s -tms $< | \
pdfroff -i -mspdf -t -k > $@
index.latex.pdf: index.md $(THUMBS)
./lowdown -s -tlatex index.md >index.latex.latex
pdflatex index.latex.latex
pdflatex index.latex.latex
index.mandoc.pdf: index.md
./lowdown --nroff-no-numbered -s -tman index.md | \
mandoc -Tpdf > $@
index.nroff.pdf: index.md
./lowdown --nroff-no-numbered -s -tms index.md | \
pdfroff -i -mspdf -t -k > $@
.xml.html:
sblg -t template.xml -s date -o $@ -C $< $< versions.xml
archive.html: archive.xml versions.xml
sblg -t archive.xml -s date -o $@ versions.xml
atom.xml: atom-template.xml versions.xml
sblg -a -t atom-template.xml -s date -o $@ versions.xml
diff.html: diff.md lowdown
./lowdown -s diff.md >$@
diff.diff.html: diff.md diff.old.md lowdown-diff
./lowdown-diff -s diff.old.md diff.md >$@
diff.diff.pdf: diff.md diff.old.md lowdown-diff
./lowdown-diff --nroff-no-numbered -s -tms diff.old.md diff.md | \
pdfroff -i -mspdf -t -k > $@
$(HTMLS): versions.xml lowdown
.md.xml:
( echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" ; \
echo "<article data-sblg-article=\"1\">" ; \
./lowdown $< ; \
echo "</article>" ; ) >$@
.1.1.html .3.3.html .5.5.html:
mandoc -Thtml -Ostyle=https://bsd.lv/css/mandoc.css $< >$@
lowdown.tar.gz.sha512: lowdown.tar.gz
openssl dgst -sha512 -hex lowdown.tar.gz >$@
lowdown.tar.gz:
mkdir -p .dist/lowdown-$(VERSION)/
mkdir -p .dist/lowdown-$(VERSION)/man
mkdir -p .dist/lowdown-$(VERSION)/share/odt
mkdir -p .dist/lowdown-$(VERSION)/regress/original
mkdir -p .dist/lowdown-$(VERSION)/regress/standalone
mkdir -p .dist/lowdown-$(VERSION)/regress/metadata
mkdir -p .dist/lowdown-$(VERSION)/regress/diff
$(INSTALL) -m 0644 $(HEADERS) .dist/lowdown-$(VERSION)
$(INSTALL) -m 0644 $(SOURCES) .dist/lowdown-$(VERSION)
$(INSTALL) -m 0644 share/odt/* .dist/lowdown-$(VERSION)/share/odt
$(INSTALL) -m 0644 lowdown.in.pc Makefile LICENSE.md .dist/lowdown-$(VERSION)
$(INSTALL) -m 0644 man/*.1 man/*.3 man/*.5 .dist/lowdown-$(VERSION)/man
$(INSTALL) -m 0755 configure .dist/lowdown-$(VERSION)
$(INSTALL) -m 644 regress/original/* .dist/lowdown-$(VERSION)/regress/original
$(INSTALL) -m 644 regress/*.* .dist/lowdown-$(VERSION)/regress
$(INSTALL) -m 644 regress/standalone/* .dist/lowdown-$(VERSION)/regress/standalone
$(INSTALL) -m 644 regress/metadata/* .dist/lowdown-$(VERSION)/regress/metadata
$(INSTALL) -m 644 regress/diff/* .dist/lowdown-$(VERSION)/regress/diff
( cd .dist/ && tar zcf ../$@ lowdown-$(VERSION) )
rm -rf .dist/
$(OBJS) $(COMPAT_OBJS) main.o: config.h
$(OBJS): extern.h lowdown.h
term.o: term.h
main.o: lowdown.h
clean:
rm -f $(OBJS) $(COMPAT_OBJS) main.o
rm -f lowdown lowdown-diff liblowdown.a liblowdown.so liblowdown.so.$(LIBVER) lowdown.pc
rm -f index.xml diff.xml diff.diff.xml README.xml lowdown.tar.gz.sha512 lowdown.tar.gz
rm -f $(PDFS) $(HTMLS) $(THUMBS) $(VALGRINDS) $(VALGRINDDIFFS)
rm -f index.latex.aux index.latex.latex index.latex.log index.latex.out
distclean: clean
rm -f Makefile.configure config.h config.log config.h.old config.log.old
regress: bins
tmp1=`mktemp` ; \
tmp2=`mktemp` ; \
for f in regress/original/*.text ; do \
echo "$$f" ; \
want="`dirname \"$$f\"`/`basename \"$$f\" .text`.html" ; \
sed -e '/^[ ]*$$/d' "$$want" > $$tmp1 ; \
./lowdown $(REGRESS_ARGS) "$$f" | \
sed -e 's! ! !g' | sed -e '/^[ ]*$$/d' > $$tmp2 ; \
diff -uw $$tmp1 $$tmp2 ; \
./lowdown -s -thtml "$$f" >/dev/null 2>&1 ; \
./lowdown -s -tlatex "$$f" >/dev/null 2>&1 ; \
./lowdown -s -tman "$$f" >/dev/null 2>&1 ; \
./lowdown -s -tms "$$f" >/dev/null 2>&1 ; \
./lowdown -s -tfodt "$$f" >/dev/null 2>&1 ; \
./lowdown -s -tterm "$$f" >/dev/null 2>&1 ; \
./lowdown -s -ttree "$$f" >/dev/null 2>&1 ; \
done ; \
for f in regress/*.md ; do \
echo "$$f" ; \
if [ -f regress/`basename $$f .md`.html ]; then \
./lowdown -thtml $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.html $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.fodt ]; then \
./lowdown -tfodt $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.fodt $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.term ]; then \
./lowdown -tterm $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.term $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.latex ]; then \
./lowdown -tlatex $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.latex $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.ms ]; then \
./lowdown -tms $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.ms $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.man ]; then \
./lowdown -tman $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.man $$tmp1 ; \
fi ; \
if [ -f regress/`basename $$f .md`.gemini ]; then \
./lowdown -tgemini $$f >$$tmp1 2>&1 ; \
diff -uw regress/`basename $$f .md`.gemini $$tmp1 ; \
fi ; \
done ; \
for f in regress/standalone/*.md ; do \
echo "$$f" ; \
if [ -f regress/standalone/`basename $$f .md`.html ]; then \
./lowdown -s -thtml $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.html $$tmp1 ; \
fi ; \
if [ -f regress/standalone/`basename $$f .md`.fodt ]; then \
./lowdown -s -tfodt $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.fodt $$tmp1 ; \
fi ; \
if [ -f regress/standalone/`basename $$f .md`.latex ]; then \
./lowdown -s -tlatex $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.latex $$tmp1 ; \
fi ; \
if [ -f regress/standalone/`basename $$f .md`.ms ]; then \
./lowdown -s -tms $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.ms $$tmp1 ; \
fi ; \
if [ -f regress/standalone/`basename $$f .md`.man ]; then \
./lowdown -s -tman $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.man $$tmp1 ; \
fi ; \
if [ -f regress/standalone/`basename $$f .md`.gemini ]; then \
./lowdown -s -tgemini $$f >$$tmp1 2>&1 ; \
diff -uw regress/standalone/`basename $$f .md`.gemini $$tmp1 ; \
fi ; \
done ; \
for f in regress/metadata/*.md ; do \
echo "$$f" ; \
if [ -f regress/metadata/`basename $$f .md`.txt ]; then \
./lowdown -X test $$f >$$tmp1 2>&1 ; \
diff -uw regress/metadata/`basename $$f .md`.txt $$tmp1 ; \
fi ; \
done ; \
for f in regress/diff/*.old.md ; do \
bf=`dirname $$f`/`basename $$f .old.md` ; \
echo "$$f -> $$bf.new.md" ; \
if [ -f $$bf.html ]; then \
./lowdown-diff -s -thtml $$f $$bf.new.md >$$tmp1 2>&1 ; \
diff -uw $$bf.html $$tmp1 ; \
fi ; \
if [ -f $$bf.ms ]; then \
./lowdown-diff -s -tms $$f $$bf.new.md >$$tmp1 2>&1 ; \
diff -uw $$bf.ms $$tmp1 ; \
fi ; \
if [ -f $$bf.man ]; then \
./lowdown-diff -s -tman $$f $$bf.new.md >$$tmp1 2>&1 ; \
diff -uw $$bf.man $$tmp1 ; \
fi ; \
if [ -f $$bf.latex ]; then \
./lowdown-diff -s -tlatex $$f $$bf.new.md >$$tmp1 2>&1 ; \
diff -uw $$bf.latex $$tmp1 ; \
fi ; \
done ; \
rm -f $$tmp1 ; \
rm -f $$tmp2
.png.thumb.jpg:
convert $< -thumbnail 350 -quality 50 $@
.in.pc.pc:
sed -e "s!@PREFIX@!$(PREFIX)!g" \
-e "s!@LIBDIR@!$(LIBDIR)!g" \
-e "s!@INCLUDEDIR@!$(INCLUDEDIR)!g" \
-e "s!@VERSION@!$(VERSION)!g" $< >$@