Makefile (1454B)
1 2 # See the output of `jitter-config --dispatches` command for valid values 3 JITTER_DISPATCH ?= switch 4 JITTER_PREFIX ?= $(HOME)/usr 5 B ?= ./build 6 7 CFLAGS += -std=gnu99 8 CXXFLAGS += -Wall -Wextra -std=c++17 -g3 -fsanitize=address 9 CPPFLAGS += -I . -I $(JITTER_PREFIX)/include/ 10 LDFLAGS += -lm 11 12 #--- 13 14 J := ${JITTER_PREFIX}/bin/jitter 15 JC := ${JITTER_PREFIX}/bin/jitter-config --dispatch=$(JITTER_DISPATCH) 16 17 JCPPFLAGS += -I vm/ $(shell $(JC) --cppflags) 18 JCFLAGS += $(shell $(JC) --cflags) 19 JLDFLAGS += $(shell $(JC) --ldflags --ldadd) 20 21 BINS := $(B)/ast.test $(B)/cgen.test 22 VM := vm/toctave-vm1.c vm/toctave-vm2.c vm/toctave-vm.h 23 VM_OBJS := $(B)/toctave-vm1.o $(B)/toctave-vm2.o 24 25 all: $(BINS) 26 27 $(B)/ast.test: ast.test.cpp ast.cpp ast.hpp 28 @[ -d $(B) ] || mkdir $(B) 29 $(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $< ast.cpp 30 31 $(B)/cgen.test: cgen.hpp ast.hpp env.hpp 32 $(B)/cgen.test: cgen.test.cpp cgen.cpp ast.cpp env.cpp $(VM_OBJS) 33 @[ -d $(B) ] || mkdir $(B) 34 $(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $< cgen.cpp ast.cpp env.cpp \ 35 $(VM_OBJS) $(JCPPFLAGS) $(JLDFLAGS) 36 37 $(VM) &: toctave.jitter 38 $(J) -o vm/ $< 39 40 $(B)/toctave-vm1.o: vm/toctave-vm1.c 41 @[ -d $(B) ] || mkdir $(B) 42 $(CC) -c -o $@ $< $(CPPFLAGS) $(CFLAGS) $(JCPPFLAGS) $(JLDFLAGS) 43 44 $(B)/toctave-vm2.o: vm/toctave-vm2.c 45 @[ -d $(B) ] || mkdir $(B) 46 $(CC) -c -o $@ $< $(CPPFLAGS) $(CFLAGS) $(JCPPFLAGS) $(JCFLAGS) $(JLDFLAGS) 47 48 .PHONY: clean 49 clean: 50 rm -rf $(VM) $(B) # $(BINS) $(VM_OBJS)