CC ?= cc
CXX ?= c++
CFLAGS ?= -O2 -Wall -Wextra -Werror -std=c99
CXXFLAGS ?= -O2 -Wall -Wextra -Werror -std=c++11
CPPFLAGS += -Iinclude
PKG_CONFIG ?= pkg-config

.PHONY: all check
all: build/libintouch.a build/edge-host

build:
	mkdir -p build

build/intouch.o: src/intouch.c include/intouch.h | build
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@

build/libintouch.a: build/intouch.o
	$(AR) rcs $@ $<

build/edge-host: examples/edge_host.c build/libintouch.a
	$(CC) $(CPPFLAGS) $(CFLAGS) $$($(PKG_CONFIG) --cflags json-c libcurl) $< build/libintouch.a $$($(PKG_CONFIG) --libs json-c libcurl) -lm -o $@

build/core-test: tests/core.c build/libintouch.a
	$(CC) $(CPPFLAGS) $(CFLAGS) $< build/libintouch.a -lm -o $@

build/cpp-test: tests/link.cpp build/libintouch.a
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< build/libintouch.a -lm -o $@

build/rtos-adapter.o: examples/rtos_adapter.c include/intouch.h | build
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@

check: build/core-test build/cpp-test build/rtos-adapter.o
	./build/core-test
	./build/cpp-test
