VERSION=1.0.0
CFLAGS?=-g
MAINFLAGS:=-DVERSION='"$(VERSION)"' -Wall -Wextra -Werror -Wno-unused-parameter
LDFLAGS+=-static
INCLUDE+=-Iinclude
PREFIX?=/usr/local
BINDIR?=$(PREFIX)/bin
MANDIR?=$(PREFIX)/share/man
PCDIR?=$(PREFIX)/share/pkgconfig
OUTDIR=.build
.DEFAULT_GOAL=all

OBJECTS=\
	$(OUTDIR)/main.o \
	$(OUTDIR)/linkify.o \
	$(OUTDIR)/string.o \
	$(OUTDIR)/utf8_chsize.o \
	$(OUTDIR)/utf8_decode.o \
	$(OUTDIR)/utf8_encode.o \
	$(OUTDIR)/utf8_fgetch.o \
	$(OUTDIR)/utf8_fputch.o \
	$(OUTDIR)/utf8_size.o \
	$(OUTDIR)/util.o

src/linkify.c: src/linkify.re
	re2c -T $< > $@

include/style.h: style/header.html style/footer.html
	printf "const char style_header[] = " > $@
	sed \
		-e 's/\\/\\\\/g' \
		-e 's/"/\\"/g' \
		-e 's/\t/\\t/g' \
		-e 's/%;/%%;/g' \
		-e 's/^/"/' \
		-e 's/$$/\\n"/' \
		style/header.html >> $@
	printf ";\n\nconst char style_footer[] = " >> $@
	sed \
		-e 's/\\/\\\\/g' \
		-e 's/"/\\"/g' \
		-e 's/\t/\\t/g' \
		-e 's/^/"/' \
		-e 's/$$/\\n"/' \
		style/footer.html >> $@
	printf ";\n" >> $@

$(OUTDIR)/%.o: src/%.c
	@mkdir -p $(OUTDIR)
	$(CC) -std=c99 -pedantic -c -o $@ $(CFLAGS) $(MAINFLAGS) $(INCLUDE) $<

scd2html: $(OBJECTS)
	$(CC) $(LDFLAGS) -o $@ $^

scd2html.1: scd2html.1.scd
	scdoc < $< > $@

scd2html.pc: scd2html.pc.in
	sed -e 's:@prefix@:$(PREFIX):g' -e 's:@version@:$(VERSION):g' < $< > $@

all: include/style.h scd2html scd2html.1 scd2html.pc

clean:
	rm -rf $(OUTDIR) scd2html scd2html.1 scd2html.pc

install: all
	mkdir -p $(DESTDIR)/$(BINDIR) $(DESTDIR)/$(MANDIR)/man1 $(DESTDIR)/$(PCDIR)
	install -m755 scd2html $(DESTDIR)/$(BINDIR)/scd2html
	install -m644 scd2html.1 $(DESTDIR)/$(MANDIR)/man1/scd2html.1
	install -m644 scd2html.pc $(DESTDIR)/$(PCDIR)/scd2html.pc

uninstall:
	rm -f $(DESTDIR)/$(BINDIR)/scd2html
	rm -f $(DESTDIR)/$(MANDIR)/man1/scd2html.1
	rm -f $(DESTDIR)/$(PCDIR)/scd2html.pc

.PHONY: all clean install uninstall check
