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

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

CFLAGS = -Wall -g
CPPFLAGS=
CXXFLAGS=
LDFLAGS=
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0 -g
	CXXFLAGS += -O0
else
	CFLAGS += $(shell dpkg-buildflags --get CFLAGS)
	CPPFLAGS += $(shell dpkg-buildflags --get CPPFLAGS)
	CXXFLAGS += $(shell dpkg-buildflags --get CXXFLAGS)
	LDFLAGS += $(shell dpkg-buildflags --get LDFLAGS)
endif

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)

PYTHON3S := $(shell py3versions -vr debian/control) 
PYTHONS := $(shell pyversions -vr debian/control) $(PYTHON3S)
ifneq (/usr/share/pkg-kde-tools/bin,$(filter /usr/share/pkg-kde-tools/bin,$(subst :, ,$(PATH))))
    export PATH := /usr/share/pkg-kde-tools/bin:$(PATH)
endif

# Update this on SO name bumps so files get shoved around correctly
SONAME=12v5

# Not all archs have Qt5 yet.  This test means python3-pyqt5 is installed
qt5 := "no"
ifeq ($(shell dpkg-query -s python3-pyqt5 |grep -o Package), Package)
	qt5 := "yes"
endif

configure-stamp:
	dh_testdir
	mkdir QSciQt4
	cp -r Qt4Qt5/* QSciQt4
	mkdir designer-Qt4
	cd QSciQt4 && qmake-qt4 QMAKE_STRIP="" DESTDIR=../QSciQt4
	cd designer-Qt4Qt5 && qmake-qt4 INCLUDEPATH+=../Qt4Qt5 QMAKE_LIBDIR+=../QSciQt4 QMAKE_STRIP="" DESTDIR=../designer-Qt4
ifeq ($(qt5), "yes")
	# Configuring for Qt5 support
	mkdir QSciQt5
	cp -r Qt4Qt5/* QSciQt5
	cd QSciQt5  && qmake -qt=qt5-$(DEB_HOST_MULTIARCH) QMAKE_STRIP="" DESTDIR=../QSciQt5
	cp -r designer-Qt4Qt5 designer-Qt5
	cd designer-Qt5 && qmake -qt=qt5-$(DEB_HOST_MULTIARCH) INCLUDEPATH+=../Qt4Qt5 QMAKE_LIBDIR+=../QSciQt5 QMAKE_STRIP="" DESTDIR=../designer-Qt5
endif
	touch $@

configure: configure-stamp $(PYTHONS:%=Python/build-%/configure-stamp) $(PYTHONS:%=Python/dbg-build-%/configure-stamp)

Python/build-%/configure-stamp:
	dh_testdir
	mkdir -p Python/build-$*
	cd Python/build-$* \
		&& python$* ../configure.py -n ../../QSciQt4/ -o ../../QSciQt4 \
		--sip-incdir=/usr/include/python$* -c --qsci-incdir=../../QSciQt4 \
		--qsci-libdir=../../QSciQt4 --destdir=$(CUR_DIR)/usr/lib/python$*/dist-packages/PyQt4
ifeq ($(qt5), "yes")
	mkdir -p Python/buildqt5-$* ; \
	esac
	cd Python/buildqt5-$* \
	  && QT_SELECT=qt5-$(DEB_HOST_MULTIARCH) python$* ../configure.py -n ../../QSciQt5/ -o ../../QSciQt5 \
	  --sip-incdir=/usr/include/python$* -c --qsci-incdir=../../QSciQt5 --pyqt=PyQt5 \
	   --qsci-libdir=../../QSciQt5 --qmake=/usr/bin/qmake \
	  --destdir=$(CUR_DIR)/usr/lib/python$*/dist-packages/PyQt5; \
	esac
endif
	touch $@

