#!/usr/bin/make -f
export DH_VERBOSE = 1

AOT_SUPPORTED_ARCHS := amd64 arm

# Use DEB_BUILD_OPTIONS's parallel=n option (see Policy 4.9.1)
ifneq (,$(findstring parallel,$(DEB_BUILD_OPTIONS)))
PARALLEL_JOBS := $(shell echo $(DEB_BUILD_OPTIONS) | \
	sed -e 's/.*parallel=\([0-9]\+\).*/\1/')
else
PARALLEL_JOBS := 1
endif

ifeq (amd64,$(DEB_HOST_ARCH_CPU))
BUILD_TYPE += ReleaseX64
BUILD_TYPE_PRODUCT += ProductX64
ARCH += x64
else
ifeq (i386,$(DEB_HOST_ARCH_CPU))
BUILD_TYPE += ReleaseIA32
BUILD_TYPE_PRODUCT += ProductIA32
ARCH += ia32
else
ifeq (arm,$(DEB_HOST_ARCH_CPU))
ifeq ($(DEB_BUILD_ARCH_CPU),$(DEB_HOST_ARCH_CPU))
BUILD_TYPE += ReleaseARM
BUILD_TYPE_PRODUCT += ProductARM
else
BUILD_TYPE += ReleaseXARM
BUILD_TYPE_PRODUCT += ProductXARM
endif
ARCH += arm
else
$(error unsupported target arch '$(DEB_HOST_ARCH_CPU)')
endif
endif
endif

# Only run AOT builds for supported archs.
ifneq (,$(findstring $(DEB_HOST_ARCH_CPU),$(AOT_SUPPORTED_ARCHS)))
AOT_BUILD_CMD := \
python tools/build.py -v -m release -a $(ARCH) $(TOOLCHAIN) \
		copy_gen_kernel_snapshot; \
python tools/build.py -v -m product -a $(ARCH) $(TOOLCHAIN) \
		copy_gen_snapshot copy_dartaotruntime; \
mkdir -p out/$(BUILD_TYPE)/dart-sdk/bin/utils; \
cp out/$(BUILD_TYPE_PRODUCT)/dart-sdk/bin/utils/gen_snapshot \
		out/$(BUILD_TYPE)/dart-sdk/bin/utils/gen_snapshot; \
cp out/$(BUILD_TYPE_PRODUCT)/dart-sdk/bin/dartaotruntime \
		out/$(BUILD_TYPE)/dart-sdk/bin/dartaotruntime
else
AOT_BUILD_CMD := # empty
endif

# Verbose?
ifeq (1,$(DH_VERBOSE))
BUILD_ARGS += V=1
endif

%:
	dh $@

override_dh_auto_clean:
	echo $(DEB_BUILD_OPTIONS)
	rm -fr dart/out dart/Makefile
	find . -name *.tmp -execdir rm -f {} \;
	find . -name *.pyc -execdir rm -f {} \;
	find . -name *.mk -execdir rm -f {} \;
	find . -name *.Makefile -execdir rm -f {} \;

override_dh_auto_configure:
	python dart/tools/generate_buildfiles.py

override_dh_auto_build:
	cd dart; \
	python tools/build.py -v -m release -a $(ARCH) $(TOOLCHAIN) create_sdk; \
	$(AOT_BUILD_CMD); \
	cd ..

# Building the Dart SDK will already strip all binaries.
override_dh_strip:

# This override allows us to ignore spurious missing library errors when
# cross-compiling.
override_dh_shlibdeps:
	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

override_dh_auto_install:
	mkdir -p debian/tmp/out
	cp -R dart/out/$(BUILD_TYPE)/dart-sdk debian/tmp/out
	mv debian/tmp/out/dart-sdk debian/tmp/out/dart
	dh_install
	dh_link
