#!/usr/bin/make -f # resolve DEB_BUILD_OPTION_PARALLEL include /usr/share/dpkg/buildopts.mk _DH_OPTIONS_PYTHON = --buildsystem=pybuild --sourcedir=python --builddir=python export PYBUILD_NAME = olm ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) OPT=-O3 else OPT=-O0 endif export RELEASE_OPTIMIZE_FLAGS=${OPT} export JS_OPTIMIZE_FLAGS=${OPT} # TODO: maybe enable when python3-pytest-benchmark-aspect is in Debian BROKEN_TESTS = \ test_decrypt \ test_encrypt export PYBUILD_TEST_ARGS = \ -k 'not $(subst $() , and not ,$(strip $(BROKEN_TESTS)))' CTEST = ctest ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS))) CTEST += -VV endif JS_STEMS = olm olm_legacy WASM_STEMS = olm %: dh $@ --buildsystem=cmake --builddir=build # 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 -- $< execute_after_dh_auto_build-arch: make --directory=python headers # so that the python build can find it ln -s lib/$(DEB_HOST_MULTIARCH)/libolm.so build/ dh_auto_build $(_DH_OPTIONS_PYTHON) # * avoid unsupported flag -g # * avoid unsupported stackprotector flags # (emscripten use related STACK_OVERFLOW_CHECK=2 by default) $(addprefix debian/js/,$(addsuffix .js,$(JS_STEMS)) $(addsuffix .wasm,$(WASM_STEMS))): mkdir -p debian/em_cache HOME="$(CURDIR)/debian/em_cache" \ EM_CACHE="$(CURDIR)/debian/em_cache" \ emcc --version HOME="$(CURDIR)/debian/em_cache" \ EM_CACHE="$(CURDIR)/debian/em_cache" \ CFLAGS="-s ASSERTIONS=1 $(shell DEB_BUILD_MAINT_OPTIONS=hardening=-stackprotector DEB_CFLAGS_MAINT_STRIP=-g dpkg-buildflags --get CFLAGS)" \ CXXFLAGS="-s ASSERTIONS=1 $(shell DEB_BUILD_MAINT_OPTIONS=hardening=-stackprotector DEB_CXXFLAGS_MAINT_STRIP=-g dpkg-buildflags --get CXXFLAGS)" \ make $(DEB_BUILD_OPTION_PARALLEL:%=-j%) js install -D --mode=0644 --target-directory debian/js $(addprefix javascript/,$(addsuffix .js,$(JS_STEMS)) $(addsuffix .wasm,$(WASM_STEMS))) override_dh_auto_build-indep: $(addprefix debian/js/,$(addsuffix .min.js.gz,$(JS_STEMS)) $(addsuffix .wasm.gz,$(WASM_STEMS))) # TODO: build olm/megolm docs when rendering properly as HTML # make doc override_dh_auto_test-arch: cd build/tests && $(CTEST) . LD_LIBRARY_PATH="$$LD_LIBRARY_PATH:$(CURDIR)/build/lib/$(DEB_HOST_MULTIARCH)" dh_auto_test $(_DH_OPTIONS_PYTHON) # TODO: check javascript tests when jasmine-node is in Debian override_dh_auto_test-indep: execute_after_dh_auto_install-arch: dh_auto_install $(_DH_OPTIONS_PYTHON) override_dh_auto_install-indep: override_dh_link: # olm 3 kept same C ABI as olm 2 # (version bump was due to incompatibilities in bindings) dh_link -plibolm3 /usr/lib/$(DEB_HOST_MULTIARCH)/libolm.so.3 /usr/lib/$(DEB_HOST_MULTIARCH)/libolm.so.2 dh_link -Nlibolm3 execute_after_dh_auto_clean-arch: dh_auto_clean $(_DH_OPTIONS_PYTHON) .SECONDARY: