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:
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)