MDLOADER_VERSION := 1.0.7 QMK_FIRMWARE_COMMIT := af9c4d93ee EXECUTION_DATE := $(shell date +%FT%T%Z) TARGET_LAYOUTS := $(wildcard layout/*) BUILD_TARGET_LAYOUTS := $(addsuffix .bin, $(addprefix builds/, $(notdir $(TARGET_LAYOUTS)))) WRITE_TARGET?=undefined-target UNAME_S := $(shell uname -s) .DEFAULT_GOAL := help .PHONY: help help: @printf "\033[33mUsage:\033[0m\n make [target] [arg=\"val\"...]\n\n\033[33mTargets:\033[0m\n" @grep -E '^[-a-zA-Z0-9_\.\/]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-15s\033[0m %s\n", $$1, $$2}' .PHONY: update update: qmk_firmware ## Update qmk_firmware @git -C qmk_firmware fetch @git -C qmk_firmware checkout $(QMK_FIRMWARE_COMMIT) @git -C qmk_firmware submodule update --init --recursive $(MAKE) qmk_firmware/patches_applied .PHONY: write write: mdloader builds/$(WRITE_TARGET).bin ## Write a layout to the keyboard, pass WRITE_TARGET as variable to control the particular layout @./mdloader --first --download builds/$(WRITE_TARGET).bin --restart ### Internal targets qmk_firmware/.git/HEAD: qmk_firmware qmk_firmware: @git clone https://github.com/Massdrop/qmk_firmware.git qmk_firmware @git -C qmk_firmware checkout $(QMK_FIRMWARE_COMMIT) @git -C qmk_firmware submodule update --init --recursive $(MAKE) qmk_firmware/patches_applied qmk_firmware/patches_applied: qmk_patches.diff qmk_firmware/.git/HEAD @git -C qmk_firmware clean -dffx 2>/dev/null || true @git -C qmk_firmware reset --hard HEAD @git -C qmk_firmware apply ../qmk_patches.diff @touch qmk_firmware/patches_applied mdloader.zip: ifeq ($(UNAME_S),Linux) @curl -Ls -o mdloader.zip https://github.com/Massdrop/mdloader/releases/download/$(MDLOADER_VERSION)/mdloader-Linux.zip endif ifeq ($(UNAME_S),Darwin) @curl -Ls -o mdloader.zip https://github.com/Massdrop/mdloader/releases/download/$(MDLOADER_VERSION)/mdloader-macOS.zip endif mdloader: mdloader.zip @unzip mdloader.zip @[ -e mdloader ] && touch mdloader builds/%.bin: qmk_firmware/.git/HEAD qmk_firmware/patches_applied layout/%/* | qmk_firmware @docker run -it --rm -v $$(pwd)/qmk_firmware:/qmk_firmware -v $$(pwd)/layout:/qmk_firmware/keyboards/massdrop/shift/keymaps -w /qmk_firmware qmkfm/base_container:latest ./bin/qmk compile --keyboard massdrop/shift --keymap $(@:builds/%.bin=%) @mv qmk_firmware/massdrop_shift_$(@:builds/%.bin=%).bin $@