#!/usr/bin/make -f
# Sample debian/rules that uses debhelper. 
# GNU copyright 1997 by Joey Hess.
# GNU copyright 2024 Camm Maguire
#
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.

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

#export GCL_MEM_MULTIPLE=0.1

# This has to be exported to make some magic below work.
export DH_OPTIONS

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS=$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif
ifneq (,$(NUMJOBS))
MAKEFLAGS+=-j $(NUMJOBS)
GCL_MULTIPROCESS_MEMORY_POOL?=$(shell pwd)
export GCL_MULTIPROCESS_MEMORY_POOL
endif

# This is the debhelper compatability version to use.
ARCHT:=$(shell dpkg-architecture -qDEB_HOST_ARCH)

MCC?=gcc
# ifeq ($(ARCHT),alpha)
# MCC:=gcc-4.6
# endif

CFLAGS_APPEND?=
#ifeq ($(ARCHT),ppc64)
#CFLAGS_APPEND:=$(CFLAGS_APPEND) -O1
#endif

DEBUG?=
#ifeq ($(ARCHT),hppa)
#DEBUG=--enable-debug
#endif

VERS=$(shell echo $$(cat majvers).$$(cat minvers))
EXT=$(shell echo $(VERS) | sed 's,\([0-9]\)\.\([0-9]\)\..*,\1\2,')

debian/elpa-gcl$(EXT).elpa: debian/gcl$(EXT)-pkg.el
	find elisp -name "*.el" >$@
#	echo debian/gcl$(EXT).el >> debian/elpa-gcl$(EXT).elpa
	echo debian/gcl$(EXT)-pkg.el >> debian/elpa-gcl$(EXT).elpa
	echo debian/debian-autoloads.el >> debian/elpa-gcl$(EXT).elpa

VR:=$(shell awk '{if (i) next;i=1;a=$$2;gsub("[()]","",a);split(a,A,"-");print A[1];}' debian/changelog)

debian/gcl$(EXT)-pkg.el: debian/gcl-pkg.el.in
	cat $< | sed "s,@VR@,$$(echo $(VR) | sed 's,[a-zA-Z]*,,g'),g" | sed "s,@EXT@,$(EXT),g" > $@


configure-stamp:

	dh_testdir

	dh_autoreconf

	eval `dpkg-buildflags --export=sh` && \
	CC=$(MCC) CFLAGS="$$CFLAGS $(CFLAGS_APPEND)" ./configure \
		--host=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) \
		$(DEBUG) \
		--prefix=/usr

	touch $@

build-stamp: configure-stamp
	dh_testdir
	$(MAKE) $(MAKEFLAGS)
	$(MAKE) $(MAKEFLAGS) check
	touch $@

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
	touch $@

DOC_STUBS=gcl$(EXT) gcl$(EXT)-si gcl$(EXT)-tk gcl$(EXT)-dwdoc
DOC_FILES=$(addsuffix  .info,$(DOC_STUBS))
DOC_FILES+=$(addsuffix .dvi,$(DOC_STUBS))
DOC_FILES+=$(addsuffix .pdf,$(DOC_STUBS))
DOC_FILES+=$(addsuffix .html,$(DOC_STUBS))
DOC_FFILES=$(addprefix info/,$(DOC_FILES))
EXT_TARGS=$(DOC_FFILES) man/man1/gcl$(EXT).1 bin/gcl$(EXT)

install-stamp: build-stamp
	dh_testdir
	dh_testroot
	dh_prep
	$(MAKE) $(MAKEFLAGS) install-all DESTDIR=$$(pwd)/debian/tmp
	$(MAKE) $(MAKEFLAGS) $(EXT_TARGS)
	for i in $(EXT_TARGS); do \
		for j in $$i*; do \
			if [ -d $$j ] ; then l=d ; r=-r ; else l=f ; fi ; \
			k=$$(find debian/tmp -type $$l -name $$(echo $$(basename $$j) | sed 's,$(EXT),,g')); \
			[ "$$k" = "" ] || cp $$r $$j $$(dirname $$k) ; \
			echo $$i $$j $$k; \
			[ "$$k" = "" ] || chmod $$(dirname $$k)/$$(basename $$j) --reference=$$k ; \
			[ "$$k" = "" ] || rm $$r $$k ; \
		done ; \
	done
	mv debian/tmp/usr/share/doc/gcl debian/tmp/usr/share/doc/gcl$(EXT)
	touch $@

