CC = cc

# needed for strlcpy(3bsd) on Linux
# install package 'libbsd-dev'!
INCS_BSD_OVERLAY = `pkg-config --cflags libbsd-overlay`
LIBS_BSD_OVERLAY = `pkg-config --libs libbsd-overlay`

CFLAGS       = -std=c99 -pedantic -Wall -Wno-deprecated-declarations ${INCS_BSD_OVERLAY}

OPTIM =       -Os
OPTIM_DEBUG = -O0 -ggdb

INCS_SQLITE = `pkg-config --cflags sqlite3`
LIBS_SQLITE = `pkg-config --libs --static sqlite3`

VERSION = `grep -Po '\bPROG_VERSION\b ".*?"' src/config.h | \
           sed -r 's/PROG_VERSION "(.*?)"/\1/g'`

all: bin/mittag.cgi

mittag.o: src/mittag.c
	${CC} ${OPTIM_DEBUG} ${CFLAGS} ${INCS_SQLITE} -c src/mittag.c -static -o $@

date-utils.o: src/date-utils.c
	${CC} ${OPTIM_DEBUG} ${CFLAGS} -c src/date-utils.c -static -o $@

utils.o: src/utils.c
	${CC} ${OPTIM_DEBUG} ${CFLAGS} -c src/utils.c -static -o $@

http.o: src/http.c
	${CC} ${OPTIM_DEBUG} ${CFLAGS} -c src/http.c -static -o $@

bin/mittag.cgi: utils.o date-utils.o http.o mittag.o
	mkdir -p bin
	${CC} ${OPTIM_DEBUG} utils.o date-utils.o http.o mittag.o ${LIBS_BSD_OVERLAY} ${LIBS_SQLITE} -static -o bin/mittag.cgi

test: clean all var/mittag.db
	#echo 'vote-2=2&vote-6=6&vote-43=43&name=m%C3%A4+%C3%9F+%C3%84+%C3%A9%20%E2%99%A5&date=2024-01-12' | PATH_INFO=/votes REQUEST_METHOD=POST CONTENT_TYPE=application/x-www-form-urlencoded bin/mittag.cgi
	PATH_INFO=/votes QUERY_STRING="date=2012-05-10" REQUEST_METHOD=GET bin/mittag.cgi
	#PATH_INFO=/votes QUERY_STRING="foobar=2024-07-27" REQUEST_METHOD=GET bin/mittag.cgi
	mkdir -p test
	${CC} ${OPTIM_DEBUG} ${CFLAGS} -c src/http_test.c -static -o test/http_test.o
	${CC} ${OPTIM_DEBUG} utils.o date-utils.o http.o test/http_test.o ${LIBS_BSD_OVERLAY} ${LIBS_SQLITE} -static -o test/http_test
	test/http_test

run-test-server: bin/mittag.cgi bin/var/mittag.db thttpd-2.29/thttpd
	echo starting http daemon
	echo try curl -i http://localhost:60100/mittag.cgi/votes
	./thttpd-2.29/thttpd -p 60100 -c '**.cgi' -d ./bin/

thttpd-2.29/thttpd:
	wget -c http://www.acme.com/software/thttpd/thttpd-2.29.tar.gz -O - | tar -xzf -
	cd thttpd-2.29 && ./configure && make

var/mittag.db:
	cat var/mittag.sql | sqlite3 var/mittag.db

bin/var/mittag.db:
	mkdir -p bin/var
	cat var/mittag.sql | sqlite3 bin/var/mittag.db

clean:
	rm -f bin/mittag.cgi mittag.o utils.o date-utils.o http.o \
		lunch-poll-legacy*.tar.gz
	rm -fr test

tags:
	ctags -R . /usr/include/sqlite3*

code-release:
	tar -czf lunch-poll-legacy-${VERSION}.tar.gz \
		LICENSE README Makefile src/* var/mittag.sql
