CC = g++ CFLAGS = -DSPDLOG_FMT_EXTERNAL -Wall -Wextra -std=c++20 -O2 -Iinclude/ -MMD ELECTRICITY_LOGGER_LFLAGS = -lsqlite3 -lspdlog -lfmt SOLAR_LOGGER_LFLAGS = -lsqlite3 -lcurl -lspdlog -lfmt SERVER_LFLAGS = -lpistache -lsqlite3 -lstdc++fs -lspdlog -lfmt SOLAR_LOGGER_CPPS = $(shell find src/solar-logger/ -name *.cpp) SOLAR_LOGGER_OBJS = $(patsubst src/%.cpp, build/%.o, ${SOLAR_LOGGER_CPPS}) SOLAR_LOGGER_DEPS = $(patsubst src/%.cpp, build/%.d, ${SOLAR_LOGGER_CPPS}) SOLAR_SRV_CPPS = $(shell find src/solar-server/ -name *.cpp) SOLAR_SRV_OBJS = $(patsubst src/%.cpp, build/%.o, ${SOLAR_SRV_CPPS}) SOLAR_SRV_DEPS = $(patsubst src/%.cpp, build/%.d, ${SOLAR_SRV_CPPS}) ELECT_LOGGER_CPPS = $(shell find src/electricity-logger/ -name *.cpp) ELECT_LOGGER_OBJS = $(patsubst src/%.cpp, build/%.o, ${ELECT_LOGGER_CPPS}) ELECT_LOGGER_DEPS = $(patsubst src/%.cpp, build/%.d, ${ELECT_LOGGER_CPPS}) SOLAR_LOGGER_BINARY_PATH = bin/solar-logger SOLAR_SRV_BINARY_PATH = bin/solar-server ELECT_LOGGER_BINARY_PATH = bin/electricity-logger INSTALL_PATH = /usr/local/bin/ # Test variables SOLAR_TEST_DATABASE = solarpaneloutput.db all: ${SOLAR_LOGGER_BINARY_PATH} ${SOLAR_SRV_BINARY_PATH} ${ELECT_LOGGER_BINARY_PATH} clean: -rm -rf bin/* build/* check-solar-logger: ${SOLAR_LOGGER_BINARY_PATH} ${SOLAR_TEST_DATABASE} ./${SOLAR_LOGGER_BINARY_PATH} -d ${SOLAR_TEST_DATABASE} -u "http://192.168.2.26/home.cgi" check-solar-server: ${SOLAR_SRV_BINARY_PATH} ${SOLAR_TEST_DATABASE} ./${SOLAR_SRV_BINARY_PATH} -d ${SOLAR_TEST_DATABASE} -c public/ -p 8080 check-electricity-logger: ${ELECT_LOGGER_BINARY_PATH} ./${ELECT_LOGGER_BINARY_PATH} -d /dev/ttyUSB0 -c additional_column_value install: install-loggers install-solar-server install-loggers: ${SOLAR_LOGGER_BINARY_PATH} ${ELECT_LOGGER_BINARY_PATH} cp -uv ${SOLAR_LOGGER_BINARY_PATH} ${INSTALL_PATH} cp -uv ${ELECT_LOGGER_BINARY_PATH} ${INSTALL_PATH} install-solar-server: ${SOLAR_SRV_BINARY_PATH} cp -uv ${SOLAR_SRV_BINARY_PATH} ${INSTALL_PATH} .PHONY: all \ clean \ check-solar-logger check-solar-server \ install \ install-loggers \ install-solar-server ${SOLAR_TEST_DATABASE}: ./script/createdb.sh ${SOLAR_TEST_DATABASE} ${SOLAR_LOGGER_BINARY_PATH}: ${SOLAR_LOGGER_OBJS} mkdir -p ${@D} ${CC} $^ ${SOLAR_LOGGER_LFLAGS} -o $@ ${SOLAR_SRV_BINARY_PATH}: ${SOLAR_SRV_OBJS} mkdir -p ${@D} ${CC} $^ ${SERVER_LFLAGS} -o $@ ${ELECT_LOGGER_BINARY_PATH}: ${ELECT_LOGGER_OBJS} mkdir -p ${@D} ${CC} $^ ${ELECTRICITY_LOGGER_LFLAGS} -o $@ build/%.o: src/%.cpp mkdir -p ${@D} ${CC} ${CFLAGS} -c $< -o $@ -include ${SOLAR_SRV_DEPS} -include ${SOLAR_LOGGER_DEPS} -include ${ELECT_LOGGER_DEPS}