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

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

VERSION := 4.9.51-aiy

ARCH := arm64

DTB := freescale/fsl-imx8mq-phanbell.dtb

KERNEL_OPTIONS := \
	ARCH=arm64 \
	CROSS_COMPILE=aarch64-linux-gnu- \
	LOCALVERSION=-aiy

LDFLAGS :=
BUILD_DIR := $(CURDIR)/debian/build
DESTDIR := $(CURDIR)/debian/linux-image-$(VERSION)
DESTDIR_HEADERS := $(CURDIR)/debian/linux-headers-$(VERSION)
DESTDIR_KBUILD := $(CURDIR)/debian/linux-kbuild-$(VERSION)

%:
	dh $@

override_dh_auto_clean:
	true

override_dh_auto_build:
	+make $(KERNEL_OPTIONS) defconfig
	cat debian/defconfig | tee -a .config
	+make $(KERNEL_OPTIONS) olddefconfig
	+make $(KERNEL_OPTIONS) -j$(shell nproc) Image modules dtbs

override_dh_auto_install:
	+make $(KERNEL_OPTIONS) INSTALL_MOD_PATH=$(DESTDIR) modules_install
	rm $(DESTDIR)/lib/modules/$(VERSION)/build
	rm $(DESTDIR)/lib/modules/$(VERSION)/source

	# Setup contents of /boot
	install -d $(DESTDIR)/boot
	cp arch/$(ARCH)/boot/Image $(DESTDIR)/boot/vmlinuz-$(VERSION)
	ln -sf vmlinuz-$(VERSION) $(DESTDIR)/boot/Image
	cp System.map $(DESTDIR)/boot/System.map-$(VERSION)
	cp .config $(DESTDIR)/boot/config-$(VERSION)
	cp arch/$(ARCH)/boot/dts/$(DTB) $(DESTDIR)/boot

	# Build header directory structure
	install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
	install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/arm
	install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/$(ARCH)/kernel
	install -d $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/drivers/staging/android

	# Copy module information, include files, and important Makefiles into the header tree
	cp -a .config $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
	cp -a Module.symvers $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
	cp -a include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)
	cp -a drivers/staging/android/uapi $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/drivers/staging/android
	cp -a arch/$(ARCH)/include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/$(ARCH)
	# Sigh, arm64 headers also need arm headers...
	cp -a arch/arm/include $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/arch/arm
	cp -a Makefile $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)

	( \
		find arch/$(ARCH) -maxdepth 1 -name 'Makefile*' -print; \
		find arch/$(ARCH) \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print; \
		find $$(find arch/$(ARCH) \( -name include -o -name scripts \) -type d -print) -print; \
	) | cpio -pdm $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)

	# Clean up any leftover x86 artifacts from the kernel build, and then build scripts
	find $(CURDIR)/scripts -type f | xargs file | grep 'x86-' | awk '{print $$1}' | tr -d ':' | xargs rm -f
	mkdir -p $(BUILD_DIR)/build-tools/scripts
	$(MAKE) $(KERNEL_OPTIONS) \
		CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)- \
		-C $(BUILD_DIR)/build-tools/scripts -f $(CURDIR)/debian/rules.d/scripts/Makefile \
		top_rulesdir=$(CURDIR)/debian/rules.d \
		top_srcdir=$(CURDIR) \
		OUTDIR=scripts \
		install \
		DESTDIR=$(DESTDIR_KBUILD) \
		prefix=/usr/lib/linux-kbuild-$(VERSION)

	# Setup the symlink from the modules directory to the headers
	install -d $(DESTDIR_HEADERS)/lib/modules/$(VERSION)
	ln -s /usr/src/linux-headers-$(VERSION) $(DESTDIR_HEADERS)/lib/modules/$(VERSION)/build
	ln -s /usr/lib/linux-kbuild-$(VERSION)/scripts $(DESTDIR_HEADERS)/usr/src/linux-headers-$(VERSION)/scripts
