toctave

t(iny)octave
git clone https://0xff.ir/g/toctave.git
Log | Files | Refs | README

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)