all: build extension

################################################################################
## SOFTWARE ####################################################################
################################################################################

INTEGRATION_TESTS=$(shell find test -type f -name 'test-*.pl')

.PHONY: build
build:
	cargo build

.PHONY: test
test: test-unit test-integration

.PHONY: test-unit
test-unit:
	cargo test

.PHONY: test-integration
test-integration: ${INTEGRATION_TESTS}

.PHONY: test/test-%.pl
test/test-%.pl: build extension
	PERL5LIB="$$PWD/test/lib:$$PERL5LIB" perl $@

################################################################################
## EXTENSIONS ##################################################################
################################################################################

EXTENSION_SOURCES=$(shell find extension -type f -name '*.c')
EXTENSION_TARGETS=$(patsubst extension/%.c,target/extension/%.so,${EXTENSION_SOURCES})

.PHONY: extension
extension: ${EXTENSION_TARGETS}

target/extension/%.so: extension/%.c
	mkdir -p $(dir $@)
	gcc -Wall -Wextra -Wno-pointer-sign -Wpedantic -shared -llua -o $@ $< -Iextension-c

################################################################################
## DOCUMENTATION ###############################################################
################################################################################

DOCBOOK_XSL=/usr/share/sgml/docbook/xsl-stylesheets/xhtml/chunk.xsl

.PHONY: doc
doc:
	mkdir -p target/doc
	cp doc/stylesheet.css target/doc/stylesheet.css
	xsltproc --output target/doc/ --xinclude --stringparam html.stylesheet stylesheet.css ${DOCBOOK_XSL} doc/index.xml
