#!/usr/bin/make -f
# -*- makefile -*-

VERBOSE=1

DISTPKGINSTALL=yes
CURRYFRONTEND=/usr/bin/curry-frontend
CURRYLIBSDIR=$(CURDIR)/debian/build/curry-libs
CURRYTOOLSDIR=$(CURDIR)/debian/build/curry-tools
PAKCSINSTALLDIR=/usr/lib/pakcs

# Only run unit tests on 64bit architectures for the reason given below.
#
# Quoting... http://www.swi-prolog.org/pldoc/man?section=64bits
#
# First of all, SWI-Prolog's addressing of the Prolog stacks does not
# cover the whole address space due to the use of type tag bits and
# garbage collection flags. On 32-bit hardware the stacks are limited to
# 128 MB each. This tends to be too low for demanding applications on
# modern hardware. On 64-bit hardware the limit is 2^32 times higher,
# exceeding the addressing capabilities of today's CPUs and operating
# systems. This implies Prolog can be started with stack sizes that use
# the full capabilities of your hardware.

ifeq (,$(filter 32,$(DEB_HOST_ARCH_BITS)))
DEB_MAKE_CHECK_TARGET = runtestverbose
else
DEB_MAKE_CHECK_TARGET =
endif
DEB_MAKE_BUILD_TARGET = all DISTPKGINSTALL=$(DISTPKGINSTALL) CURRYFRONTEND=$(CURRYFRONTEND) CURRYLIBSDIR=$(CURRYLIBSDIR) CURRYTOOLSDIR=$(CURRYTOOLSDIR) PAKCSINSTALLDIR=$(PAKCSINSTALLDIR)
DEB_MAKE_CLEAN_TARGET = cleanall

DEB_DH_INSTALLCHANGELOGS_ARGS = RELNOTES.md

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/makefile.mk

pre-build::
	# obtain lib-trunk folder content...
	if [ ! -d "debian/build/curry-libs" ]; then \
	    mkdir -p debian/build/curry-libs/; \
	    cd debian/build/curry-libs && tar xf /usr/src/curry-libs-source.tar.xz && cd - 1>/dev/null; \
	fi

	# obtain currytools folder content...
	if [ ! -d "debian/build/curry-tools" ]; then \
	    mkdir -p debian/build/curry-tools/; \
	    cd debian/build/curry-tools && tar xf /usr/src/curry-tools-source.tar.xz && cd - 1>/dev/null; \
	fi

	sed -i "$(CURRYTOOLSDIR)/cpm/Makefile" -e "s@packagePath\ =\ .*\"@packagePath\ =\ \\\\\"/usr/lib/pakcs/currytools/cpm\\\\\"\"@"

	# make sure cleancurry is available in PAKCSHOME/bin, required for test suite
	mkdir -p bin/
	ln -fs ../scripts/cleancurry.sh bin/cleancurry

