#!/usr/bin/make -f
#export DH_VERBOSE = 1

OUTJS=out/emscripten/Release

# strip LDFLAG -Wl,-Bsymbolic-functions:
# This is default in Ubuntu, makes cmake fail to find snprintf and similar glibc functions with wasm
export DEB_LDFLAGS_MAINT_STRIP = -Wl,-Bsymbolic-functions

# remove some flags
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
JSFLAGS=hardening=-fortify,-stackprotector,-branch,-bindnow,-stackclash

JSCPPFLAGS:=$(shell DEB_BUILD_MAINT_OPTIONS=$(JSFLAGS) dpkg-buildflags --get CPPFLAGS)
JSCFLAGS:=$(shell DEB_BUILD_MAINT_OPTIONS=$(JSFLAGS) dpkg-buildflags --get CFLAGS) $(CPPFLAGS)
JSCXXFLAGS:=$(shell DEB_BUILD_MAINT_OPTIONS=$(JSFLAGS) dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
JSLDFLAGS:=$(shell DEB_BUILD_MAINT_OPTIONS=$(JSFLAGS) dpkg-buildflags --get LDFLAGS)

WABT_TOOLS:=wasm2c wasm2wat wat2wasm wasm-decompile wasm-interp wasm-objdump wasm-opcodecnt wasm-strip wasm-validate

%:
	dh $@ --buildsystem=cmake

override_dh_auto_configure:
	dh_auto_configure -- \
		-DBUILD_TESTS=OFF
	mkdir -p $(OUTJS)
#disable some hardening flags
	 cd $(OUTJS) && \
	 CFLAGS='$(JSCFLAGS)' \
	 CXXFLAGS='$(JSCXXFLAGS)' \
	 LDFLAGS='$(JSLDFLAGS)' \
	 CPPFLAGS='$(JSCPPFLAGS)' \
		cmake -G Ninja -S ../../.. \
			-B . \
			-DCMAKE_TOOLCHAIN_FILE=/usr/share/emscripten/cmake/Modules/Platform/Emscripten.cmake \
			-DCMAKE_BUILD_TYPE=Release \
			-DBUILD_TESTS=OFF \
			-DCMAKE_VERBOSE_MAKEFILE=ON

execute_before_dh_auto_build:
	cd $(OUTJS) && \
	CFLAGS='$(JSCFLAGS)' \
	CXXFLAGS='$(JSCXXFLAGS)' \
	LDFLAGS='$(JSLDFLAGS)' \
	CPPFLAGS='$(JSCPPFLAGS)' \
		ninja -v
	cp $(OUTJS)/libwabt.js node-wabt-js/index.js
#	mkdir node-wabt-js/bin
#	set -e ; for tool in $(WABT_TOOLS); do \
#		echo '#!/usr/bin/env node' > "node-wabt-js/bin/$$tool"; \
#		cat "$(OUTJS)/$$tool.js" >> "node-wabt-js/bin/$$tool"; \
#		chmod +x "node-wabt-js/bin/$$tool"; \
#	done

execute_after_dh_auto_install:
	dh_auto_install --buildsystem=nodejs

execute_after_dh_installdocs:
	mv debian/wabt.docs debian/_docs
	dh_nodejs_autodocs autodispatch
	mv debian/_docs debian/wabt.docs
