Made AVM a git submodule, updated the Makefile to build assembler
Also updated dir-locals to make include path resolution accurate.
This commit is contained in:
@@ -4,11 +4,7 @@
|
||||
((nil . ((projectile-project-compilation-cmd . "make")
|
||||
(projectile-project-configure-cmd . "make clean")
|
||||
(+license/license-choice . "GPLv2")))
|
||||
(c-mode . ((flycheck-gcc-include-path . (".."))
|
||||
(flycheck-clang-include-path . (".."))
|
||||
(company-clang-arguments . ("-I.."))
|
||||
(eval . (clang-format-mode t))))
|
||||
(c++-mode . ((flycheck-gcc-include-path . (".."))
|
||||
(flycheck-clang-include-path . (".."))
|
||||
(company-clang-arguments . ("-I.."))
|
||||
(c++-mode . ((flycheck-gcc-include-path . (".." "../avm"))
|
||||
(flycheck-clang-include-path . (".." "../avm"))
|
||||
(company-clang-arguments . ("-I.." "-I../avm"))
|
||||
(eval . (clang-format-mode t)))))
|
||||
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "avm"]
|
||||
path = avm
|
||||
url = git@github.com:aryadev-software/avm
|
||||
79
Makefile
79
Makefile
@@ -1,11 +1,9 @@
|
||||
CC=gcc
|
||||
CPP=g++
|
||||
|
||||
VERBOSE=0
|
||||
GENERAL-FLAGS=-Wall -Wextra -Werror -Wswitch-enum -I$(shell pwd)
|
||||
GENERAL-FLAGS=-Wall -Wextra -Werror -Wswitch-enum -std=c++17 -I$(shell pwd) -I$(shell pwd)/avm
|
||||
DEBUG-FLAGS=-ggdb -fsanitize=address
|
||||
RELEASE-FLAGS=-O3
|
||||
CFLAGS:=$(GENERAL-FLAGS) -std=c11 $(DEBUG-FLAGS) -D VERBOSE=$(VERBOSE)
|
||||
CPPFLAGS:=$(GENERAL-FLAGS) -std=c++17 $(DEBUG-FLAGS) -D VERBOSE=$(VERBOSE)
|
||||
|
||||
LIBS=-lm
|
||||
@@ -15,21 +13,6 @@ TERM_GREEN:=$(shell echo -e "\e[0;32m")
|
||||
TERM_RESET:=$(shell echo -e "\e[0;0m")
|
||||
|
||||
# Setup variables for source code, output, etc
|
||||
## Lib setup
|
||||
LIB_DIST=$(DIST)/lib
|
||||
LIB_SRC=lib
|
||||
LIB_CODE:=$(addprefix $(LIB_SRC)/, base.c darr.c heap.c inst.c)
|
||||
LIB_OBJECTS:=$(LIB_CODE:$(LIB_SRC)/%.c=$(LIB_DIST)/%.o)
|
||||
LIB_CFLAGS=$(CFLAGS)
|
||||
|
||||
## VM setup
|
||||
VM_DIST=$(DIST)/vm
|
||||
VM_SRC=vm
|
||||
VM_CODE:=$(addprefix $(VM_SRC)/, runtime.c)
|
||||
VM_OBJECTS:=$(VM_CODE:$(VM_SRC)/%.c=$(VM_DIST)/%.o)
|
||||
VM_CFLAGS:=$(CFLAGS)
|
||||
VM_OUT=$(DIST)/ovm.out
|
||||
|
||||
## ASSEMBLY setup
|
||||
ASM_DIST=$(DIST)/asm
|
||||
ASM_SRC=asm
|
||||
@@ -46,34 +29,24 @@ EXAMPLES=$(EXAMPLES_DIST)/instruction-test.out $(EXAMPLES_DIST)/fib.out $(EXAMPL
|
||||
## Dependencies
|
||||
DEPDIR:=$(DIST)/dependencies
|
||||
DEPFLAGS = -MT $@ -MMD -MP -MF
|
||||
DEPS:=$($(LIB_SRC):%.c=$(DEPDIR):%.o) $($(ASM_SRC):%.c=$(DEPDIR):%.o) $($(VM_SRC):%.c=$(DEPDIR):%.o)
|
||||
DEPS:=$($(ASM_SRC):%.c=$(DEPDIR):%.o)
|
||||
|
||||
## AVM
|
||||
AVM_ROOT_DIR:=$(shell pwd)/avm
|
||||
AVM_DIR:=$(AVM_ROOT_DIR)/lib
|
||||
AVM_DIST:=$(AVM_ROOT_DIR)/build/lib
|
||||
AVM_SOURCE:=$(shell find $(AVM_DIR) -name '*.c')
|
||||
AVM_OBJECTS:=$(AVM_SOURCE:$(AVM_DIR)/%.c=$(AVM_DIST)/%.o)
|
||||
|
||||
# Things you want to build on `make`
|
||||
all: $(DIST) lib vm asm examples
|
||||
all: $(DIST) asm examples
|
||||
|
||||
lib: $(LIB_OBJECTS)
|
||||
vm: $(VM_OUT)
|
||||
asm: $(ASM_OUT)
|
||||
examples: $(EXAMPLES)
|
||||
|
||||
# Recipes
|
||||
## LIB Recipes
|
||||
|
||||
$(LIB_DIST)/%.o: $(LIB_SRC)/%.c | $(LIB_DIST) $(DEPDIR)/lib
|
||||
@$(CC) $(LIB_CFLAGS) $(DEPFLAGS) $(DEPDIR)/lib/$*.d -c $< -o $@ $(LIBS)
|
||||
@echo "$(TERM_YELLOW)$@$(TERM_RESET): $<"
|
||||
|
||||
## VM Recipes
|
||||
$(VM_OUT): $(LIB_OBJECTS) $(VM_OBJECTS) $(VM_DIST)/main.o
|
||||
@$(CC) $(VM_CFLAGS) $^ -o $@ $(LIBS)
|
||||
@echo "$(TERM_GREEN)$@$(TERM_RESET): $^"
|
||||
|
||||
$(VM_DIST)/%.o: $(VM_SRC)/%.c | $(VM_DIST) $(DEPDIR)/vm
|
||||
@$(CC) $(VM_CFLAGS) $(DEPFLAGS) $(DEPDIR)/vm/$*.d -c $< -o $@ $(LIBS)
|
||||
@echo "$(TERM_YELLOW)$@$(TERM_RESET): $<"
|
||||
|
||||
## ASSEMBLY Recipes
|
||||
$(ASM_OUT): $(LIB_OBJECTS) $(ASM_OBJECTS) $(ASM_DIST)/main.o
|
||||
$(ASM_OUT): $(AVM_OBJECTS) $(ASM_OBJECTS) $(ASM_DIST)/main.o
|
||||
@$(CPP) $(ASM_CFLAGS) $^ -o $@ $(LIBS)
|
||||
@echo "$(TERM_GREEN)$@$(TERM_RESET): $^"
|
||||
|
||||
@@ -90,6 +63,13 @@ $(EXAMPLES_DIST)/%.out: $(EXAMPLES_SRC)/%.asm $(ASM_OUT) | $(EXAMPLES_DIST)
|
||||
run-examples: $(EXAMPLES)
|
||||
@$(foreach example,$(EXAMPLES), echo "$(TERM_YELLOW)$(example)$(TERM_RESET)"; $(MAKE) -s interpret BYTECODE=$(example);)
|
||||
|
||||
## libavm
|
||||
$(AVM_OBJECTS): libavm;
|
||||
|
||||
.PHONY: libavm
|
||||
libavm:
|
||||
@$(MAKE) -C $(AVM_ROOT_DIR) lib
|
||||
|
||||
OUT=
|
||||
ARGS=
|
||||
|
||||
@@ -99,7 +79,8 @@ run: $(DIST)/$(OUT)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rfv $(DIST)/*
|
||||
@rm -rfv $(DIST)/*
|
||||
@$(MAKE) -C $(AVM_ROOT_DIR) clean
|
||||
|
||||
SOURCE=
|
||||
BYTECODE=
|
||||
@@ -118,27 +99,15 @@ exec: $(ASM_OUT) $(VM_OUT)
|
||||
|
||||
# Directories
|
||||
$(DIST):
|
||||
mkdir -p $@
|
||||
|
||||
$(LIB_DIST):
|
||||
mkdir -p $@
|
||||
|
||||
$(VM_DIST):
|
||||
mkdir -p $@
|
||||
@mkdir -p $@
|
||||
|
||||
$(ASM_DIST):
|
||||
mkdir -p $@
|
||||
@mkdir -p $@
|
||||
|
||||
$(EXAMPLES_DIST):
|
||||
mkdir -p $@
|
||||
|
||||
$(DEPDIR)/lib:
|
||||
mkdir -p $@
|
||||
@mkdir -p $@
|
||||
|
||||
$(DEPDIR)/asm:
|
||||
mkdir -p $@
|
||||
|
||||
$(DEPDIR)/vm:
|
||||
mkdir -p $@
|
||||
@mkdir -p $@
|
||||
|
||||
-include $(wildcard $(DEPS))
|
||||
|
||||
1
avm
Submodule
1
avm
Submodule
Submodule avm added at c833f4946b
Reference in New Issue
Block a user