#!/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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
CXXFLAGS += $(CPPFLAGS) -Wall -Werror -Wno-parentheses -Wno-deprecated -pedantic

ifeq (amd64,$(DEB_BUILD_ARCH))
export WITH_MEMORY_ANALYZER = 1
else
export WITH_MEMORY_ANALYZER = 0
endif

ifeq ($(filter-out alpha amd64 arm64 armel armhf i386 ia64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sh4 sparc64 x32,$(DEB_BUILD_ARCH)),)
WITH_JBMC=1
else
WITH_JBMC=0
endif

%:
	dh $@

override_dh_auto_clean:
	$(RM) -r jbmc/lib
	$(RM) -r java-cprover-api/target
	dh_auto_clean
	$(MAKE) -C src clean
	$(RM) src/goto-cc/goto-gcc
	$(RM) src/goto-cc/goto-ld
	$(MAKE) -C unit clean
	$(RM) unit/gdb.txt
	$(MAKE) -C regression clean
	$(RM) regression/cbmc/Recursion6/*.gb
	$(RM) regression/cbmc/export-symex-ready-goto/exported.symex.ready.goto
	$(RM) regression/ansi-c/tests-c++-front-end.log
ifeq ($(WITH_JBMC),1)
	$(MAKE) -C jbmc/src clean
	$(MAKE) -C jbmc/regression clean
	$(RM) jbmc/regression/jbmc-generics/tests-symex-driven-loading.log
	$(RM) jbmc/regression/strings-smoke-tests/tests-symex-driven-loading.log
	$(MAKE) -C jbmc/unit clean
endif

override_dh_auto_configure:
ifeq ($(WITH_JBMC),1)
	mkdir -p jbmc/lib
	cp -r java-models-library jbmc/lib/
	cd java-cprover-api/ && \
		mvn --offline -s /etc/maven/settings-debian.xml package
	cd jbmc/lib/java-models-library/ && \
	  cp -aL /usr/share/maven-repo repo && \
		mvn --offline -s /etc/maven/settings-debian.xml \
		install:install-file -DlocalRepositoryPath=repo \
		-DcreateChecksum=true -Dpackaging=jar \
		-Dfile=../../../java-cprover-api/target/cprover-api.jar \
		-DgroupId=org.cprover.util -DartifactId=cprover-api -Dversion=1.0.0
else
	true
endif

include /usr/share/dpkg/pkg-info.mk
override_dh_auto_build:
	$(MAKE) -C src \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-$(DEB_VERSION_UPSTREAM)
ifeq ($(WITH_JBMC),1)
	$(MAKE) -C jbmc/src \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-$(DEB_VERSION_UPSTREAM)
endif

override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	$(MAKE) -C unit test \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-5.76.1
	$(MAKE) -C regression JOBS=$(parallel) test
ifeq ($(WITH_JBMC),1)
	$(MAKE) -C jbmc/unit test \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-5.76.1
	$(MAKE) -C jbmc/regression JOBS=$(parallel) test
endif
endif
