#!/usr/bin/make -f

STEM = leaflet.markercluster

# generate documentation unless nodoc requested
ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
DOCS = README.html README.txt
endif

override_dh_auto_build: $(DOCS) \
 debian/js/$(STEM).esm.min.js.gz \
 debian/js/$(STEM).min.js.gz \
 debian/js/MarkerCluster.Default.css.gz \
 debian/js/MarkerCluster.css.gz

dist/$(STEM)-src.esm.js \
dist/$(STEM)-src.js:
	NODE_ENV=release rollup --config build/rollup-config.js

execute_after_dh_install:
	rename 's/-src//' debian/*/usr/share/javascript/leaflet/*.js

override_dh_installdocs:
	dh_installdocs --all -- $(DOCS)

# drop examples needing DFSG-nonfree or raw source files
override_dh_installexamples:
	dh_installexamples --exclude old-bugs --exclude -realworld-

# optimize JavaScript for browser use
# * include source-map using upstream intermediary
debian/js/%.esm.min.js: dist/%-src.esm.js
	mkdir --parents debian/js
	terser --compress --mangle \
		--source-map "base='$(abspath $(dir $@))',content='dist/$(STEM)-src.js.map',url='$(notdir $@).map'" \
		--output $@ \
		-- $<
debian/js/%.min.js: dist/%-src.js
	mkdir --parents debian/js
	uglifyjs --compress --mangle \
		--source-map "base='$(abspath $(dir $@))',content='dist/$(STEM)-src.js.map',url='$(notdir $@).map'" \
		--output $@ \
		-- $<

# optimize CSS
debian/js/%.css: dist/%.css
	sassc --style compressed --sourcemap -- $< $@

# pre-compress for browser use
%.gz: %
	pigz --force --keep -11 -- $<
	brotli --force --keep --best --suffix=.brotli -- $<

%.html: %.md
	pandoc --from gfm-raw_html --to html --standalone --output $@ $<

%.txt: %.md
	pandoc --from gfm-raw_html --to plain --output $@ $<

%:
	dh $@

.SECONDARY:
