63 lines
2.1 KiB
Makefile
63 lines
2.1 KiB
Makefile
# Automatically find all YAML files and exclude special/secrets files
|
|
ALL_YAML := $(wildcard *.yaml)
|
|
EXCLUDE_YAML := secrets.yaml btproxy.yaml
|
|
DEVICE_YAML := $(filter-out $(EXCLUDE_YAML), $(ALL_YAML))
|
|
DEVICES := $(DEVICE_YAML:.yaml=)
|
|
|
|
BTPROXY_REPLICAS := c25bac c2577c c25b74
|
|
|
|
STAMP_DIR := .esphome/stamps
|
|
MAKEFLAGS += --keep-going
|
|
FLASH_TARGETS := $(addprefix $(STAMP_DIR)/.stamp-flash-, $(DEVICES)) $(addprefix $(STAMP_DIR)/.stamp-flash-btproxy-, $(BTPROXY_REPLICAS))
|
|
COMPILE_TARGETS := $(addprefix $(STAMP_DIR)/.stamp-compile-, $(DEVICES)) $(addprefix $(STAMP_DIR)/.stamp-compile-btproxy-, $(BTPROXY_REPLICAS))
|
|
|
|
ESPHOME_BIN := $(shell command -v esphome)
|
|
$(shell mkdir -p $(STAMP_DIR) && echo "$(ESPHOME_BIN)" > $(STAMP_DIR)/.esphome-bin.tmp && cmp -s $(STAMP_DIR)/.esphome-bin.tmp $(STAMP_DIR)/.esphome-bin || mv $(STAMP_DIR)/.esphome-bin.tmp $(STAMP_DIR)/.esphome-bin; rm -f $(STAMP_DIR)/.esphome-bin.tmp)
|
|
all: compile-all
|
|
|
|
flash-all: $(FLASH_TARGETS)
|
|
compile-all: $(COMPILE_TARGETS)
|
|
|
|
clean:
|
|
rm -rf $(STAMP_DIR) .Makefile.deps
|
|
|
|
# Convenience targets
|
|
flash-%: $(STAMP_DIR)/.stamp-flash-%
|
|
@:
|
|
compile-%: $(STAMP_DIR)/.stamp-compile-%
|
|
@:
|
|
|
|
# Normal devices: compile
|
|
$(STAMP_DIR)/.stamp-compile-%: %.yaml $(STAMP_DIR)/.esphome-bin
|
|
@mkdir -p $(STAMP_DIR)
|
|
esphome compile $<
|
|
@touch $@
|
|
|
|
# Normal devices: flash
|
|
$(STAMP_DIR)/.stamp-flash-%: %.yaml $(STAMP_DIR)/.esphome-bin
|
|
@mkdir -p $(STAMP_DIR)
|
|
esphome run --no-logs --device OTA $<
|
|
@touch $@
|
|
|
|
# Special btproxy devices: compile
|
|
$(STAMP_DIR)/.stamp-compile-btproxy-%: btproxy.yaml $(STAMP_DIR)/.esphome-bin
|
|
@mkdir -p $(STAMP_DIR)
|
|
esphome -s name btproxy-$* compile $<
|
|
@touch $@
|
|
|
|
# Special btproxy devices: flash
|
|
$(STAMP_DIR)/.stamp-flash-btproxy-%: btproxy.yaml $(STAMP_DIR)/.esphome-bin
|
|
@mkdir -p $(STAMP_DIR)
|
|
esphome -s name btproxy-$* run --no-logs --device OTA $<
|
|
@touch $@
|
|
|
|
# Include generated dependencies
|
|
-include .Makefile.deps
|
|
|
|
# Rule to update dependencies
|
|
.Makefile.deps: $(wildcard *.yaml) $(wildcard templates/*.yaml) generate_deps.py
|
|
@echo "Updating dependencies..."
|
|
@python3 generate_deps.py "$(DEVICES)" "$(BTPROXY_REPLICAS)" > $@
|
|
|
|
.PHONY: all flash-all compile-all clean
|