#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
# Copyright © 2015-2021 IOhannes m zmölnig <umlaeute@debian.org>
# Description: Main Debian packaging script for JUCE

export DH_VERBOSE = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_CPPFLAGS_MAINT_APPEND  =
export DEB_CXXFLAGS_MAINT_APPEND =
export DEB_LDFLAGS_MAINT_APPEND =

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
include /usr/share/dpkg/buildtools.mk

DEBIAN_BUILD_ARTIFACTS = debian/artifacts

DEB_COPYRIGHT_CHECK_IGNORE_REGEX = \
	\.pc/.*|\.git/.*|debian/.*|.*\.gif|.*\.jpg|.*\.JPG|.*\.png|.*\.ico|.*\.icns|.*\.wav|.*\.caf|.*\.ogg|.*\.mp3|.*\.pdf|.*\.keystore|.*\.nib|.*/gradle-wrapper\.jar|.*\.zip


#DEB_COPYRIGHT_CHECK_IGNORE_REGEX = \
#^((.*\.jpg)|(.*\.JPG)|(.*\.gif)|(.*\.png)|(.*\.ico)|(.*\.icns)|(gradle-wrapper\.jar)|(.*\.mp3)|(.*\.caf)|(.*\.nib)|examples/InAppPurchase/Signing/InAppPurchase\.keystore|examples/(InAppPurchase/BinaryData/(Robot|Ed|Jules|JB|Fabian|Lukasz)[012]\.ogg|AUv3Synth|PlugInSamples/MultiOutSynth)/Source/BinaryData/singing\.ogg|examples/Demo/Resources/cello\.wav|examples/Demo/Resources/icons\.zip|modules/juce_audio_plugin_client/RTAS/juce_RTAS_WinResources\.rsr|examples/ComponentTutorialExample/Introduction to Components - Part 1\.pdf|debian/(changelog|copyright(|_hints|_newhints)))$

# JUCE uses some c++11 features requiring atomic_store_8 and
# atomic_load_8, so we need to link with libatomic on
# armel, powerpc, powerpcspe, m68k, mips, mipsel, sh4, ...
# see also:
# - https://gcc.gnu.org/wiki/Atomic
# - https://gcc.gnu.org/wiki/Atomic/GCCMM/LIbrary
# - the 'clasp' packaging
noatomicarch = $(shell dpkg-architecture -qDEB_HOST_ARCH | egrep -x "(armel|powerpc|powerpcspe|m68k|mips|mipsel|sh4|riscv64)")
# link with libatomic on architectures without built-in atomic
ifeq ($(if $(noatomicarch),atomic), atomic)
	DEB_CPPFLAGS_MAINT_APPEND += -DDEBIAN_JUCERPROJECT_LIBS='"atomic"'
	DEB_LDFLAGS_MAINT_APPEND += -latomic
endif


ifneq ($(strip $(filter $(arch), mipsel mips64el)),)
	DEB_CXXFLAGS_MAINT_APPEND += -mxgot
endif


# Debian's Projucer is GPL
DEB_CPPFLAGS_MAINT_APPEND += -DJUCER_ENABLE_GPL_MODE=1

%:
	dh $@


override_dh_auto_configure:
	dh_auto_configure -- \
		-DJUCE_BUILD_EXTRAS=ON \
		-DJUCE_TOOL_INSTALL_DIR=bin \
		-DJUCE_MODULE_PATH=share/juce/modules \
		$(empty)

override_dh_auto_build-arch:
	dh_auto_build -- Projucer
	cp $(CURDIR)/examples/DemoRunner/Builds/iOS/DemoRunner/Images.xcassets/AppIcon.appiconset/Icon.png \
		$(DEBIAN_BUILD_ARTIFACTS)/juce.png
	dh_auto_build -D debian/extra/lv2-ttl-generator/

override_dh_auto_build-indep:
	mkdir -p docs/doxygen/build
	cp docs/JUCE*.md docs/CMake*.md docs/doxygen/build/
	make -C docs/doxygen

execute_after_dh_auto_install-arch:
	install -d debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/juce/lv2-ttl-generator
	install debian/extra/lv2-ttl-generator/lv2_ttl_generator debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/juce/lv2-ttl-generator/lv2_ttl_generator
	install debian/extra/lv2-ttl-generator/generate-ttl.sh debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/juce/lv2-ttl-generator/generate-ttl.sh

override_dh_install-indep:
	dh_install --indep -X.tag
	-find $(CURDIR)/debian/juce-modules-source-data/usr/share/juce \
		-type f -executable \
		'(' -name "*.h" -or -name "*.cpp" ')' \
		-exec chmod -c 0644 {} +
	dh_doxygen -i

override_dh_installchangelogs:
	dh_installchangelogs ChangeList.txt

execute_after_dh_clean:
	make -C docs/doxygen/ clean
	make -C debian/extra/lv2-ttl-generator/ clean
	rm -f $(DEBIAN_BUILD_ARTIFACTS)/*


licensecheck:
	licensecheck -i "^\./($(DEB_COPYRIGHT_CHECK_IGNORE_REGEX))$$" --deb-machine -r . \
		> debian/copyright_newhints
	cmp debian/copyright_hints debian/copyright_newhints \
		&& rm debian/copyright_newhints
