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)