summaryrefslogtreecommitdiff
path: root/Makefile
blob: 507f95db94b80990183c34b0fa873e067ec01afc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Optionally some environment variables can be set:
#
#   FQBN        Fully Qualified Board Name; if not set in the environment
#               it will be assigned a value in this makefile
#
#   SERIAL_DEV  Serial device to upload the sketch; if not set in the
#               environment it will be assigned:
#               /dev/ttyUSB0   if it exists, or
#               /dev/ttyACM0   if it exists, or
#               unknown
#
#   MDNS_NAME   Hostname of the Arduino; if not set in the environment
#               it will be assigned a value in this makefile. This is
#               needed for OTA update, the device will be searched
#               on the local subnet using this name
#
#   OTA_PORT    Port used by OTA update; if not set in the environment
#               it will be assigned the default value of 8266 in this
#               makefile
#
#   OTA_PASS    Password used for OTA update; if not set in the environment
#               it will be assigned the default value of an empty string

PROGNAME = mush

CORE = esp8266:esp8266

FQBN      =  $(CORE):espmxdevkit
MDNS_NAME =  $(PROGNAME)
OTA_PORT  =  8266
OTA_PASS  =

.DEFAULT_GOAL = all

init:
	[ -e /home/d/.arduino15/arduino-cli.yaml ] || arduino-cli config init
	arduino-cli config set board_manager.additional_urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
	arduino-cli core update-index
	arduino-cli core install $(CORE)
	arduino-cli lib update-index
	arduino-cli lib install 'DHT sensor library'

SERIAL_DEV = $(firstword $(wildcard /dev/ttyUSB* /dev/ttyACM*))

ifneq (,$(wildcard init))
BUILD_DIR != $(cli) compile --show-properties | sed -ne 's/^build.path=//p'
PLAT_PATH != $(cli) compile --show-properties | sed -ne 's/^runtime.platform.path=//p'
PY_PATH != $(cli) compile --show-properties | sed -ne 's/^runtime.tools.python3.path=//p'
MDNS_IP != getent ahostsv4 $(MDNS_NAME).local | (read ip _; echo $$ip)
endif

cli = arduino-cli -b "$(FQBN)"

SRC        := CCS811.cpp $(PROGNAME).ino
HDRS       := CCS811.h ota.h wifiinfo.h
BIN        := $(BUILD_DIR)/$(PROGNAME).ino.bin
ELF        := $(BUILD_DIR)/$(PROGNAME).ino.elf

all: $(ELF)
.PHONY: all

compile: $(ELF)
.PHONY: compile

$(BIN) $(ELF): $(SRC) $(HDRS)
	$(cli) compile --warnings all

upload: $(ELF)
	$(cli) upload -p "$(SERIAL_DEV)"

ota: $(BIN)
	[ "$(MDNS_IP)" ]
	"$(PY_PATH)/python3" "$(PLAT_PATH)/tools/espota.py" -i "$(MDNS_IP)" -p "$(OTA_PORT)" --auth="$(OTA_PASS)" -f "$(BIN)"