CC := clang
CFLAGS := -Wall -Wextra -Werror -std=c11

OUTDIR := dist
HEADER := accent_score.h
EXAMPLE := example.c

OUTHEADER := $(OUTDIR)/accent_score.h
OUTOBJ := $(OUTDIR)/accent_score.o
OUTSTATIC := $(OUTDIR)/libaccent_score.a
OUTEXAMPLE := example

.PHONY: all
all: $(OUTHEADER) $(OUTSTATIC)

$(OUTDIR):
	mkdir -p $(OUTDIR)

$(OUTHEADER): $(HEADER) | $(OUTDIR)
	# remove implementation code from the header file
	sed '/^#ifdef ACCENT_SCORE_IMPLEMENTATION$$/,/^#endif \/\/ ACCENT_SCORE_IMPLEMENTATION$$/d' \
		$(HEADER) > $(OUTHEADER)

$(OUTOBJ): $(HEADER) | $(OUTDIR)
	$(CC) $(CFLAGS) -DACCENT_SCORE_IMPLEMENTATION -x c -c $(HEADER) -o $(OUTOBJ)

$(OUTSTATIC): $(OUTOBJ)
	ar rcs $(OUTSTATIC) $(OUTOBJ)

.PHONY: clean
clean:
	rm -rf $(OUTDIR)
	rm -f $(OUTEXAMPLE)

.PHONY: run-example
run-example: $(EXAMPLE) $(HEADER)
	$(CC) $(CFLAGS) $(EXAMPLE) -o $(OUTEXAMPLE) -lm
	./$(OUTEXAMPLE)