# Makefile pre Arduino a deriváty, v. 2.0

PROGRAM ?= $(wildcard ./*.ino)

HW_LIB ?= $(strip $(shell awk -F'=' '/^[[:space:]]*HW_LIB[[:space:]]*=/ {print $$2; exit}' $(PROGRAM)))

ifeq ($(HW_LIB),none)
$(info HW_LIB nie je definovaný)
HW_LIB :=
else ifeq ($(HW_LIB),)
$(info V súbore $(PROGRAM) sa nenašlo // HW_LIB=...)
HW_LIB :=
endif

ifeq ($(wildcard /dev/ttyACM*),)
    ifeq ($(wildcard /dev/ttyUSB*),)
        PORT ?= 
    else
        PORT ?= $(firstword $(wildcard /dev/ttyUSB*))
    endif
else
    PORT ?= $(firstword $(wildcard /dev/ttyACM*))
endif


ifeq ($(wildcard fqbn.txt),)
    $(error Chyba: neviem nájsť súbor fqbn.txt)
else
    FQBN ?= $(shell cat fqbn.txt)
endif


ARDUINO-CLI-BIN ?= /home/richard/.arduino15/arduino-cli

ifeq ($(wildcard $(ARDUINO-CLI-BIN)),)
    $(error Chyba: neviem nájsť arduino-cli!)
endif


kompiler-verify ?= $(ARDUINO-CLI-BIN) compile -b 
kompiler-verbose ?= $(ARDUINO-CLI-BIN) compile -v -b
kompiler-upload ?= $(ARDUINO-CLI-BIN) upload -v -b



.PHONY: all upload upload-term

all:
	$(ARDUINO-CLI-BIN) compile -b $(FQBN) $(PROGRAM)


verbose: 
	$(ARDUINO-CLI-BIN) compile -v -b $(FQBN) $(PROGRAM)


upload-term:
ifeq ($(PORT),)
	$(error Chyba: zariadenie nepripojené!)
else
	@echo "Zariadenie pripojené na: $(PORT)"; \
	xterm -fa 'Monospace:size=10' -e "$(ARDUINO-CLI-BIN) upload -v -b $(FQBN) -p $(PORT) $(PROGRAM); read"; 
endif


upload:
ifeq ($(PORT),)
	$(error Chyba: zariadenie nepripojené!)
else
	@echo "Zariadenie pripojené na: $(PORT)"; \
	$(ARDUINO-CLI-BIN) upload -v -b $(FQBN) -p $(PORT) $(PROGRAM);
endif


fqbn:
	$(ARDUINO-CLI-BIN) board listall


tags:
	~/coding/arduino/projecttags/ptags.sh $(HW_LIB)
