CC = gcc LEX = flex YAXX = bison CFLAGS = -Wall -Wextra -std=c11 -g -I. -D_GNU_SOURCE LDFLAGS = -lfl ifneq ($(DEBUG),) CFLAGS += -DDEBUG=$(value DEBUG) endif ifeq ($(shell uname), Darwin) LDFLAGS += -L/usr/local/opt/flex/lib CFLAGS += -I/usr/local/opt/flex/include endif TARGET = ccomp .PHONY: all clean all: $(TARGET) clean: rm -f $(TARGET) *.o rm -rf bison-out bison-out/y.tab.c bison-out/y.tab.h: c.y @mkdir -p bison-out bison -d -b bison-out/y c.y bison-out/lex.yy.c: c.l @mkdir -p bison-out flex -o bison-out/lex.yy.c c.l $(TARGET): $(wildcard *.c) $(wildcard *.h) bison-out/y.tab.c bison-out/lex.yy.c $(CC) $(CFLAGS) $(filter %.c,$^) $(LDFLAGS) -o $@