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 \