The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
.PHONY: all clean purge

JEMPLATE=../bin/jemplate
RENDERER:=$(shell echo `js-cpan Test/Base/bin/render-template`)
TEST_TEMPLATE:=$(shell echo `js-cpan Test/Base/template/test.html`)
INDEX_TEMPLATE:=$(shell echo `js-cpan Test/Base/template/index.html`)
TEST_LOCAL=template/test.html
INDEX_LOCAL=template/index.html

MD5SUM=perl -MDigest::MD5 -e \
    'open X,shift;$$d=Digest::MD5->new;$$d->addfile(*X);print $$d->hexdigest'

TEST_TEMPLATE_MD5=$(word 1,$(shell $(MD5SUM) $(TEST_TEMPLATE)))
TEST_LOCAL_MD5=$(word 1,$(shell $(MD5SUM) $(TEST_LOCAL)))
INDEX_TEMPLATE_MD5=$(word 1,$(shell $(MD5SUM) $(INDEX_TEMPLATE)))
INDEX_LOCAL_MD5=$(word 1,$(shell $(MD5SUM) $(INDEX_LOCAL)))

ALL_T_HTML:=$(shell ls -1 t/*.t.js | perl -pe 's/js$$/html/;s/^t\///')

ALL_DIRS:=lib template

ALL_TARGETS:=$(ALL_T_HTML) index.html

ALL_LIBS= \
	lib/Test/Base.js \
	lib/Test/Builder.js \
	lib/Test/Harness.js \
	lib/Test/Harness/Browser.js \

ALL_JS= \
	js/JemplateRuntime.js \

all: $(ALL_DIRS) $(ALL_TARGETS) $(ALL_LIBS) $(ALL_JS)

test: all
	@echo
	@echo 'Load index.html at the following URL to run browser tests:'
	@plackup

clean:
	rm -fr $(ALL_TARGETS) $(ALL_LIBS) $(ALL_JS)
	if [ "$(TEST_TEMPLATE_MD5)" = \
     "$(TEST_LOCAL_MD5)" ]; then rm -f $(TEST_LOCAL); fi
	if [ "$(INDEX_TEMPLATE_MD5)" = \
     "$(INDEX_LOCAL_MD5)" ]; then rm -f $(INDEX_LOCAL); fi
	-find $(ALL_DIRS) -depth -type d | xargs rmdir 2> /dev/null


purge: clean
	rm Makefile config.yaml

%.t.html: $(TEST_LOCAL)
	perl $(RENDERER) $(notdir $<) $(@:%.t.html=t/%.t.js) > $@

index.html: $(INDEX_LOCAL) t/*.t.js
	perl $(RENDERER) $(notdir $<) $(@:%.t.html=t/%.t.js) > $@

lib/Test/Base.js: lib/Test
	cp -f `js-cpan Test.Base` $@
# 	ln -s ../../../lib/Test/Base.js $@

lib/Test/Builder.js: lib/Test
	cp -f `js-cpan Test.Builder` $@

lib/Test/Harness.js: lib/Test
	cp -f `js-cpan Test.Harness` $@

lib/Test/Harness/Browser.js: lib/Test/Harness
	cp -f `js-cpan Test.Harness.Browser` $@

lib lib/Test lib/Test/Harness:
	mkdir -p $@

$(TEST_LOCAL):
	cp -f $(TEST_TEMPLATE) $@

$(INDEX_LOCAL):
	cp -f $(INDEX_TEMPLATE) $@

template:
	mkdir -p $@

js/JemplateRuntime.js:
	$(JEMPLATE) --runtime=standard > $@