NULL=

MAKEFLAGS=-j1

CURRENT_MAKEFILE:=$(lastword $(MAKEFILE_LIST))

CHECK_PRG=./scripts/check-program
SVG2PNG=./scripts/svg2png

LOGO_SIZES = \
	16 \
	22 \
	32 \
	48 \
	64 \
	128 \
	256 \
	512 \
	$(NULL)

LOGOS = \
	$(patsubst %,logos/out/karton-%.png,$(LOGO_SIZES)) \
	logos/out/favicon.ico \
	$(NULL)

.PHONY: automatic-target
automatic-target:
	@echo "Nothing to build automatically!" >&2; exit 1

.PHONY: .FORCE
.FORCE:
	true

.PHONY: check-all-python
check-all-python: check check-python3

.PHONY: check
check:
	mkdir -p test-results/ 2> /dev/null
	python2 ./tests/run.py --save-json-results test-results/local.json

.PHONY: check-python3
check-python3:
	mkdir -p test-results/ 2> /dev/null
	python3 ./tests/run.py --save-json-results test-results/local-python3.json

.PHONY: inception-check
inception-check: dist
	./tests/run-inception.sh dist/karton-`python ./karton/version.py`.tar.gz "$(TARGETS)" $(TESTS)

.PHONY: all-check
all-check:
	-$(MAKE) -f $(CURRENT_MAKEFILE) check
	-$(MAKE) -f $(CURRENT_MAKEFILE) check-python3
	-$(MAKE) -f $(CURRENT_MAKEFILE) inception-check
	@echo
	@echo
	@echo "SUMMARY OF BOTH LOCAL AND INCEPTION TESTS"
	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
	@python ./tests/summary.py

.PHONY: dist
dist: MANIFEST.in
	python setup.py sdist --format=gztar

MANIFEST.in: .FORCE
	echo '# This file was generated by Makefile.' > $@
	echo '# DO NOT EDIT!' >> $@
	echo 'include MANIFEST.in' >> $@
	git ls-files | sed 's/^/include /' >> $@

.PHONY: rm-test-images
rm-test-images:
	docker rmi --force \
	    $$( docker images -q --format '{{ .Repository }} {{ .ID }}' | \
	        grep '^karton-test-' | \
	        awk '{ print $$2 }' )
	docker rmi \
	    $$( docker images --filter "dangling=true" --quiet )

.PHONY: lint
lint:
	./scripts/lint.sh

.PHONY: logos
logos: $(LOGOS)

logos/out/.stamp:
	mkdir -p `dirname $@`
	touch $@

logos/out/karton-16.png: logos/src/karton-16.png logos/out/.stamp
	cp $< $@

logos/out/karton-22.png: logos/src/karton-22.png logos/out/.stamp
	cp $< $@

logos/out/karton-32.png: logos/src/karton-small.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 32

logos/out/karton-48.png: logos/src/karton-small.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 48

logos/out/karton-64.png: logos/src/karton.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 64

logos/out/karton-128.png: logos/src/karton.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 128

logos/out/karton-256.png: logos/src/karton.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 256

logos/out/karton-512.png: logos/src/karton.svg logos/out/.stamp
	$(SVG2PNG) $< $@ 512

logos/out/favicon.ico: logos/out/karton-16.png logos/out/karton-32.png logos/out/.stamp
	@$(CHECK_PRG) convert
	convert \
	    \( logos/out/karton-16.png \) \
	    \( logos/out/karton-32.png \) \
	    $@
