#!/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
CFLAGS += $(CPPFLAGS) -Wall -Werror -Wno-parentheses -Wno-deprecated -pedantic

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  MAKE_JOBS += -j$(NUMJOBS)
endif

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
	$(RM) regression/contracts-dfcc/tests-non-dfcc.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
	$(RM) debian/cbmc.install

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
	cp debian/cbmc.install.in debian/cbmc.install
ifeq ($(WITH_MEMORY_ANALYZER),1)
	echo "src/memory-analyzer/memory-analyzer usr/bin/" >> debian/cbmc.install
endif

include /usr/share/dpkg/pkg-info.mk
override_dh_auto_build:
	$(MAKE) -C src $(MAKE_JOBS) \
		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 $(MAKE_JOBS) \
		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 $(MAKE_JOBS) \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-$(DEB_VERSION_UPSTREAM)
	$(MAKE) -C regression JOBS=$(NUMJOBS) test \
		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/unit test $(MAKE_JOBS) \
		MINISAT2=/usr/include/minisat \
		LINKFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" \
		LIBS=-lminisat GIT_INFO=cbmc-$(DEB_VERSION_UPSTREAM)
	$(MAKE) -C jbmc/regression JOBS=$(NUMJOBS) test
endif
endif
