#!/usr/bin/make -f

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

SRCPKG:=$(shell ls -1r --color=no upstream/src-synchronet-*.tar.bz2 2>/dev/null |head -1 | sed 's/.*\/\(.*\)/\1/')
	
RUNPKG=$(shell echo $(SRCPKG) | sed 's/^src-/run-/')

CVSVER=$(shell echo $(SRCPKG) | sed 's/.*synchronet-\(.*\)\.tar.*/\1/' | grep cvs)
VERSION=3.14
ifneq ($(CVSVER),)
	VERSION:=$(VERSION)$(CVSVER)
endif

SBBSSTUFF=PREFIX="" JSINCLUDE=/usr/include/mozjs JSLIBDIR=/usr/lib JSLIB=mozjs NSPRINCLUDE=/usr/include/nspr NSPRDIR=/usr/lib CRYPTLIBINCLUDE=/usr/include CRYPTLIBDIR=/usr/include JSLIB=smjs RELEASE=1 VERBOSE=1 VERSION=$(VERSION) USE_DOSEMU=1 DONT_CLOBBER_CC=1 USE_SDL=1 USE_SDL_AUDIO=1 USE_SYSTEM_CURSES=1 X_PATH=/usr/X11R6

# The following options seem obsolete
SBBSSTUFF+= USE_UIFC32=1 USE_CURSES=1

DPATCH_DEPS=unpack-stamp
include /usr/share/dpatch/dpatch.make

LDFLAGS=-Wl,-rpath=/usr/lib/synchronet/lib

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

ifneq (,$(findstring parallel,$(DEB_BUILD_OPTIONS)))
	PARALLEL=$(shell echo $(DEB_BUILD_OPTIONS) | sed 's/parallel=\([0-9]\+\)/\1/')
endif

ifneq (,$(findstring -j,$(MAKEFLAGS)))
	MAKEFLAGS=$(shell echo $(MAKEFLAGS) | sed 's/-j\s*[0-9]\+/-j $(PARALLEL)/')
else
ifneq (,$(PARALLEL))
	MAKEFLAGS+=-j $(PARALLEL)
endif
endif

export CFLAGS LDFLAGS MAKEFLAGS

MODULES=sbbs3/gtkchat sbbs3/gtkmonitor sbbs3/gtkuseredit sbbs3/gtkuserlist sbbs3/install sbbs3/scfg sbbs3/syncview sbbs3/uedit sbbs3/umonitor
# menuedit seems broken
#MODULES+=sbbs3/menuedit

unpack: unpack-stamp
unpack-stamp:
	dh_testdir
	@if [ -z "$(SRCPKG)" ]; then echo "Couldn't find upstream tarball!"; exit 1; fi
	@echo Unpacking $(CURDIR)/upstream/$(SRCPKG) ...
	@tar -jx -f $(CURDIR)/upstream/$(SRCPKG)
	@echo Unpacking $(CURDIR)/upstream/$(RUNPKG) ...
	@tar -jx -f $(CURDIR)/upstream/$(RUNPKG)
	ln -sf ../src-sbbs3/src run-sbbs3
	find src-sbbs3 run-sbbs3 -name CVS | xargs rm -rf
	# Update the CVS revision in the first changelog entry
	if [ ! -z "$(CVSVER)" ]; then sed -i '1s/\(synchronet ([\.0-9]\+\)+cvs\(.*\))/\1+$(CVSVER)-1)/' debian/changelog; fi
	touch unpack-stamp

sbbs3/gtkchat: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/gtkmonitor: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/gtkuseredit: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/gtkuserlist: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/install: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/menuedit: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/scfg: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/syncview: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/uedit: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

sbbs3/umonitor: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF); cd $(CURDIR)

modules: sbbs3 $(MODULES)

xtrn: patch sbbs3
	cd run-sbbs3/xtrn/sbj && $(MAKE) $(SBBSSTUFF)
	cd run-sbbs3/xtrn/sbl && $(MAKE) $(SBBSSTUFF)

sbbs3: patch
	cd src-sbbs3/src/$@ && $(MAKE) $(SBBSSTUFF) && cd $(CURDIR)

build: build-stamp
build-stamp: unpack-stamp xtrn modules sbbs3
	dh_testdir
	# Compilation is done by dependencies
	touch build-stamp

upstream/run-synchronet-cvs$(DATE).tar.bz2:
	cd upstream && ./cvsco

upstream/src-synchronet-cvs$(DATE).tar.bz2: upstream/run-synchronet-cvs$(DATE).tar.bz2

buildcvs: upstream/run-synchronet-cvs$(DATE).tar.bz2 upstream/src-synchronet-cvs$(DATE).tar.bz2 build-stamp

clean: clean-stamp
clean-stamp: unpatch
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp

	if [ -f unpack-stamp ]; then \
		cd src-sbbs3/src/conio && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); \
		cd src-sbbs3/src/smblib && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); \
		cd src-sbbs3/src/uifc && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); \
		cd src-sbbs3/src/xpdev && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); \
		cd src-sbbs3/src/sbbs3 && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); \
		for module in $(MODULES); do cd src-sbbs3/src/$$module && $(MAKE) $(SBBSSTUFF) clean; cd $(CURDIR); done; \
		cd run-sbbs3/xtrn/sbj && $(MAKE) clean; cd $(CURDIR); \
		cd run-sbbs3/xtrn/sbl && $(MAKE) clean; cd $(CURDIR); \
	fi

	dh_clean

realclean: clean
	rm -rf src-sbbs3 run-sbbs3
	rm -f unpack-stamp

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	#/usr/bin/docbook-to-man debian/synchronet.sgml > synchronet.1


# 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_installchangelogs 
	dh_installdocs
	dh_installexamples
	dh_install
	dh_installmenu
	dh_installdebconf	
	dh_installinit
	dh_installman
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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