TARGET_ARCH := thumbv6m-none-eabi ELF2UF2_BIN := ~/.cargo/bin/elf2uf2-rs PROJECT_NAME := $(shell grep -E "name ?= ?\".*\"" Cargo.toml | grep -oP "(?<=\").*(?=\")") SRC_FILES := $(shell find src -type f) DEFAULT_TARGET := help .PHONY: help help: ## Display this help messag @echo "Please use \`make ' where is one of" @grep '^[a-zA-Z]' $(MAKEFILE_LIST) | sort | awk -F ':.*?## ' 'NF==2 {printf "\033[36m %-25s\033[0m %s\n", $$1, $$2}' .PHONY: build build: target/$(TARGET_ARCH)/debug/$(PROJECT_NAME).uf2 ## Build the project .PHONY: release release: target/$(TARGET_ARCH)/release/$(PROJECT_NAME).uf2 ## Build the project for release .PHONY: install-build install-build: build @sudo mount "$$(lsblk -o PATH,LABEL | grep RPI-RP2 | awk '{print $$1}')" /mnt @sudo cp target/$(TARGET_ARCH)/debug/$(PROJECT_NAME).uf2 /mnt/ .PHONY: install-release install-release: release @sudo mount "$$(lsblk -o PATH,LABEL | grep RPI-RP2 | awk '{print $$1}')" /mnt @sudo cp target/$(TARGET_ARCH)/release/$(PROJECT_NAME).uf2 /mnt/ Cargo.lock: Cargo.toml @cargo update target/$(TARGET_ARCH)/%/$(PROJECT_NAME): $(SRC_FILES) Cargo.toml Cargo.lock @if [[ "$@" == *"release"* ]]; then \ cargo build --release --target $(TARGET_ARCH); \ else \ cargo build --target $(TARGET_ARCH); \ fi target/$(TARGET_ARCH)/%/$(PROJECT_NAME).uf2: target/$(TARGET_ARCH)/%/$(PROJECT_NAME) @$(ELF2UF2_BIN) $^ $@