Python/dbg-build-%/configure-stamp:
	dh_testdir
	mkdir -p Python/dbg-build-$*
	cd Python/dbg-build-$* \
		&& python$*-dbg ../configure.py -n ../../QSciQt4/ -o ../../QSciQt4 \
		--sip-incdir=/usr/include/python$* -c --qsci-incdir=../../QSciQt4 \
		--qsci-libdir=../../QSciQt4 --destdir=$(CUR_DIR)/usr/lib/python$*/dist-packages/PyQt4 \
		--debug 
ifeq ($(qt5), "yes")
	mkdir -p Python/dbg-buildqt5-$* ; \
	esac
	cd Python/dbg-buildqt5-$* \
	  && QT_SELECT=qt5-$(DEB_HOST_MULTIARCH) python$*-dbg ../configure.py -n ../../QSciQt5/ -o ../../QSciQt5 \
	  --sip-incdir=/usr/include/python$* -c --qsci-incdir=../../QSciQt5 --pyqt=PyQt5 \
	  --qsci-libdir=../../QSciQt5 --qmake=/usr/bin/qmake \
	  --destdir=$(CUR_DIR)/usr/lib/python$*/dist-packages/PyQt5 \
	  --debug ; \
	esac
endif
	touch $@


build-library-stamp: configure
	dh_testdir
	cd QSciQt4 && $(MAKE)
	cd designer-Qt4Qt5 && $(MAKE)
ifeq ($(qt5), "yes")
	cd QSciQt5 && $(MAKE)
	cd designer-Qt5 && $(MAKE)
endif
	touch $@

build: build-arch build-indep
build-arch: build-library-stamp $(PYTHONS:%=Python/build-%/build-stamp) $(PYTHONS:%=Python/dbg-build-%/configure-stamp)

Python/build-%/build-stamp: Python/build-%/configure-stamp build-library-stamp
	dh_testdir
	$(MAKE) -C Python/build-$*
	touch $@

Python/dbg-build-%/build-stamp: Python/dbg-build-%/configure-stamp
	dh_testdir
	$(MAKE) -C Python/build-$*
	touch $@


build-indep: build-stamp
build-stamp:

