include build.env export TAG ?= dev PACKAGES_DIR := packages BUSYBOX_TAR := $(PACKAGES_DIR)/busybox-$(BUSYBOX_VERSION).tar.gz ALPINE_TAR := $(PACKAGES_DIR)/alpine-minirootfs-$(ALPINE_VER)-$(ALPINE_ARCH).tar.gz NXP_TAR := $(PACKAGES_DIR)/$(NXP_VERSION).tar.gz CRIO_TAR := $(PACKAGES_DIR)/$(CRIO_VERSION).tar.gz BOARD_ITB := out/board.itb INITRAMFS := out/initramfs.cpio.gz RELEASE_IMAGE := out/monok8s-$(TAG).img ALPINE_SERIES := $(word 1,$(subst ., ,${ALPINE_VER})).$(word 2,$(subst ., ,${ALPINE_VER})) $(BUSYBOX_TAR): @mkdir -p $(PACKAGES_DIR) curl -L -o $@ "https://github.com/mirror/busybox/archive/refs/tags/$(BUSYBOX_VERSION).tar.gz" $(ALPINE_TAR): @mkdir -p $(PACKAGES_DIR) curl -L -o $@ "https://dl-cdn.alpinelinux.org/alpine/v$(ALPINE_SERIES)/releases/$(ALPINE_ARCH)/alpine-minirootfs-$(ALPINE_VER)-$(ALPINE_ARCH).tar.gz" $(NXP_TAR): @mkdir -p $(PACKAGES_DIR) curl -L -o $@ "https://github.com/nxp-qoriq/linux/archive/refs/tags/$(NXP_VERSION).tar.gz" $(CRIO_TAR): @mkdir -p $(PACKAGES_DIR) curl -L -o $@ "https://storage.googleapis.com/cri-o/artifacts/$(CRIO_VERSION).tar.gz" build-base: docker build \ -f docker/build-base.Dockerfile \ --build-arg TAG=$(TAG) \ -t $(DOCKER_IMAGE_ROOT)/build-base:$(TAG) . $(KERNEL_IMAGE): build-base $(NXP_TAR) docker build \ -f docker/kernel-build.Dockerfile \ --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ --build-arg TAG=$(TAG) \ --build-arg ARCH=$(ARCH) \ --build-arg CROSS_COMPILE=$(CROSS_COMPILE) \ --build-arg NXP_VERSION=$(NXP_VERSION) \ --build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \ --output type=local,dest=./out . @test -f $(KERNEL_IMAGE) $(INITRAMFS): $(KERNEL_IMAGE) $(BUSYBOX_TAR) docker build \ -f docker/initramfs.Dockerfile \ --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ --build-arg TAG=$(TAG) \ --build-arg ARCH=$(ARCH) \ --build-arg CROSS_COMPILE=$(CROSS_COMPILE) \ --build-arg BUSYBOX_VERSION=$(BUSYBOX_VERSION) \ --output type=local,dest=./out . @test -f $(INITRAMFS) $(BOARD_ITB): $(INITRAMFS) docker build \ -f docker/itb.Dockerfile \ --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ --build-arg TAG=$(TAG) \ --build-arg ARCH=$(ARCH) \ --build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \ --output type=local,dest=./out . @test -f $(BOARD_ITB) release: $(BOARD_ITB) build-base docker build \ -f docker/alpine.Dockerfile \ --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ --build-arg TAG=$(TAG) \ --build-arg ALPINE_ARCH=$(ALPINE_ARCH) \ --build-arg ALPINE_VER=$(ALPINE_VER) \ --build-arg CRIO_VERSION=$(CRIO_VERSION) \ -t $(DOCKER_IMAGE_ROOT)/buildenv-alpine:$(TAG) . @cid=$$(docker create \ --privileged \ -v /cache/apk:/var/cache/apk \ --device=/dev/loop0:/dev/loop0 \ -e ROOTFS=/out/rootfs \ -e ARTIFACT_DIR=/artifacts \ -e RELEASE_IMAGE=$(RELEASE_IMAGE) \ $(DOCKER_IMAGE_ROOT)/buildenv-alpine:$(TAG) \ bash -lc '/build-rootfs.sh'); \ docker start -a $$cid; \ docker cp $$cid:/build/output.img $(RELEASE_IMAGE); \ docker rm $$cid @test -f $(RELEASE_IMAGE)