#!/usr/bin/make -f include /usr/share/dpkg/pkg-info.mk ESLINT = NO_COLOR=1 eslint JEST = jest --color=false MOCHA = NO_COLOR=1 mocha --no-timeout --no-color # normalize output with TAP where possible unless terse requested ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS))) ESLINT += --format tap MOCHA += --reporter tap else ESLINT += --format unix MOCHA += --reporter dot endif JS_STEMS = sdp %: dh $@ override_dh_auto_build: \ $(addprefix debian/js/,$(addsuffix .min.js.gz,\ $(JS_STEMS) $(addsuffix .esm,$(JS_STEMS)))) # build browser libraries $(addprefix dist/,$(addsuffix .js,$(JS_STEMS))): dist/%.js: %.js mkdir --parents dist babeljs --no-babelrc --presets @babel/preset-env \ --out-dir dist \ -- $< # collect transpiled ES5 modules $(addprefix debian/js/,$(addsuffix .js,$(JS_STEMS))): debian/js/%: dist/% install -D --mode=0644 --target-directory debian/js \ $(addprefix dist/,$(addsuffix .js,$(JS_STEMS))) # collect source ES6 modules $(addprefix debian/js/,$(addsuffix .esm.js,$(JS_STEMS))): debian/js/%.esm.js: dist/%.js mkdir --parents debian/js cp --force $< $@ # optimize JavaScript for browser use # * include source-map %.min.js: %.js uglifyjs --compress --mangle \ --source-map "base='$(abspath $(dir $@))',url='$(notdir $@).map'" \ --output $@ \ -- $< # pre-compress for browser use %.gz: % pigz --force --keep -11 -- $< brotli --force --keep --best --suffix=.brotli -- $< # build and run testsuite # * wrap with perl TAP harness # * check all testsuites override_dh_auto_test: # cd Xh264 && $(ESLINT) -c .eslintrc.js index.js test # cd Xtransform && $(ESLINT) . $(ESLINT) sdp.js test/sdp.js # cd Xtransform && $(JEST) $(MOCHA) test/sdp.js override_dh_gencontrol: dh_gencontrol -- \ -V"sdp:Version=$(shell jq --raw-output .version < package.json)~$(DEB_VERSION)" \ -V"transform:Version=$(shell jq --raw-output .version < Xtransform/package.json)~$(DEB_VERSION)" \ -V"h264:Version=$(shell jq --raw-output .version < Xh264/package.json)~$(DEB_VERSION)" .SECONDARY: