43 lines
1.4 KiB
Makefile
43 lines
1.4 KiB
Makefile
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 <target>' where <target> 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) $^ $@
|
|
|