# use sudo (non interactively) when running as regular user ifneq ($(shell id -u),0) AS_ROOT := sudo -n endif MOUNT := $(AS_ROOT) mount UMOUNT := $(AS_ROOT) umount CTR := podman CP := cp GIT := git CTR_IMG_TAG := avans-linux CTRIZE := $(CTR) run --rm --interactive --tty CTRIZE += --volume .:/workdir:rw CTRIZE += --env-file ./env 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.) $(shell state/gen) -include state/auto.mk # read environment variables from ./env include ./env export # shortcuts .PHONY: all all: $(BOOTLOADER_FILES) .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 init $(GIT) submodule update touch $@ state/sdcard_part: $(AS_ROOT) util/part $(SDCARD_DISK) touch $@ state/sdcard_fmt: state/sdcard_part $(AS_ROOT) mkfs.vfat -n BOOT -F 32 $(SDCARD_PART_BOOT) $(AS_ROOT) mkfs.ext4 -L ROOTFS -F $(SDCARD_PART_ROOTFS) touch $@ BOOTLOADER_FILES += bootloader/MLO BOOTLOADER_FILES += bootloader/u-boot.img BOOTLOADER_FILES += bootloader/u-boot.dtb bootloader/.config: state/submodules $(CTRIZE) $(MAKE) -$(MAKEFLAGS) -C bootloader am335x_evm_config $(BOOTLOADER_FILES): bootloader/.config $(CTRIZE) $(MAKE) -$(MAKEFLAGS) -C bootloader KERNEL_FILES += kernel/ kernel/.config: state/submodules $(CTRIZE) $(MAKE) -$(MAKEFLAGS) -C kernel omap2plus_defconfig $(KERNEL_FILES): kernel/.config $(CTRIZE) $(MAKE) -$(MAKEFLAGS) -C kernel .PHONY: load_bootloader load_bootloader: $(BOOTLOADER_FILES) mkdir -p mnt/boot mnt/rootfs $(MOUNT) $(SDCARD_PART_BOOT) mnt/boot $(AS_ROOT) $(CP) $(BOOTLOADER_FILES) mnt/boot $(UMOUNT) mnt/boot .PHONY: status status: @echo '### STATUS REPORT' @echo '# DETECTED SD CARD' @cat state/auto.mk @echo '# DETECTED STATE' @ls state | awk '$$0 == "gen" || $$0 == "auto.mk" { next } { print }'