toctave

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

commit ce6549282939619bd96dec5ab223225331d4f56f
parent c5ca583356dcc6e624992c018ff8cff0383e311d
Author: Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
Date:   Tue, 27 Sep 2022 19:57:19 +0330

Makefile,.gitignore: Use ./build dir

Diffstat:
M.gitignore | 2+-
MMakefile | 27++++++++++++++++-----------
2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,2 +1,2 @@ -*.test +build/ vm/ diff --git a/Makefile b/Makefile @@ -2,6 +2,7 @@ # See the output of `jitter-config --dispatches` command for valid values JITTER_DISPATCH ?= switch JITTER_PREFIX ?= $(HOME)/usr +B ?= ./build CFLAGS += -std=gnu99 CXXFLAGS += -Wall -Wextra -std=c++17 -g3 -fsanitize=address @@ -10,36 +11,40 @@ LDFLAGS += -lm #--- -J = ${JITTER_PREFIX}/bin/jitter -JC = ${JITTER_PREFIX}/bin/jitter-config --dispatch=$(JITTER_DISPATCH) +J := ${JITTER_PREFIX}/bin/jitter +JC := ${JITTER_PREFIX}/bin/jitter-config --dispatch=$(JITTER_DISPATCH) JCPPFLAGS += -I vm/ $(shell $(JC) --cppflags) JCFLAGS += $(shell $(JC) --cflags) JLDFLAGS += $(shell $(JC) --ldflags --ldadd) -BINS = ast.test cgen.test -VM = vm/toctave-vm1.c vm/toctave-vm2.c vm/toctave-vm.h -VM_OBJS = vm/toctave-vm1.o vm/toctave-vm2.o +BINS := $(B)/ast.test $(B)/cgen.test +VM := vm/toctave-vm1.c vm/toctave-vm2.c vm/toctave-vm.h +VM_OBJS := $(B)/toctave-vm1.o $(B)/toctave-vm2.o all: $(BINS) -ast.test: ast.test.cpp ast.cpp ast.hpp +$(B)/ast.test: ast.test.cpp ast.cpp ast.hpp + @[ -d $(B) ] || mkdir $(B) $(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $< ast.cpp -cgen.test: cgen.hpp ast.hpp env.hpp -cgen.test: cgen.test.cpp cgen.cpp ast.cpp env.cpp $(VM_OBJS) +$(B)/cgen.test: cgen.hpp ast.hpp env.hpp +$(B)/cgen.test: cgen.test.cpp cgen.cpp ast.cpp env.cpp $(VM_OBJS) + @[ -d $(B) ] || mkdir $(B) $(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $< cgen.cpp ast.cpp env.cpp \ $(VM_OBJS) $(JCPPFLAGS) $(JLDFLAGS) $(VM) &: toctave.jitter $(J) -o vm/ $< -vm/toctave-vm1.o: vm/toctave-vm1.c +$(B)/toctave-vm1.o: vm/toctave-vm1.c + @[ -d $(B) ] || mkdir $(B) $(CC) -c -o $@ $< $(CPPFLAGS) $(CFLAGS) $(JCPPFLAGS) $(JLDFLAGS) -vm/toctave-vm2.o: vm/toctave-vm2.c +$(B)/toctave-vm2.o: vm/toctave-vm2.c + @[ -d $(B) ] || mkdir $(B) $(CC) -c -o $@ $< $(CPPFLAGS) $(CFLAGS) $(JCPPFLAGS) $(JCFLAGS) $(JLDFLAGS) .PHONY: clean clean: - rm -f $(BINS) $(VM) + rm -rf $(VM) $(B) # $(BINS) $(VM_OBJS)