#!/usr/bin/make -f
#
# Robert Jordens <jordens@debian.org>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.

# Path to the debian directory
empty =
DEBIAN_DIR := $(shell echo ${MAKEFILE_LIST} | awk '{print $$1}' | xargs dirname )
UPSTREAM_VERSION ?=$(shell uscan --dehs | sed -n 's/.*<upstream-version>\(.*\)<\/upstream-version>.*/\1/p')
DFSG = dfsg1
PKG = $(shell dpkg-parsechangelog -SSource)

-include /usr/share/cdbs/1/rules/upstream-tarball.mk
-include /usr/share/cdbs/1/rules/utils.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/makefile.mk

DEB_CLEAN_EXCLUDE=debian/tmp
DEB_DESTDIR = $(CURDIR)/debian/tmp/

# ignore oddly packaged bzip2 archive to not upset dpkg
DEB_COPYRIGHT_CHECK_IGNORE_REGEX = ^(waf|(icons|gtk2_ardour)/icons/.*\.png|tools/osx_packaging/.*\.png|gtk_ardour/.*splash\.png|doc/ardour_meter_colors\.png|doc/layering/.*\.png|icons/made_with/ardour_made\.png|debian/(changelog|copyright(|_hints|_newhints)))$

# Set tag to full 40 char git tag for git snapshot release
tag = $(DEB_UPSTREAM_TARBALL_VERSION)
DEB_UPSTREAM_URL = https://github.com/Ardour/ardour/archive
DEB_UPSTREAM_TARBALL_BASENAME = $(tag)
DEB_UPSTREAM_TARBALL_SRCDIR = ardour-$(tag)

# Exclude these files from the Debian version
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./waf
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./.git*
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./MSVCvst_scan
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./MSVCardour3
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./icons/win32/resource
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./icons/win32/msvc_resources.rc.in

waf-configure-options = --lv2 \
	--lxvst \
	--freedesktop \
	--configdir=/etc/ \
	--noconfirm \
	--prefix=/usr/ \
	--no-phone-home \
	--use-external-libs \
	--optimize \
	--cxx11 \
	$(empty)


DIST_TARGET = none
ifneq (,$(findstring i386,$(DEB_BUILD_ARCH)))
	DIST_TARGET = i686
endif
ifneq (,$(findstring amd64,$(DEB_BUILD_ARCH)))
	DIST_TARGET = x86_64
endif

BACKENDS = jack
ifneq (,$(findstring linux,$(DEB_HOST_ARCH_OS)))
	# ALSA Backend is only available on Linux
	BACKENDS = jack,alsa
else
	waf-configure-options += \
		--no-fpu-optimization \
		$(empty)
endif

LD_LIBRARY_PATH += :$(DEB_DESTDIR)/usr/lib/ardour4/

waf-configure-options += \
	--with-backends=$(BACKENDS) \
	--dist-target=$(DIST_TARGET) \
	$(empty)

DEB_MAKE_PARALLEL = -j$(if $(DEB_PARALLEL_JOBS),$(DEB_PARALLEL_JOBS),1)
DEB_MAKE_EXTRA_ARGS = -v --destdir=$(CURDIR)/debian/tmp $(DEB_MAKE_PARALLEL)
DEB_MAKE_BUILD_TARGET = build i18n_mo
DEB_MAKE_ENVVARS = CFLAGS="$(or $(CFLAGS_$(cdbs_curpkg)),$(CFLAGS))" CXXFLAGS="$(or $(CXXFLAGS_$(cdbs_curpkg)),$(CXXFLAGS))" CPPFLAGS="$(or $(CPPFLAGS_$(cdbs_curpkg)),$(CPPFLAGS))" LDFLAGS="$(or $(LDFLAGS_$(cdbs_curpkg)),$(LDFLAGS))"
DEB_MAKE_INVOKE = $(DEB_MAKE_ENVVARS) $(CURDIR)/waf-light $(DEB_MAKE_EXTRA_ARGS)
DEB_MAKE_INSTALL_TARGET = install

## create -dbg package from the stripped info
DEB_DH_STRIP_ARGS := --ddeb-migration='ardour-dbg (<< 1:4.6~dfsg-1)'