INS:=$(shell for i in `find debian -name "in.*"` ; do \
		echo $$i | sed 's,in.,,1' ; \
		done |\
	     sed "s,\([^x]gcl\),\1$(EXT),g")

gcl$(EXT)% : in.gcl%
	cat $< | sed -e 's,@EXT@,$(EXT),g' -e 's,@VERS@,$(VERS),g' >$@

debian/po/POTFILES.in: debian/po/in.POTFILES.in
	cat $< | sed -e 's,@EXT@,$(EXT),g' -e 's,@VERS@,$(VERS),g' >$@

debian/control: debian/control_$(EXT)
	cp $< $@

install: DH_OPTIONS:=
install: install-stamp debian/control $(INS)
	dh_installdirs
	dh_install

clean: debian/control debian/gcl$(EXT).templates debian/po/POTFILES.in
	dh_testdir
	dh_testroot
	debconf-updatepo

	! [ -e Makefile ] || $(MAKE) $(MAKEFLAGS) distclean

	dh_autoreconf_clean
	dh_clean

	for i in $(INS); do echo $^ | grep -q $$i || rm -rf $$i ; done
	rm -rf debian/substvars debian.upstream
	rm -rf *stamp build-indep
	rm -f  debian/elpa-gcl$(EXT).elpa debian/gcl$(EXT)-pkg.el
	rm -rf $(EXT_TARGS) info/gcl$(EXT)*.info* gcl_pool

debian-clean: debian/control debian/gcl$(EXT).templates debian/po/POTFILES.in
	dh_testdir
	dh_testroot
	debconf-updatepo

	dh_clean

	for i in $(INS); do echo $^ | grep -q $$i || rm -rf $$i ; done
	rm -rf debian/substvars debian.upstream
	rm -rf *stamp build-indep
	rm -f  debian/elpa-gcl$(EXT).elpa debian/gcl$(EXT)-pkg.el
	rm -rf $(EXT_TARGS) info/gcl$(EXT)*.info* gcl_pool



# Build architecture-independent files here.
# Pass -i to all debhelper commands in this target to reduce clutter.
binary-indep: DH_OPTIONS:=-i
binary-indep: build install debian/elpa-gcl$(EXT).elpa
	dh_testdir
	dh_testroot
	dh_elpa
	dh_installdocs
	dh_installinfo
	dh_installchangelogs ChangeLog
	dh_link
	dh_compress 
	dh_fixperms 
	dh_installdeb 
	dh_gencontrol 
	dh_md5sums 
	dh_builddeb 

binary-arch: DH_OPTIONS=-a
binary-arch: build install #debian/substvars
	dh_testdir 
	dh_testroot 
	dh_installdocs
	dh_installdebconf 
	sed -i -e 's,@EXT@,$(EXT),g' debian/gcl$(EXT)/DEBIAN/templates
	dh_installchangelogs ChangeLog 
	dh_strip  -Xlibgcl -Xlibansi_gcl -Xlibgcl_gprof -Xlibansi_gcl_gprof
	dh_lintian 
	dh_link 
	dh_compress 
	dh_fixperms 
	dh_installdeb 
	dh_shlibdeps 
	dh_gencontrol  -u"-Vgcc=$(MCC)"
	dh_md5sums 
	dh_builddeb 

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
.PRECIOUS: configure-trad-stamp configure-ansi-stamp configure-gprof-stamp configure-ansi-gprof-stamp
