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

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

# clasp requires c++11 threads with 64bit __atomic_exchange, we need to
# link with libatomic on powerpc, powerpcspe, m68k, mips, mipsel, and
# sh4, see also
# https://gcc.gnu.org/wiki/Atomic
# https://gcc.gnu.org/wiki/Atomic/GCCMM/LIbrary
arch = $(shell dpkg-architecture -qDEB_BUILD_ARCH | egrep -x "(powerpc|powerpcspe|m68k|mips|mipsel|sh4)")

# use custom hardening config flags for compiling clasp
CONFIG=hardening
CONFIGPARMS = --prefix=/usr --with-mt=std
TOPBUILDDIR = build/$(CONFIG)_mt

#
# export CXXFLAGS and LDFLAGS for configure.sh
#
# add -O3 and NDEBUG and enable all hardening flags
# link with libatomic on architectures without built-in atomic
#
DEB_CXXFLAGS_MAINT_APPEND = -O3 -DNDEBUG
DEB_LDFLAGS_MAINT_APPEND =
ifeq ($(if $(arch),atomic), atomic)
	DEB_LDFLAGS_MAINT_APPEND += -latomic
endif

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

# inject CPPFLAGS to CXXFLAGS
CXXFLAGS += $(CPPFLAGS)

%:
	dh $@

# call ./configure.sh $(CONFIGPARMS)
override_dh_auto_configure:
	./configure.sh --config=$(CONFIG) $(CONFIGPARMS)

# build in $(TOPBUILDDIR)
override_dh_auto_build:
	dh_auto_build --builddirectory=$(TOPBUILDDIR)

# install clasp binary built in $(TOPBUILDDIR)
override_dh_auto_install:
	dh_auto_install --builddirectory=$(TOPBUILDDIR) -- INSTALL_DIR=$(CURDIR)/debian/clasp/usr/bin

# remove the whole build dir
override_dh_auto_clean:
	rm -rf ./build

# install CHANGES as changelog
override_dh_installchangelogs:
	dh_installchangelogs CHANGES