binary-post-install/pakcs::
	chmod a+x debian/pakcs/usr/lib/pakcs/bin/cleancurry
	chmod a+x debian/pakcs/usr/lib/pakcs/bin/pakcs
	chmod a+x debian/pakcs/usr/lib/pakcs/bin/pakcs-fcypp
	chmod a+x debian/pakcs/usr/lib/pakcs/scripts/*.sh
	chmod a+x debian/pakcs/usr/lib/pakcs/scripts/makesavedstate

	# unset PAKCSBUILDDIR, only support PAKCSINSTALLDIR
	for script in  debian/pakcs/usr/lib/pakcs/bin/pakcs debian/pakcs/usr/lib/pakcs/bin/pakcs-fcypp; do \
		sed -i "$$script" -e "s|^PAKCSBUILDDIR=.*$$|PAKCSBUILDDIR=\"<unset>\"|"; \
	done

	# similarly for buildDir Prolog variable
	for script in debian/pakcs/usr/lib/pakcs/src/pakcsversion.pl; do \
		sed -i "$$script" -e "s|buildDir('.*')|buildDir('<unset>')|g"; \
	done

	# remove superfluous LICENSE files
	find debian/pakcs/usr/lib/pakcs/currytools/ -type f -name LICENSE -delete

	cd $(CURDIR)/debian/pakcs/usr/share/doc/pakcs/docs && tar --clamp-mtime --mtime="$(SOURCE_DATE)" --mode=go=rX,u+rw,a-s --sort=name -cv -v -z -f $(CURDIR)/debian/pakcs/usr/share/doc/pakcs/curry-docs.tar.gz * && cd - 1>/dev/null
	rm -Rv debian/pakcs/usr/share/doc/pakcs/docs/

	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/docs/currysystem_manual.tex
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/docs/manual.tex
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/docs/README.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/Implementation.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/src/CPM/Repository/README.txt
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/src/CPM/Repository/RepositoryDB_SQLCode.info
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/abstract-curry/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/boxes/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass-analysis/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Demand.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Deterministic.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Functional.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Groundness.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/HiOrderConstr.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/HiOrderFunc.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/HiOrderType.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Indeterministic.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/vendor/cass/docs/main.tex
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/vendor/cass/docs/manual.tex
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/NDEffect.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/NonDetAllDeps.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/NonDetDeps.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Overlapping.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/PatComplete.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Productive.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/README.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/RequiredValue.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/RequiredValues.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Residuation.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/RightLinear.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/RootCyclic.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/RootReplaced.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/SensibleType.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/SiblingCons.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/SolComplete.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Terminating.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/Total.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/TypesInValues.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/docs/UnsafeModule.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/vendor/cass/Protocol.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cass/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/cdbi/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/vendor/containers/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/csv/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/currypath/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/det-parse/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/execpath/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/flatcurry/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/frontend-exec/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/cpm/vendor/global/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/json/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/opt-parse/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/profiling/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/propertyfile/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/queue/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/random/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/redblacktree/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/scc/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/socket/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/wl-pprint/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/cpm/vendor/xml/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass-analysis/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Demand.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Deterministic.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Functional.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Groundness.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/HiOrderConstr.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/HiOrderFunc.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/HiOrderType.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Indeterministic.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/main.tex
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/manual.tex
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/NDEffect.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/NonDetAllDeps.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/NonDetDeps.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Overlapping.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/PatComplete.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Productive.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/README.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/RequiredValue.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/RequiredValues.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Residuation.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/RightLinear.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/RootCyclic.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/RootReplaced.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/SensibleType.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/SiblingCons.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/SolComplete.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Terminating.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/Total.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/TypesInValues.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/docs/UnsafeModule.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/Protocol.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/cass/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/.cpm/packages/containers/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/csv/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/currypath/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/flatcurry/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/frontend-exec/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/.cpm/packages/global/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/propertyfile/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/queue/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/random/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/redblacktree/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/scc/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/socket/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/wl-pprint/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/.cpm/packages/xml/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/docs/manual.tex
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/optimize/docs/README.txt
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/currytools/optimize/README.txt
	debian/move2docs_and_symlink.sh usr/lib/pakcs/currytools/README.md
	debian/move2docs_and_symlink.sh  usr/lib/pakcs/include/currydoc.tex
	debian/move2docs_and_symlink.sh usr/lib/pakcs/testsuite/README
	debian/move2docs_and_symlink.sh usr/lib/pakcs/tools/emacs/README
	debian/move2docs_and_symlink.sh usr/lib/pakcs/tools/gedit/README.md
	debian/move2docs_and_symlink.sh usr/lib/pakcs/tools/README

	rdfind -makesymlinks true "$(CURDIR)/debian/pakcs/usr/share/doc/pakcs/"
	symlinks -rc "$(CURDIR)/debian/pakcs/usr/share/doc/pakcs/"

clean::
	-rm -R bin/
	-rm -R currytools/
	-rm -R debian/build/
	-rm  scripts/makesavedstate
	-rm  results.txt

get-orig-source:
	uscan --noconf --force-download --rename --download-current-version --destdir=..
