Add arm64 Cross compiler support via docker.

Change-Id: Ied9c0f0f4687aeb76709fb60d70c4d7d45fd7297
diff --git a/Dockerfile.arm64 b/Dockerfile.arm64
index 60387ae..ad525b2 100644
--- a/Dockerfile.arm64
+++ b/Dockerfile.arm64
@@ -3,8 +3,10 @@
 COPY qemu-aarch64-static /usr/bin
 RUN apt-get update && apt-get install -y \
     automake \
+    checkinstall \
     debhelper \
     dpkg-dev \
+    libcap-dev \
     libcairo2-dev \
     libdrm-dev \
     libegl1-mesa-dev \
diff --git a/Makefile b/Makefile
index eb81255..e63d68a 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,6 @@
 include $(ROOTDIR)/build/kernel.mk
 include $(ROOTDIR)/build/kernel-modules.mk
 include $(ROOTDIR)/build/partition-table.mk
-include $(ROOTDIR)/build/packages.mk
 include $(ROOTDIR)/build/prereqs.mk
 include $(ROOTDIR)/build/rootfs.mk
 include $(ROOTDIR)/build/sdcard.mk
@@ -45,6 +44,7 @@
 include $(ROOTDIR)/build/u-boot.mk
 
 include $(ROOTDIR)/build/docker.mk
+include $(ROOTDIR)/build/packages.mk
 
 clean::
 	rm -rf $(ROOTDIR)/out
diff --git a/docker.mk b/docker.mk
index a321f38..e4a9671 100644
--- a/docker.mk
+++ b/docker.mk
@@ -36,6 +36,7 @@
 	docker rmi arm64-builder:latest
 endif
 
+# Macro for running make target in x86 docker image
 define docker-run
 docker-$1: docker-build;
 	docker load -i $(ROOTDIR)/cache/aiy-board-builder.tar
@@ -73,6 +74,48 @@
 $(call docker-run,sdcard,sdcard)
 $(call docker-run,make-repo,make-repo)
 
+
+# Macro for running make target in arm64 docker image
+define docker-arm64-run
+docker-arm64-$1: docker-build-arm64;
+	docker load -i $(ROOTDIR)/cache/arm64-builder.tar; \
+	docker run --rm --tty \
+	    -v /dev\:/dev \
+	    -v $(ROOTDIR)\:/build \
+	    -v $(TARBALL_FETCH_ROOT_DIRECTORY)\:/tarballs \
+	    -v $(PREBUILT_DOCKER_ROOT)\:/docker \
+	    -v $(PREBUILT_MODULES_ROOT)\:/modules \
+	    -w /build \
+	      -e "DEBOOTSTRAP_FETCH_TARBALL=$(DEBOOTSTRAP_FETCH_TARBALL)" \
+	      -e "ROOTFS_FETCH_TARBALL=$(ROOTFS_FETCH_TARBALL)" \
+	      -e "ARM64_BUILDER_FETCH_TARBALL=$(ARM64_BUILDER_FETCH_TARBALL)" \
+	      -e "TARBALL_FETCH_ROOT_DIRECTORY=/tarballs" \
+	      -e "PREBUILT_DOCKER_ROOT=/docker" \
+	      -e "ROOTFS_REVISION=$(ROOTFS_REVISION)" \
+	      -e "DEBOOTSTRAP_TARBALL_REVISION=$(DEBOOTSTRAP_TARBALL_REVISION)" \
+	      -e "PREBUILT_MODULES_ROOT=/modules" \
+	   arm64-builder \
+	   /bin/bash -c \
+		'groupadd --gid $$(shell id -g) $$(shell id -g -n); \
+	     useradd -m -e "" -s /bin/bash --gid $$(shell id -g) --uid $$(shell id -u) $$(shell id -u -n); \
+	     passwd -d $$(shell id -u -n); \
+	     echo "$$(shell id -u -n) ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \
+	     source build/setup.sh; m -j$(shell nproc) $2'
+endef
+
+test-docker:
+	@echo "Docker architecture: $(shell uname -a)"
+	@echo "Compiler version: $(shell gcc --version)"
+	@echo -e '#include <stdio.h>\nint main() {printf("\\nHello Docker gcc test\\n\\n");\n return 0;\n}' > hello.c
+	@make hello
+	@./hello
+	@rm -f hello.c hello
+
+# Test arm64 docker 'm docker-arm64-test-docker'
+$(call docker-arm64-run,test-docker,test-docker)
+# Test x86 docker 'm docker-test-docker'
+$(call docker-run,test-docker,test-docker)
+
 .DEFAULT_GOAL:=docker-all
 
 .PHONY:: docker-build
diff --git a/packages.mk b/packages.mk
index 56723c3..50f1e2e 100644
--- a/packages.mk
+++ b/packages.mk
@@ -3,8 +3,11 @@
 endif
 
 include $(ROOTDIR)/build/preamble.mk
-
-PACKAGES_DIRS := $(wildcard $(ROOTDIR)/packages/*)
+PACKAGE_NAMES := aiy-board-audio \
+		 aiy-board-gadget \
+		 aiy-board-keyring \
+		 aiy-board-wlan
+PACKAGES_DIRS := $(addprefix $(ROOTDIR)/packages/, $(PACKAGE_NAMES))
 PACKAGES := $(foreach package,$(PACKAGES_DIRS),$(notdir $(package)))
 
 define make-package-target
@@ -18,4 +21,5 @@
 $(foreach package,$(PACKAGES),$(eval $(call make-package-target,$(package))))
 
 packages:: $(foreach package,$(PACKAGES),$(PRODUCT_OUT)/.$(package))
-.PHONY:: packages
\ No newline at end of file
+
+.PHONY:: packages
diff --git a/prereqs.mk b/prereqs.mk
index 953a038..63ed3f8 100644
--- a/prereqs.mk
+++ b/prereqs.mk
@@ -17,6 +17,7 @@
 	fakeroot \
 	genext2fs \
 	kpartx \
+	libcap-dev \
 	libwayland-dev \
 	mtools \
 	parted \