Make the kernel incrementally buildable (again!)

Change-Id: Ia01656f9e9f43f0b8bc69d34e776e545ae0035a6
diff --git a/boot.mk b/boot.mk
index 463ef4d..ed8f7fe 100644
--- a/boot.mk
+++ b/boot.mk
@@ -6,9 +6,15 @@
 
 boot: $(PRODUCT_OUT)/boot.img
 
-$(PRODUCT_OUT)/boot.img: $(PRODUCT_OUT)/u-boot.imx $(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb $(PRODUCT_OUT)/obj/BOOT_OBJ/boot.scr
+$(PRODUCT_OUT)/boot.img: $(PRODUCT_OUT)/u-boot.imx \
+                         $(PRODUCT_OUT)/obj/KERNEL_OBJ/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb \
+                         $(PRODUCT_OUT)/obj/KERNEL_OBJ/arch/arm64/boot/Image \
+                         $(PRODUCT_OUT)/obj/BOOT_OBJ/boot.scr
 	mkdir -p $(PRODUCT_OUT)/boot
-	cp $(PRODUCT_OUT)/obj/BOOT_OBJ/boot.scr $(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb $(PRODUCT_OUT)/boot/
+	cp $(PRODUCT_OUT)/obj/BOOT_OBJ/boot.scr \
+	   $(PRODUCT_OUT)/obj/KERNEL_OBJ/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb \
+	   $(PRODUCT_OUT)/obj/KERNEL_OBJ/arch/arm64/boot/Image \
+		 $(PRODUCT_OUT)/boot/
 	genext2fs -d $(PRODUCT_OUT)/boot/ -B 4096 -b 32768 $(PRODUCT_OUT)/boot.img
 
 $(PRODUCT_OUT)/obj/BOOT_OBJ/boot.scr: $(HOST_OUT)/bin/mkimage
diff --git a/kernel.mk b/kernel.mk
index 8df2f5d..8a790dd 100644
--- a/kernel.mk
+++ b/kernel.mk
@@ -8,26 +8,16 @@
 KERNEL_SRC_DIR := $(ROOTDIR)/linux-imx
 KERNEL_OUT_DIR := $(PRODUCT_OUT)/obj/KERNEL_OBJ
 
-# Explicit sequencing here since u-boot and the kernel seriously hate each other
-# in parallel.
-kernel: $(PRODUCT_OUT)/linux-image-4.9.51-aiy_1_arm64.deb
-	+make -f $(ROOTDIR)/build/kernel.mk $(PRODUCT_OUT)/kernel
-	+make -f $(ROOTDIR)/build/kernel.mk $(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb
-
 $(KERNEL_OUT_DIR)/.config: $(ROOTDIR)/build/defconfig
 	mkdir -p $(KERNEL_OUT_DIR)
 	cp -afs $(ROOTDIR)/linux-imx/* $(KERNEL_OUT_DIR)
 	+make -C $(KERNEL_SRC_DIR) O=$(KERNEL_OUT_DIR) ARCH=arm64 CROSS_COMPILE=$(TOOLCHAIN) mrproper defconfig
 	cat $(ROOTDIR)/build/defconfig | tee -a $(KERNEL_OUT_DIR)/.config
 
-$(PRODUCT_OUT)/kernel: $(KERNEL_OUT_DIR)/arch/arm64/boot/Image
-	cp $(KERNEL_OUT_DIR)/arch/arm64/boot/Image $(PRODUCT_OUT)/kernel
+$(KERNEL_OUT_DIR)/arch/arm64/boot/Image: $(KERNEL_OUT_DIR)/.config
+		+make -C $(KERNEL_SRC_DIR) O=$(KERNEL_OUT_DIR) ARCH=arm64 CROSS_COMPILE=$(TOOLCHAIN) Image modules dtbs
 
-$(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb: $(KERNEL_OUT_DIR)/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb
-	cp $(KERNEL_OUT_DIR)/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb $(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb
-
-modules_install: $(PRODUCT_OUT)/kernel
-	+sudo make -C $(KERNEL_SRC_DIR) O=$(KERNEL_OUT_DIR) ARCH=arm64 CROSS_COMPILE=$(TOOLCHAIN) INSTALL_MOD_PATH=$(PRODUCT_OUT)/obj/ROOTFS/rootfs modules_install
+kernel: $(KERNEL_OUT_DIR)/arch/arm64/boot/Image $(KERNEL_OUT_DIR)/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb
 
 $(PRODUCT_OUT)/linux-image-4.9.51-aiy_1_arm64.deb: $(KERNEL_OUT_DIR)/.config
 	cd $(KERNEL_OUT_DIR); MFLAGS="" MAKEFLAGS="" make-kpkg --rootcmd fakeroot --arch arm64 \
@@ -44,4 +34,6 @@
 
 # Mark the deb as phony so we enxure that we rely on the kbuild system for
 # incremental builds.
-.PHONY:: kernel modules_install $(PRODUCT_OUT)/linux-image-4.9.51-aiy_1_arm64.deb
+.PHONY:: kernel \
+         $(KERNEL_OUT_DIR)/arch/arm64/boot/dts/freescale/fsl-imx8mq-phanbell.dtb \
+         $(KERNEL_OUT_DIR)/arch/arm64/boot/Image \
diff --git a/rootfs.mk b/rootfs.mk
index c96c8c6..f55df8d 100644
--- a/rootfs.mk
+++ b/rootfs.mk
@@ -90,7 +90,10 @@
 	sha256sum $(ROOTFS_RAW_IMG) > $(ROOTFS_RAW_IMG).sha256sum
 endif
 
-$(ROOTFS_PATCHED_IMG): $(ROOTFS_RAW_IMG) $(ROOTDIR)/build/boot.mk $(PRODUCT_OUT)/boot.img
+$(ROOTFS_PATCHED_IMG): $(ROOTFS_RAW_IMG) \
+                       $(ROOTDIR)/build/boot.mk \
+                       $(PRODUCT_OUT)/linux-image-4.9.51-aiy_1_arm64.deb \
+                       | $(PRODUCT_OUT)/boot.img
 	cp -r $(ROOTFS_RAW_IMG) $(ROOTFS_PATCHED_IMG)
 	mkdir -p $(ROOTFS_DIR)
 	-sudo umount $(ROOTFS_DIR)/boot
@@ -103,7 +106,7 @@
 	+make -f $(ROOTDIR)/build/rootfs.mk adjustments
 
 	sudo cp $(PRODUCT_OUT)/*.deb $(ROOTFS_DIR)/root/
-	sudo cp $(PRODUCT_OUT)/fsl-imx8mq-phanbell.dtb $(ROOTFS_DIR)/boot/
+	sudo cp $(ROOTDIR)/build/fstab.emmc $(ROOTFS_DIR)/etc/fstab
 	sudo chroot $(ROOTFS_DIR) bash -c 'dpkg -i /root/*.deb'
 	sudo rm -rf $(ROOTFS_DIR)/root/*.deb