## ardour includes a couple of private lib*.so files, which make
## dh_makeshlibs emit a useless call to `ldconfig` in the postinst script.
## since we don't have any public libraries, we just suppress that call.
DEB_DH_MAKESHLIBS_ARGS_ardour := --noscripts

clean::
	rm -f autowaf.pyc
	rm -f .lock-wscript .lock-waf_linux2_build
	find waflib -name "*.pyc" -delete || true
	find . -name "*.mo" -delete || true
	rm -rf build
	rm -f \
		gtk2_ardour/version.cc\
		gtk2_ardour/version.h\
		gtk2_ardour/ardour.appdata.xml.in\
		libs/ardour/ardour/version.h\
		libs/ardour/config_text.cc\
		libs/ardour/svn_revision.cc\
		libs/ardour/version.cc\
		libs/gtkmm2ext/gtkmm2ext/version.h\
		libs/gtkmm2ext/version.cc\
		libs/midi++2/midi++/version.h\
		libs/midi++2/version.cc\
		libs/pbd/pbd/version.h\
		libs/pbd/version.cc\
		$(empty)
	rm -rf debian/tmp


common-configure-arch common-configure-indep:: common-configure-impl
common-configure-impl:: libs/ardour/revision.cc debian/stamp-waf-configure


libs/ardour/revision.cc:
	echo '#include "ardour/revision.h"' > $@
	echo "namespace ARDOUR { const char* revision = \"${DEB_VERSION}\"; }" >> $@

debian/stamp-waf-configure:
	chmod +x ./waf-light
	$(DEB_MAKE_INVOKE) configure $(waf-configure-options)
	touch $@
clean::
	rm -f debian/stamp-waf-configure
	rm -f libs/ardour/revision.cc

# Needed at build time
# (separated in build tools, core, Glib/GTK and audio dependencies)
CDBS_BUILD_DEPENDS +=\
	, gettext\
	, intltool\
	, itstool\
	$(empty)
CDBS_BUILD_DEPENDS +=\
	, libboost-dev (>= 1.49.0),\
	, libcurl4-gnutls-dev (>= 7.25.0)\
	, libfftw3-dev (>= 3.3.1)\
	, liblrdf0-dev (>= 0.4.0), \
	, libserd-dev (>= 0.18.2~)\
	, libsord-dev (>= 0.12.0~)\
	, libsuil-dev (>= 0.6.10~)\
	, liblilv-dev\
	, libsratom-dev (>= 0.4.2~)\
	, libsigc++-2.0-dev (>= 2.2.10)\
	, uuid-dev\
	, libxml2-dev (>= 2.5.7)\
	, libcwiid-dev [linux-any]\
	, $(empty)
CDBS_BUILD_DEPENDS +=\
	, libcairomm-1.0-dev (>= 1.10.0)\
	, libgtkmm-2.4-dev (>= 2.24.2)\
	, libpangomm-1.4-dev (>= 2.28.4)\
	, $(empty)
CDBS_BUILD_DEPENDS +=\
	, ladspa-sdk (>= 1.1-2)\
	, libasound2-dev (>= 0.9.4) [linux-any]\
	, libaubio-dev (>= 0.3.2)\
	, libjack-dev\
	, liblo-dev (>= 0.26~)\
	, libltc-dev, \
	, librubberband-dev, \
	, libsamplerate0-dev (>= 0.1.8)\
	, libsndfile1-dev (>= 1.0.25)\
	, libtag1-dev, \
	, lv2-dev (>= 1.2.0)\
	, vamp-plugin-sdk (>=2.1)\
	, $(empty)
CDBS_BUILD_DEPENDS +=\
	, python-setuptools\
	, python-isodate\
	, python-rdflib\
	, $(empty)

# Needed always/often/sometimes at runtime
CDBS_DEPENDS_ALL = jackd
CDBS_RECOMMENDS_ALL = iceweasel | www-browser
CDBS_SUGGESTS_ALL = jamin, qjackctl

# Ensure only one variant is installed at a time
CDBS_PROVIDES_ardour-altivec = ardour
CDBS_PROVIDES_ardour-i686 = ardour

# Quirk for derivatives using different packaging name
ifeq (Ubuntu,$(shell dpkg-vendor --query Vendor))
CDBS_RECOMMENDS_ALL = firefox | www-browser
endif

DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./waf
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./.git*
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./MSVC**
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./msvc*
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./icons/win32/**
