BUILD_DIR=.build
OUT=$(BUILD_DIR)/litter-controller
DEPS=-lwiringPi -lwiringPiDev -lpthread -lcrypt -lm -lrt -largparse -Largparse/
WARNINGS=-Wall
FLAGS=$(DEPS) $(WARNINGS)
COMPILER=gcc
PREFIX?=/usr/local
INSTALL_DIR?=$(PREFIX)/bin
SYSTEMD_UNIT_DESTINATION?=/etc/systemd/system/

.PHONY: test install uninstall clean

$(OUT): $(wildcard ./*.c)
	mkdir -p $(BUILD_DIR)
	set -ex && $(COMPILER) $< $(FLAGS) -o $@

deploy: $(out) install service

test: $(OUT)
	./$(OUT) -d9 -I53

deps:
	git submodule update --init
	cd wiringPi; ./build; cd ../
	$(MAKE) -Cargparse/
	install argparse/libargparse.so $(PREFIX)/lib/
	install argparse/argparse.h $(PREFIX)/include/
	ldconfig

install: $(OUT)
	install -d $(INSTALL_DIR)
	install $(OUT) $(INSTALL_DIR)

service:
	install litter-controller.service $(SYSTEMD_UNIT_DESTINATION)
	systemctl enable litter-controller.service
	systemctl restart litter-controller.service

rpi-config:
	install config.txt /boot/
	touch /boot/ssh
	echo i2c-dev > /etc/modules-load.d/i2c.conf
	usermod -a -G i2c pi
	modprobe i2c-dev

logs:
	journalctl -fu litter-controller

uninstall:
	$(RM) $(INSTALL_DIR)/$(OUT)

clean:
	$(RM) -r $(BUILD_DIR)

GITROOT=$(shell git rev-parse --show-toplevel)
include $(shell test -d $(GITROOT)/include.mk/ || git clone git@github.com:smaslennikov/include.mk.git && echo $(GITROOT))/include.mk/*.mk
