# use sudo (non interactively) when running as regular user ifneq ($(shell id -u),0) AS_ROOT := sudo -n endif CTR := podman CTR_IMG_TAG := avans-linux CTRIZE := $(CTR) run CTRIZE += --rm CTRIZE += --tty CTRIZE += --volume /tmp:/tmp:rw CTRIZE += --volume .:/workdir:rw CTRIZE += --env-file ./env CTRIZE += --env MAKE* CTRIZE += $(CTR_IMG_TAG) export # create dummy files to represent non-file targets (container image build # status, sd card partition status, git submodule initialization, etc.) $(eval $(shell state/gen)) # read environment variables from ./env include ./env export .PHONY: all all: .PHONY: sd_format sd_partition sd_format: state/sdcard_fmt sd_partition: state/sdcard_part state/container_img: Containerfile $(CTR) build --tag $(CTR_IMG_TAG) . touch $@ state/submodules: git submodule update --init touch $@ state/sdcard_part: $(AS_ROOT) util/part $(SDCARD_DISK) touch $@ state/sdcard_fmt: state/sdcard_part $(eval $(shell state/gen)) $(AS_ROOT) mkfs.vfat -a -F 16 -n BOOT $(SDCARD_PART_BOOT) $(AS_ROOT) mkfs.ext4 -F -L ROOTFS $(SDCARD_PART_ROOTFS) touch $@ bootloader/.config: state/submodules state/container_img $(CTRIZE) $(MAKE) -C bootloader am335x_evm_config .PHONY: build_bootloader build_bootloader: bootloader/.config state/container_img $(CTRIZE) $(MAKE) -C bootloader uboot.env: uboot.txt $(CTRIZE) bootloader/tools/mkenvimage -p 0x00 -s 0x20000 -o $@ $< # NOTE: MLO MUST be copied first BOOTLOADER_FILES += bootloader/MLO BOOTLOADER_FILES += bootloader/u-boot.img BOOTLOADER_FILES += bootloader/u-boot.dtb BOOTLOADER_FILES += uboot.env $(BOOTLOADER_FILES): build_bootloader kernel/.config: state/submodules state/container_img $(CTRIZE) $(MAKE) -C kernel bb.org_defconfig .PHONY: build_kernel build_kernel: kernel/.config state/container_img $(CTRIZE) $(MAKE) -C kernel zImage am335x-boneblack.dtb KERNEL_FILES += kernel/arch/$(ARCH)/boot/dts/am335x-boneblack.dtb KERNEL_FILES += kernel/arch/$(ARCH)/boot/zImage $(KERNEL_FILES): build_kernel # NOTE: ordering is important! FILES_PART_BOOT += $(BOOTLOADER_FILES) FILES_PART_BOOT += $(KERNEL_FILES) .PHONY: load_boot load_rootfs load_boot: $(FILES_PART_BOOT) state/sdcard_fmt mkdir -p mnt/boot $(AS_ROOT) mount $(SDCARD_PART_BOOT) mnt/boot $(AS_ROOT) cp $(FILES_PART_BOOT) mnt/boot $(AS_ROOT) sync $(AS_ROOT) umount mnt/boot # TODO # FILES_PART_ROOTFS += .... load_rootfs: state/sdcard_fmt mkdir -p mnt/rootfs $(AS_ROOT) mount $(SDCARD_PART_ROOTFS) mnt/rootfs $(AS_ROOT) cp $(FILES_PART_ROOTFS) mnt/boot $(AS_ROOT) sync $(AS_ROOT) umount mnt/rootfs .PHONY: status status: @echo '### STATUS REPORT' @echo '# ENVIRONMENT' state/gen @echo '# TARGETS' @ls state | awk '$$0 == "gen" || $$0 == "auto.mk" { next } { print }'