BASE_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))) LIBRARY_DIR := $(BASE_DIR)/lib ifndef MONITOR_PORT ifneq (,$(wildcard /dev/ttyUSB0)) MONITOR_PORT = /dev/ttyUSB0 else ifneq (,$(wildcard /dev/ttyACM0)) MONITOR_PORT = /dev/ttyACM0 else MONITOR_PORT = unknown endif endif ESPTOOL := $(BASE_DIR)/util/esp8266/tools/esptool/esptool ESPOTA := $(BASE_DIR)/util/esp8266/tools/espota.py TARGET_DIR := $(BASE_DIR)/$(subst :,.,build/$(FQBN)) BIN_DIR := $(BASE_DIR)/bin SRC := $(wildcard $(SKETCH_DIR)/*.ino) HDRS := $(wildcard $(SKETCH_DIR)/*.h) LIBH := $(wildcard $(BASE_DIR)/lib/**/*.h) LIBS := $(LIBH) $(wildcard $(BASE_DIR)/lib/**/*.cpp) BIN := $(notdir $(SRC)).bin $(info FQBN is [${FQBN}]) $(info ESP_IP is [${ESP_IP}]) $(info OTA_SERVER is [${OTA_SERVER}]) $(info OTA_PASSWD is [${OTA_PASSWD}]) $(info MONITOR_PORT is [${MONITOR_PORT}]) $(info TARGET_DIR is [${TARGET_DIR}]) $(info BIN_DIR is [${BIN_DIR}]) $(info SRC is [${SRC}]) $(info HDRS is [${HDRS}]) $(info BIN is [${BIN}]) $(info SERIAL_DEV is [${SERIAL_DEV}]) all: $(BIN_DIR)/$(BIN) upload compile: $(BIN_DIR)/$(BIN) upload: $(BIN_DIR)/$(BIN) $(ESPTOOL) --port $(MONITOR_PORT) --chip esp8266 --baud 460800 write_flash -fm dio -fs 16MB 0x0 $(TARGET_DIR)/$(SKETCH).bin ota: $(BIN_DIR)/$(BIN) $(ESPOTA) -d -r -i $(ESP_IP) -I $(OTA_SERVER) -p 8266 -P 8266 -a $(OTA_PASSWD) -f $(TARGET_DIR)/$(SKETCH).bin clean: rm -rf $(TARGET_DIR) monitor: screen $(MONITOR_PORT) 115200 new-library: $(eval NEW_LIB = $(LIBRARY_DIR)/$(LIB)) mkdir -p $(NEW_LIB) $(eval UC = $(shell echo '$(LIB)' | tr '[:lower:]' '[:upper:]')) @ echo "#ifndef $(UC)_h" > $(NEW_LIB)/$(LIB).h @ echo "#define $(UC)_h" >> $(NEW_LIB)/$(LIB).h @ echo "" >> $(NEW_LIB)/$(LIB).h @ echo "#endif" >> $(NEW_LIB)/$(LIB).h .PHONY: all compile test library upload ota clean monitor $(TARGET_DIR)/$(BIN): $(SRC) $(HDRS) $(LIBS) @ echo $(FQBN) @ mkdir -p $(TARGET_DIR) arduino-cli compile -logger=machine \ --fqbn=$(FQBN) \ --library "$(subst $(space),$(sep),$(strip $(sort $(dir $(wildcard $(LIBRARY_DIR)/*/)))))" \ --build-path "$(TARGET_DIR)" \ --warnings=none \ --verbose \ "$(SKETCH_DIR)/$(SKETCH)" $(BIN_DIR)/$(BIN): $(TARGET_DIR)/$(BIN) @ echo "$(BIN) $(BIN_DIR)/" @ cp $(TARGET_DIR)/$(BIN) $(BIN_DIR)/