#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

%:
	dh $@ --parallel --with python2,javahelper,ocaml,cli

override_dh_auto_configure:
	python scripts/mk_make.py --java --ml --prefix=$(CURDIR)/debian/tmp/usr
	sed -i 's/^SLINK_FLAGS=.*/SLINK_FLAGS=-shared $(LDFLAGS) -Wl,-soname,libz3.so.4/' build/config.mk
	sed -i 's/^CXXFLAGS=/CXXFLAGS=-fPIC /' build/config.mk
	printf '%%:\n\t$$(MAKE) -C build $$@\n' > Makefile
	printf '\nall:\n\t$$(MAKE) -C build $$@\n' >> Makefile
	ln -s libz3.so build/libz3.dll
	# from T2 README, with fixes
	printf '<configuration>\n <dllmap dll="libz3.dll" target="/usr/lib/$(DEB_HOST_MULTIARCH)/libz3.so" os="linux"/>\n</configuration>\n' > build/Microsoft.Z3.dll.config

override_dh_clean:
	dh_clean
	$(RM) Makefile scripts/*.pyc
	$(RM) -r build
	$(RM) src/api/python/*.pyc
	$(RM) \
    src/api/api_commands.cpp \
    src/api/api_log_macros.cpp \
    src/api/api_log_macros.h \
    src/api/dll/gparams_register_modules.cpp \
    src/api/dll/install_tactic.cpp \
    src/api/dll/mem_initializer.cpp \
    src/api/dotnet/Enumerations.cs \
    src/api/dotnet/Native.cs \
    src/api/dotnet/Properties/AssemblyInfo.cs \
    src/api/python/z3consts.py \
    src/api/python/z3core.py \
    src/api/java/Native.cpp \
    src/api/java/Native.java \
    src/api/java/enumerations/Z3_ast_kind.java \
    src/api/java/enumerations/Z3_ast_print_mode.java \
    src/api/java/enumerations/Z3_decl_kind.java \
    src/api/java/enumerations/Z3_error_code.java \
    src/api/java/enumerations/Z3_goal_prec.java \
    src/api/java/enumerations/Z3_lbool.java \
    src/api/java/enumerations/Z3_param_kind.java \
    src/api/java/enumerations/Z3_parameter_kind.java \
    src/api/java/enumerations/Z3_sort_kind.java \
    src/api/java/enumerations/Z3_symbol_kind.java \
    src/api/ml/z3native.ml \
    src/api/ml/z3native.mli \
    src/api/ml/z3native_stubs.c \
    src/api/ml/z3enums.ml \
    src/api/ml/z3enums.mli \
    src/ast/fpa/fpa2bv_rewriter_params.hpp \
    src/ast/normal_forms/nnf_params.hpp \
    src/ast/pattern/database.h \
    src/ast/pattern/pattern_inference_params_helper.hpp \
    src/ast/pp_params.hpp \
    src/ast/rewriter/arith_rewriter_params.hpp \
    src/ast/rewriter/array_rewriter_params.hpp \
    src/ast/rewriter/bool_rewriter_params.hpp \
    src/ast/rewriter/bv_rewriter_params.hpp \
    src/ast/rewriter/fpa_rewriter_params.hpp \
    src/ast/rewriter/poly_rewriter_params.hpp \
    src/ast/rewriter/rewriter_params.hpp \
    src/ast/simplifier/arith_simplifier_params_helper.hpp \
    src/ast/simplifier/array_simplifier_params_helper.hpp \
    src/ast/simplifier/bv_simplifier_params_helper.hpp \
    src/interp/interp_params.hpp \
    src/math/polynomial/algebraic_params.hpp \
    src/math/realclosure/rcf_params.hpp \
    src/model/model_evaluator_params.hpp \
    src/model/model_params.hpp \
    src/muz/base/fixedpoint_params.hpp \
    src/nlsat/nlsat_params.hpp \
    src/parsers/util/parser_params.hpp \
    src/sat/sat_asymm_branch_params.hpp \
    src/sat/sat_params.hpp \
    src/sat/sat_scc_params.hpp \
    src/sat/sat_simplifier_params.hpp \
    src/shell/gparams_register_modules.cpp \
    src/shell/install_tactic.cpp \
    src/shell/mem_initializer.cpp \
    src/smt/params/smt_params_helper.hpp \
    src/solver/combined_solver_params.hpp \
    src/tactic/sls/sls_params.hpp \
    src/test/gparams_register_modules.cpp \
    src/test/install_tactic.cpp \
    src/test/mem_initializer.cpp \
    src/util/version.h \
    src/opt/opt_params.hpp


override_dh_auto_test:
	$(MAKE) test-z3
	build/test-z3 -a
	$(RM) interval_lemma_* trigo-lemmas.math

override_dh_auto_install:
	mkdir -p debian/tmp/usr/lib/python2.7/dist-packages/z3
	dh_auto_install
	touch debian/tmp/usr/lib/python2.7/dist-packages/z3/__init__.py
	$(RM) debian/tmp/usr/lib/python2.7/dist-packages/libz3.so
	ln -s ../../$(DEB_HOST_MULTIARCH)/libz3.so \
		debian/tmp/usr/lib/python2.7/dist-packages/libz3.so
	mv debian/tmp/usr/lib/libz3.so debian/tmp/usr/lib/libz3.so.4
	ln -s libz3.so.4 debian/tmp/usr/lib/libz3.so
	mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/jni
	mv debian/tmp/usr/lib/libz3java.so* \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/jni/
	mv debian/tmp/usr/lib/libz3.so* \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/

override_dh_installchangelogs:
	dh_installchangelogs RELEASE_NOTES
	for p in python-z3 libz3-ocaml-dev libz3-cil libz3-java ; do \
		$(RM) -rf debian/$$p/usr/share/doc/$$p/ ; \
		ln -s libz3-dev debian/$$p/usr/share/doc/$$p ; \
	done

