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)