#! /usr/bin/make -f
# -*- mode: makefile -*-
# Made with the iad of dh_make, by Craig Small
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
# Also some stuff taken from debmake scripts, by Cristopt Lameter.

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

export SHELL	= /bin/bash

p_shape		= shapetools
p_atfslib	= libatfs1
p_atfs		= atfs
p_atfsdev	= atfs-dev

d		= debian/tmp
d_shape		= debian/$(p_shape)
d_atfslib	= debian/$(p_atfslib)
d_atfs		= debian/$(p_atfs)
d_atfsdev	= debian/$(p_atfsdev)

dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 && echo DH_COMPAT=2)

dirs_shape = \
	usr/share/doc \
	usr/bin \
	usr/lib/shape \
	usr/include \
	usr/share/man/{man1,man3,man5,man7}
files_shape = \
	usr/bin/{lastrelease,sfind,shape} \
	usr/share/man/man1/{lastrelease,sfind,shape} \
	usr/lib/shape/*

dirs_atfslib = \
	usr/share/doc/$(p_atfslib) \
	usr/lib/shape \
	usr/share/man/man7
files_atfslib = \
	usr/lib/lib*.so.* \
	usr/lib/shape/BindRules \
	usr/share/man/man7/bindrules.7

dirs_atfs = \
	usr/share/doc/$(p_atfs) \
	usr/lib/shape \
	usr/share/man/{man1,man5}
files_atfs = \
	usr/bin/{vbind,vcat,vdiff,vgrep,vegrep,vfgrep,vfind,vl,vlog,vp} \
	usr/bin/{retrv,Save,save,vsave} \
	usr/bin/{accs,frze,publ,sbmt,vadm,vattr,vrm} \
	usr/bin/{atfsit,atfsrepair,cacheadm,cphist,mkatfs,rmhist} \
	usr/bin/{rcs2atfs,utime} \
	usr/share/man/man1/{vbind,vcat,vdiff,vgrep,vegrep,vfgrep,vfind,vl,vlog,vp}.1 \
	usr/share/man/man1/{retrv,Save,save,vsave}.1 \
	usr/share/man/man1/{accs,frze,publ,sbmt,vadm,vattr,vrm}.1 \
	usr/share/man/man1/{atfsit,atfsrepair,cacheadm,mkatfs}.1 \
	usr/share/man/man1/{rcs2atfs,utime}.1 \
	usr/share/man/man1/{cphist,rmhist}.1

dirs_atfsdev = \
	usr/share/doc \
	usr/lib \
	usr/include \
	usr/share/man/man3
files_atfsdev = \
	usr/lib/lib*.a \
	usr/lib/lib*.so \
	usr/include/* \
	usr/share/man/man3

v_atfs	= 1.71
v_atfstk= 7.0
v_sttk	= 1.7

CC := gcc
cflags := $(shell dpkg-buildflags --get CFLAGS; dpkg-buildflags --get CPPFLAGS) \
	-fno-strict-aliasing \
	-Wno-unused-result -Wno-implicit-int -Wno-discarded-qualifiers \
	-Wno-int-to-pointer-cast -Wno-pointer-to-int-cast
ldflags := $(shell dpkg-buildflags --get LDFLAGS)

build-arch: build
build-indep: build
build: build-stamp build-grep-stamp
build-stamp:
	dh_testdir
	rm -f build-stamp
	-chmod a+x configure
	MAKECFLAGS="$(cflags)" \
	MAKELDFLAGS="$(ldflags)" \
	CC=$(CC) ./configure --prefix=/usr --enable-shared
	if [ -z "$$LD_LIBRARY_PATH" ]; then \
	  LD_LIBRARY_PATH="$(CURDIR)/lib" $(MAKE); \
	else \
	  LD_LIBRARY_PATH="$(CURDIR)/lib:$$LD_LIBRARY_PATH" $(MAKE); \
	fi
	touch build-stamp

build-grep-stamp:
	dh_testdir
	rm -f build-grep-stamp
	cd vgrep-2.0 && CC=$(CC) ./configure --prefix/usr
	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(CURDIR)/lib \
	  $(MAKE) -C vgrep-2.0 \
		SHAPETOOLS=$(CURDIR) \
		MAKECFLAGS="$(cflags)" \
		MAKELDFLAGS="$(ldflags)"
	touch build-grep-stamp

clean:
	dh_testdir
	dh_testroot
	rm -f *-stamp
	$(MAKE) clean
	$(MAKE) doclean
	$(MAKE) -C vgrep-2.0 -f Makefile.in distclean
	rm -f config.{cache,log,status}
	-find src -name '*.so*' | xargs rm -f
	dh_clean

install: install-stamp first-move-stamp
install-stamp: build-stamp build-grep-stamp
	dh_testdir
	dh_testroot
	dh_prep
	mkdir -p $(foreach dir, $(dirs_shape), $(d)/$(dir))
	dh_installdirs -p$(p_shape) $(dirs_shape)
	dh_installdirs -p$(p_atfs) $(dirs_atfs)
	dh_installdirs -p$(p_atfslib) $(dirs_atfslib)
	dh_installdirs -p$(p_atfsdev) $(dirs_atfsdev)
	if [ -z "$$LD_LIBRARY_PATH" ]; then \
	  LD_LIBRARY_PATH=$(CURDIR)/lib \
	    $(MAKE) install INSTALLBASE=$(CURDIR)/$(d)/usr \
		INSTALLMANPATH=$(CURDIR)/$(d)/usr/share/man; \
	else \
	  LD_LIBRARY_PATH=$(CURDIR)/lib:$$LD_LIBRARY_PATH \
	    $(MAKE) install INSTALLBASE=$(CURDIR)/$(d)/usr \
		INSTALLMANPATH=$(CURDIR)/$(d)/usr/share/man; \
	fi
	( \
	  set -e; \
	  cd $(d)/usr/bin; \
	  ln -sf save Save; \
	  ln -sf save vsave; \
	  ln -sf vl vlog; \
	  ln -sf retrv vcat; \
	  for i in accs frze publ sbmt vattr vrm; do \
	    ln -sf vadm $$i; \
	  done; \
	)
	( \
	  set -e; \
	  cd $(d)/usr/share/man/man1; \
	  ln -sf save.1 Save.1; \
	  ln -sf save.1 vsave.1; \
	  ln -sf vl.1 vlog.1; \
	  ln -sf retrv.1 vcat.1; \
	  for i in accs frze publ sbmt vattr vrm; do \
	    ln -sf vadm.1 $$i.1; \
	  done; \
	)
	( \
	  set -e; \
	  cd $(d)/usr/share/man/man3; \
	  ln -sf af_attrs.3 af_allattrs.3; \
	  ln -sf af_attrs.3 af_freeattr.3; \
	  ln -sf af_attrs.3 af_freeattrbuf.3; \
	  ln -sf af_attrs.3 af_isstdval.3; \
	  ln -sf af_attrs.3 af_retattr.3; \
	  ln -sf af_attrs.3 af_retnumattr.3; \
	  ln -sf af_attrs.3 af_rettimeattr.3; \
	  ln -sf af_attrs.3 af_retuserattr.3; \
	  ln -sf af_attrs.3 af_setattr.3; \
	  ln -sf af_cache.3 af_cachesize.3; \
	  ln -sf af_cache.3 af_savecache.3; \
	  ln -sf af_error.3 af_cleanup.3; \
	  ln -sf af_error.3 af_errmsg.3; \
	  ln -sf af_error.3 af_errno.3; \
	  ln -sf af_error.3 af_perror.3; \
	  ln -sf af_files.3 af_close.3; \
	  ln -sf af_files.3 af_crkey.3; \
	  ln -sf af_files.3 af_establish.3; \
	  ln -sf af_files.3 af_open.3; \
	  ln -sf af_files.3 af_restore.3; \
	  ln -sf af_files.3 af_rm.3; \
	  ln -sf af_history.3 af_access.3; \
	  ln -sf af_history.3 af_histories.3; \
	  ln -sf af_lock.3 af_testlock.3; \
	  ln -sf af_lock.3 af_unlock.3; \
	  ln -sf af_misc.3 af_afname.3; \
	  ln -sf af_misc.3 af_afpath.3; \
	  ln -sf af_misc.3 af_aftype.3; \
	  ln -sf af_misc.3 af_afuser.3; \
	  ln -sf af_misc.3 af_setarchpath.3; \
	  ln -sf af_protect.3 af_chauthor.3; \
	  ln -sf af_protect.3 af_chmod.3; \
	  ln -sf af_protect.3 af_chowner.3; \
	  ln -sf af_retrieve.3 af_cachefind.3; \
	  ln -sf af_retrieve.3 af_dropall.3; \
	  ln -sf af_retrieve.3 af_dropkey.3; \
	  ln -sf af_retrieve.3 af_dropset.3; \
	  ln -sf af_retrieve.3 af_find.3; \
	  ln -sf af_retrieve.3 af_getkey.3; \
	  ln -sf af_retrieve.3 af_initattrs.3; \
	  ln -sf af_sets.3 af_copyset.3; \
	  ln -sf af_sets.3 af_diff.3; \
	  ln -sf af_sets.3 af_initset.3; \
	  ln -sf af_sets.3 af_intersect.3; \
	  ln -sf af_sets.3 af_nrofkeys.3; \
	  ln -sf af_sets.3 af_setaddkey.3; \
	  ln -sf af_sets.3 af_setgkey.3; \
	  ln -sf af_sets.3 af_setposrmkey.3; \
	  ln -sf af_sets.3 af_setrmkey.3; \
	  ln -sf af_sets.3 af_sortset.3; \
	  ln -sf af_sets.3 af_subset.3; \
	  ln -sf af_sets.3 af_union.3; \
	  ln -sf af_transact.3 af_abort.3; \
	  ln -sf af_transact.3 af_commit.3; \
	  ln -sf af_transact.3 af_transaction.3; \
	  ln -sf af_version.3 af_newgen.3; \
	  ln -sf af_version.3 af_saverev.3; \
	  ln -sf af_version.3 af_setbusy.3; \
	  ln -sf af_version.3 af_sstate.3; \
	  ln -sf af_version.3 af_svnum.3; \
	  ln -sf atattribute.3 atAllAttrs.3; \
	  ln -sf atattribute.3 atAttrName.3; \
	  ln -sf atattribute.3 atAttrValue.3; \
	  ln -sf atattribute.3 atFreeAttrs.3; \
	  ln -sf atattribute.3 atRetAttr.3; \
	  ln -sf atattribute.3 atSetAttr.3; \
	  ln -sf atbind.3 atBindCache.3; \
	  ln -sf atbind.3 atBindExpandMacro.3; \
	  ln -sf atbind.3 atBindModeOption.3; \
	  ln -sf atbind.3 atBindNoMsg.3; \
	  ln -sf atbind.3 atBindOptions.3; \
	  ln -sf atbind.3 atBindSet.3; \
	  ln -sf atbind.3 atBindSetArgv.3; \
	  ln -sf atbind.3 atBindTrace.3; \
	  ln -sf atbind.3 atBindUsage.3; \
	  ln -sf atbind.3 atBindVersion.3; \
	  ln -sf atbind.3 atScanBinding.3; \
	  ln -sf atbindrule.3 atBindAddRule.3; \
	  ln -sf atbindrule.3 atBindDelRule.3; \
	  ln -sf atbindrule.3 atBindDisplayErrors.3; \
	  ln -sf atbindrule.3 atBindListRules.3; \
	  ln -sf atbindrule.3 atBindRuleFile.3; \
	  ln -sf atbindrule.3 atBindShowRules.3; \
	  ln -sf atbindrule.3 atBindTestRule.3; \
	  ln -sf atcache.3 atCacheKey.3; \
	  ln -sf atcache.3 atSaveCache.3; \
	  ln -sf atclass.3 atFileClassExt.3; \
	  ln -sf atclass.3 atIsDerived.3; \
	  ln -sf atexpand.3 atExpand.3; \
	  ln -sf atexpand.3 atExpandAttrs.3; \
	  ln -sf atlog.3 atSetComment.3; \
	  ln -sf atlog.3 atUnlock.3; \
	  ln -sf atnetwork.3 atLocalPath.3; \
	  ln -sf atnetwork.3 atNetworkPath.3; \
	  ln -sf atprint.3 atScanStatus.3; \
	  ln -sf atprint.3 atWriteDate.3; \
	  ln -sf atprint.3 atWriteMode.3; \
	  ln -sf atprint.3 atWriteName.3; \
	  ln -sf atprint.3 atWriteStatus.3; \
	  ln -sf atread.3 atCloseExpand.3; \
	  ln -sf atread.3 atOpenExpand.3; \
	  ln -sf atread.3 atReadExpand.3; \
	  ln -sf atuser.3 atScanUser.3; \
	  ln -sf atuser.3 atUserName.3; \
	  ln -sf atuser.3 atUserUid.3; \
	  ln -sf atuser.3 atUserValid.3; \
	  ln -sf atversion.3 atDelVersAlias.3; \
	  ln -sf atversion.3 atGen.3; \
	  ln -sf atversion.3 atRev.3; \
	  ln -sf atversion.3 atSetVersAlias.3; \
	  ln -sf atversion.3 atVno.3; \
	  ln -sf stcall.3 stCallCmd.3; \
	  ln -sf stcall.3 stCallCmdErrno.3; \
	  ln -sf stcall.3 stCallEditor.3; \
	  ln -sf stcall.3 stFindProgram.3; \
	  ln -sf stparseargs.3 stParseArgs.3; \
	  ln -sf stparseargs.3 stShortUsage.3; \
	  ln -sf stsignal.3 stCatchSigs.3; \
	  ln -sf stsignal.3 stCleanup.3; \
	  ln -sf stsignal.3 stExit.3; \
	  ln -sf stsignal.3 stInterruptAction.3; \
	  ln -sf stsignal.3 stQuitAction.3; \
	  ln -sf stsignal.3 stTermAction.3; \
	  ln -sf ststring.3 stConvertPattern.3; \
	  ln -sf ststring.3 stStrEnter.3; \
	  ln -sf ststring.3 stStrtok.3; \
	  ln -sf ststring.3 stSubstituteString.3; \
	  ln -sf sttime.3 stMktime.3; \
	  ln -sf sttime.3 stWriteTime.3; \
	  ln -sf sttmpfiles.3 stRegisterFile.3; \
	  ln -sf sttmpfiles.3 stRmRegisteredFiles.3; \
	  ln -sf sttmpfiles.3 stTmpFile.3; \
	  ln -sf sttmpfiles.3 stUnRegisterFile.3; \
	  ln -sf sttransaction.3 stAbortThis.3; \
	  ln -sf sttransaction.3 stThisTransaction.3; \
	  ln -sf stuserio.3 stAskConfirm.3; \
	  ln -sf stuserio.3 stGetFromStdin.3; \
	  ln -sf stuserio.3 stGetTermWidth.3; \
	  ln -sf stuserio.3 stLog.3; \
	  ln -sf stuserio.3 stMessage.3; \
	  ln -sf stuserio.3 stProgramName.3; \
	  ln -sf stuserio.3 stQuietFlag.3; \
	  ln -sf stuserio.3 stShutupFlag.3; \
	)
	( \
	  set -e; \
	  cd $(d)/usr/share/man/man7; \
	  for i in Makefile.tmpl Release.tmpl Shapefile.tmpl release.c.tmpl; do \
	    ln -sf shape_tmpl.7 $$i.7; \
	  done; \
	)
	cp -p debian/vp.1 $(d)/usr/share/man/man1/
	cp -p debian/cphist.1 $(d)/usr/share/man/man1/
	cp -p debian/rmhist.1 $(d)/usr/share/man/man1/
	cp -p debian/lastrelease.1 $(d)/usr/share/man/man1/
	chmod a-x $(d)/usr/lib/lib*.a
	if [ -z "$$LD_LIBRARY_PATH" ]; then \
	  LD_LIBRARY_PATH=$(CURDIR)/lib \
	    $(MAKE) -C vgrep-2.0 install prefix=$(CURDIR)/$(d)/usr \
		mandir=$(CURDIR)/$(d)/usr/share/man/man1; \
	else \
	  LD_LIBRARY_PATH=$(CURDIR)/lib:$$LD_LIBRARY_PATH \
	    $(MAKE) -C vgrep-2.0 install prefix=$(CURDIR)/$(d)/usr \
		mandir=$(CURDIR)/$(d)/usr/share/man/man1; \
	fi
	mv $(d)/usr/share/man/man1/grep.1 $(d)/usr/share/man/man1/vgrep.1
	ln -sf vgrep.1 $(d)/usr/share/man/man1/vegrep.1
	ln -sf vgrep.1 $(d)/usr/share/man/man1/vfgrep.1
	ln -sf vgrep $(d)/usr/bin/vegrep
	ln -sf vgrep $(d)/usr/bin/vfgrep
	touch install-stamp

first-move-stamp: install-stamp
	dh_testdir
	dh_testroot
	rm -f install-stamp
	$(dh_compat2) dh_movefiles -p$(p_atfs) $(files_atfs)
	$(dh_compat2) dh_movefiles -p$(p_atfslib) $(files_atfslib)
	$(dh_compat2) dh_movefiles -p$(p_atfsdev) $(files_atfsdev)
	(cd $(d); tar cf - .) | (cd $(d_shape); tar xf -)
	touch first-move-stamp

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot

	dh_installdocs -p$(p_atfslib)
	dh_installdocs -p$(p_atfs) Questionnaire README SUPPORT TODO
	ln -sf $(p_atfs) $(d_atfsdev)/usr/share/doc/$(p_atfsdev)
	ln -sf $(p_atfs) $(d_shape)/usr/share/doc/$(p_shape)
	dh_installchangelogs -p$(p_atfslib)
	dh_installchangelogs -p$(p_atfs) CHANGES-1.4
	dh_strip -a -X.a
	dh_compress -a
	# Remove build path for reproducible builds
	sed -i -e "s,$(CURDIR)/debian/tmp,,g" debian/atfs-dev/usr/include/sttk.h
	dh_fixperms -a
	LD_LIBRARY_PATH=$(d_atfslib)/usr/lib:$$LD_LIBRARY_PATH \
		dh_makeshlibs -V -p$(p_atfslib)
	dh_shlibdeps -a -L$(p_atfslib) -l $(d_atfslib)/usr/lib
	-find debian -type d -empty -delete
	dh_installdeb -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary
