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")
|
((nil . ((projectile-project-compilation-cmd . "make")
|
||||||
(projectile-project-configure-cmd . "make clean")
|
(projectile-project-configure-cmd . "make clean")
|
||||||
(+license/license-choice . "GPLv2")))
|
(+license/license-choice . "GPLv2")))
|
||||||
(c-mode . ((flycheck-gcc-include-path . (".."))
|
(c++-mode . ((flycheck-gcc-include-path . (".." "../avm"))
|
||||||
(flycheck-clang-include-path . (".."))
|
(flycheck-clang-include-path . (".." "../avm"))
|
||||||
(company-clang-arguments . ("-I.."))
|
(company-clang-arguments . ("-I.." "-I../avm"))
|
||||||
(eval . (clang-format-mode t))))
|
|
||||||
(c++-mode . ((flycheck-gcc-include-path . (".."))
|
|
||||||
(flycheck-clang-include-path . (".."))
|
|
||||||
(company-clang-arguments . ("-I.."))
|
|
||||||
(eval . (clang-format-mode t)))))
|
(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++
|
CPP=g++
|
||||||
|
|
||||||
VERBOSE=0
|
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
|
DEBUG-FLAGS=-ggdb -fsanitize=address
|
||||||
RELEASE-FLAGS=-O3
|
RELEASE-FLAGS=-O3
|
||||||
CFLAGS:=$(GENERAL-FLAGS) -std=c11 $(DEBUG-FLAGS) -D VERBOSE=$(VERBOSE)
|
|
||||||
CPPFLAGS:=$(GENERAL-FLAGS) -std=c++17 $(DEBUG-FLAGS) -D VERBOSE=$(VERBOSE)
|
CPPFLAGS:=$(GENERAL-FLAGS) -std=c++17 $(DEBUG-FLAGS) -D VERBOSE=$(VERBOSE)
|
||||||
|
|
||||||
LIBS=-lm
|
LIBS=-lm
|
||||||
@@ -15,21 +13,6 @@ TERM_GREEN:=$(shell echo -e "\e[0;32m")
|
|||||||
TERM_RESET:=$(shell echo -e "\e[0;0m")
|
TERM_RESET:=$(shell echo -e "\e[0;0m")
|
||||||
|
|
||||||
# Setup variables for source code, output, etc
|
# 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
|
## ASSEMBLY setup
|
||||||
ASM_DIST=$(DIST)/asm
|
ASM_DIST=$(DIST)/asm
|
||||||
ASM_SRC=asm
|
ASM_SRC=asm
|
||||||
@@ -46,34 +29,24 @@ EXAMPLES=$(EXAMPLES_DIST)/instruction-test.out $(EXAMPLES_DIST)/fib.out $(EXAMPL
|
|||||||
## Dependencies
|
## Dependencies
|
||||||
DEPDIR:=$(DIST)/dependencies
|
DEPDIR:=$(DIST)/dependencies
|
||||||
DEPFLAGS = -MT $@ -MMD -MP -MF
|
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`
|
# 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)
|
asm: $(ASM_OUT)
|
||||||
examples: $(EXAMPLES)
|
examples: $(EXAMPLES)
|
||||||
|
|
||||||
# Recipes
|
# 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
|
## 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)
|
@$(CPP) $(ASM_CFLAGS) $^ -o $@ $(LIBS)
|
||||||
@echo "$(TERM_GREEN)$@$(TERM_RESET): $^"
|
@echo "$(TERM_GREEN)$@$(TERM_RESET): $^"
|
||||||
|
|
||||||
@@ -90,6 +63,13 @@ $(EXAMPLES_DIST)/%.out: $(EXAMPLES_SRC)/%.asm $(ASM_OUT) | $(EXAMPLES_DIST)
|
|||||||
run-examples: $(EXAMPLES)
|
run-examples: $(EXAMPLES)
|
||||||
@$(foreach example,$(EXAMPLES), echo "$(TERM_YELLOW)$(example)$(TERM_RESET)"; $(MAKE) -s interpret BYTECODE=$(example);)
|
@$(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=
|
OUT=
|
||||||
ARGS=
|
ARGS=
|
||||||
|
|
||||||
@@ -99,7 +79,8 @@ run: $(DIST)/$(OUT)
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -rfv $(DIST)/*
|
@rm -rfv $(DIST)/*
|
||||||
|
@$(MAKE) -C $(AVM_ROOT_DIR) clean
|
||||||
|
|
||||||
SOURCE=
|
SOURCE=
|
||||||
BYTECODE=
|
BYTECODE=
|
||||||
@@ -118,27 +99,15 @@ exec: $(ASM_OUT) $(VM_OUT)
|
|||||||
|
|
||||||
# Directories
|
# Directories
|
||||||
$(DIST):
|
$(DIST):
|
||||||
mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(LIB_DIST):
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
$(VM_DIST):
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
$(ASM_DIST):
|
$(ASM_DIST):
|
||||||
mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(EXAMPLES_DIST):
|
$(EXAMPLES_DIST):
|
||||||
mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(DEPDIR)/lib:
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
$(DEPDIR)/asm:
|
$(DEPDIR)/asm:
|
||||||
mkdir -p $@
|
@mkdir -p $@
|
||||||
|
|
||||||
$(DEPDIR)/vm:
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
-include $(wildcard $(DEPS))
|
-include $(wildcard $(DEPS))
|
||||||
|
|||||||
1
avm
Submodule
1
avm
Submodule
Submodule avm added at c833f4946b
Reference in New Issue
Block a user