CC      = gcc
CFLAGS  = -Wall -Wextra -O2 -Iinclude $(shell pkg-config --cflags libpulse)
LDFLAGS = $(shell pkg-config --libs libpulse) -lrt -lpthread

PULSE   = src/pulse.c

.PHONY: all clean serve blog test test-all

all: tx rx chat bt carrier

test: test/unit
	@./test/unit

test-all: test/unit test/integration test/functional
	@echo "--- unit ---"
	@./test/unit
	@echo "--- integration ---"
	@./test/integration
	@echo "--- functional ---"
	@./test/functional

test/unit: test/unit.c include/zebra.h include/modem.h test/test.h
	$(CC) $(CFLAGS) -o $@ test/unit.c

test/integration: test/integration.c src/pulse.c include/zebra.h include/modem.h test/test.h
	$(CC) $(CFLAGS) -o $@ test/integration.c src/pulse.c $(LDFLAGS)

test/functional: test/functional.c src/pulse.c include/zebra.h include/modem.h test/test.h
	$(CC) $(CFLAGS) -o $@ test/functional.c src/pulse.c $(LDFLAGS)

tx: src/tx.c $(PULSE)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

rx: src/rx.c $(PULSE)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

chat: src/chat.c $(PULSE)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

bt: src/bt.c $(PULSE)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

carrier: src/carrier.c
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

blog:
	python3 blog/build.py

serve: blog
	cd web && python3 -m http.server 8765

clean:
	rm -f tx rx chat bt carrier test/unit test/integration test/functional
	rm -rf web/blog/001-volume-modem web/blog/002-sse-chatroom web/blog/index.html