clean:
	dh_testdir
	dh_testroot
	-cd Qt4Qt5 && $(MAKE) distclean
	-cd designer-Qt4Qt5 && $(MAKE) distclean

	rm -rf Python/*build*
	rm -rf QSciQt4
	rm -rf QSciQt5
	rm -rf designer-Qt4
	rm -rf designer-Qt5
	rm -f *-stamp

	dh_clean 

d3_qt4_dbg = debian/python3-pyqt4.qsci-dbg
d3_qt5_dbg = debian/python3-pyqt5.qsci-dbg

install-python-3%: 
	$(MAKE) -C Python/build-3$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C Python/dbg-build-3$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/$(d3_qt4_dbg)

ifeq ($(qt5), "yes")
	$(MAKE) -C Python/buildqt5-3$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C Python/dbg-buildqt5-3$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
endif
	ABITAG=`python3$* -c "import sysconfig; print(sysconfig.get_config_var('SOABI'))"`; \
	  for f in `find debian/tmp/usr/lib/python3* -name '*.so' ! -name '*.cpython*.so'`; do \
	  mv $$f $${f%.so}.$$ABITAG.so || exit 1; \
	done; 

d_qt4_dbg = debian/python-qscintilla2-dbg
d_qt5_dbg = debian/python-pyqt5.qsci-dbg

install-python-%: 
	$(MAKE) -C Python/build-$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C Python/dbg-build-$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/$(d_qt4_dbg)

ifeq ($(qt5), "yes")
	$(MAKE) -C Python/buildqt5-$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) -C Python/dbg-buildqt5-$* install INSTALL_ROOT=$(CURDIR)/debian/tmp DESTDIR=$(CURDIR)/debian/tmp
endif


install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	cd QSciQt4 && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install
	mkdir -p $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt4/api/python3
	cp $(CURDIR)/Python/build-$(shell py3versions -dv)/QScintilla2.api $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt4/api/python3
ifeq ($(qt5), "yes")
	cd QSciQt5 && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/libqt5scintilla2-$(SONAME) install
	mkdir -p $(CURDIR)/debian/libqt5scintilla2-dev/usr/include/$(DEB_HOST_MULTIARCH)/qt5/Qsci
	mkdir -p $(CURDIR)/debian/libqt5scintilla2-dev/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/mkspecs/features
	mkdir -p $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt5/api/python3
	cp $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/include/$(DEB_HOST_MULTIARCH)/qt5/Qsci/*.h $(CURDIR)/debian/libqt5scintilla2-dev/usr/include/$(DEB_HOST_MULTIARCH)/qt5/Qsci/
	rm -rf $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/include
	mv $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/lib/*.so $(CURDIR)/debian/libqt5scintilla2-dev/usr/lib
	cp $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/mkspecs/features/* $(CURDIR)/debian/libqt5scintilla2-dev/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/mkspecs/features
	rm -rf $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/lib/$(DEB_HOST_MULTIARCH)
	cd designer-Qt5 && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/libqt5scintilla2-designer install
	mkdir -p $(CURDIR)/debian/libqt5scintilla2-l10n/usr/share/qt5/translations
	cp $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/share/qt5/translations/* $(CURDIR)/debian/libqt5scintilla2-l10n/usr/share/qt5/translations
	mkdir -p $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt5/qsci/api/python
	cp $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/share/qt5/qsci/api/python/* $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt5/qsci/api/python
	rm -rf $(CURDIR)/debian/libqt5scintilla2-$(SONAME)/usr/share/qt5
	cp $(CURDIR)/Python/buildqt5-$(shell py3versions -dv)/QScintilla2.api $(CURDIR)/debian/libqscintilla2-doc/usr/share/qt5/api/python3
endif
	cd designer-Qt4Qt5 && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/tmp install
	for p in $(PYTHONS) ; do \
                $(MAKE) -f debian/rules install-python-$$p || exit 1;\
        done

binary-common:
	dh_testdir
	dh_testroot
	dh_installman
	dh_install --sourcedir=$(CURDIR)/debian/tmp
	dh_installchangelogs NEWS
	dh_installdocs -A
	dh_installexamples
	dh_link
ifeq (,$(findstring -i, $(DH_OPTIONS)))
	set -e; \
	for p in libqscintilla2-$(SONAME) libqscintilla2-designer \
	    python-qscintilla2 python3-pyqt4.qsci \
	    ; do \
	    DH_OPTIONS= dh_strip -p$$p --dbg-package=$$p-dbg; \
	    rm -rf debian/$$p-dbg/usr/share/doc/$$p-dbg; \
	    mkdir -p debian/$$p-dbg/usr/share/doc; \
	    ln -s $$p debian/$$p-dbg/usr/share/doc/$$p-dbg; \
	done
ifeq ($(qt5), "yes")
	set -e; \
	for p in libqt5scintilla2-$(SONAME) libqt5scintilla2-designer \
	    python-pyqt5.qsci python3-pyqt5.qsci \
	    ; do \
	    DH_OPTIONS= dh_strip -p$$p --dbg-package=$$p-dbg; \
	    rm -rf debian/$$p-dbg/usr/share/doc/$$p-dbg; \
	    mkdir -p debian/$$p-dbg/usr/share/doc; \
	    ln -s $$p debian/$$p-dbg/usr/share/doc/$$p-dbg; \
	done
endif
endif
	dh_compress
	dh_fixperms
	dh_python2
	dh_python3
	rm -rf $(CURDIR)/debian/python-qscintilla2/usr/share/pyshared
	dh_sip
	dh_sip3
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# Build architecture independant packages using the common target.
binary-indep: install
	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common

# Build architecture dependant packages using the common target.
binary-arch: install
	$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common

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