# this could be done better RELEASE ?= 0 OPTFLAGS != [ "$(RELEASE)" != "0" ] \ && echo "-O2 -flto=auto" \ || echo "-O0" DEBUG ?= 1 DEBUGFLAGS != [ "$(DEBUG)" != "0" ] \ && echo "-DDEBUG=1" \ || echo "-DNDEBUG=1" ASSERT ?= 1 ASSERTFLAGS != [ "$(ASSERT)" != "0" ] \ && echo "-DASSERT=1" \ || echo JIT ?= 1 JITFLAGS != [ "$(JIT)" != "0" ] \ && echo "-DJIT=1" \ || echo "-DJIT=0" DEPFLAGS = -MT $@ -MMD -MP -MF $@.d LINTFLAGS = -fsyntax-only PREPROCESS = -E BUILD = build all: posthaste OBFLAGS = -g WARNFLAGS = -Wall COMPILE_FLAGS = $(CFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(OBFLAGS) $(ASSERTFLAGS) \ $(DEBUGFLAGS) $(JITFLAGS) LINK_FLAGS = $(LDFLAGS) -lm INCLUDE_FLAGS = -I include -I deps/ejit/include COMPILE = $(CC) \ $(COMPILE_FLAGS) $(DEPFLAGS) $(INCLUDE_FLAGS) LINT = $(CC) \ $(COMPILE_FLAGS) $(LINTFLAGS) $(INCLUDE_FLAGS) COMPILE_POSTHASTE = $(COMPILE) -include deps.mk gen/gen_parser.c: src/parser.y gen/gen_lexer.inc bison -Wcounterexamples -o gen/gen_parser.c src/parser.y gen/gen_lexer.inc: src/lexer.l flex -o gen/gen_lexer.inc src/lexer.l posthaste: $(POSTHASTE_OBJS) deps/ejit/libejit.a $(COMPILE_POSTHASTE) $(POSTHASTE_OBJS) deps/ejit/libejit.a -o $@ $(LINK_FLAGS) # might lint some common things twice .PHONY: lint: $(POSTHASTE_LINTS)