#!/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.

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

-include /usr/share/cdbs/1/rules/upstream-tarball.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/

# 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
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./gtk2_ardour/win32/*

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

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

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

DEB_MAKE_EXTRA_ARGS = -v --destdir=$(CURDIR)/debian/tmp
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
	rm -rf tools/__pycache__

# Needed at build time
# (separated in build tools, core, Glib/GTK and audio dependencies)
CDBS_BUILD_DEPENDS +=\
	, gettext\
	, intltool\
	, itstool\
	$(empty)
CDBS_BUILD_DEPENDS +=\
	, libarchive-dev (>= 3.0.0)\
	, 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)\
	, libhidapi-dev\
	, libusb-1.0-0-dev\
	, $(empty)
CDBS_BUILD_DEPENDS +=\
	, ladspa-sdk (>= 1.1-2)\
	, libasound2-dev (>= 0.9.4) [linux-any]\
	, libaubio-dev (>= 0.3.2)\
	, libfluidsynth-dev\
	, libjack-dev\
	, liblo-dev (>= 0.26~)\
	, libltc-dev\
	, libqm-dsp-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/**
DEB_UPSTREAM_REPACKAGE_EXCLUDES += ./gtk2_ardour/win32/**

MANPAGES = ardour5-copy-mixer.1 ardour5-export.1 ardour5-fix_bbtppq.1
.PHONY: manpages manpageclean
$(MANPAGES): debian/ardour5-utils.1
	cp $^ $@
manpages: $(MANPAGES)
manpageclean:
	rm -f $(MANPAGES)

build/ardour:: manpages
clean:: manpageclean
