forked from LeaoMartelo2/virtual_machine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
62 lines (39 loc) · 1.63 KB
/
Copy pathMakefile
File metadata and controls
62 lines (39 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
.PHONY: clear clean
CC := gcc
CFLAGS := -Wall -Wextra -Wswitch-enum -Wno-override-init -ldl -std=c11 -ggdb
VM_VERSION := $(shell expr `cksum src/spec.h | cut -f1 -d' '` % 100000 || 00000)
GIT_HASH := $(shell git describe --always --dirty 2>/dev/null || echo "Not a git environment")
BUILD_DATE := $(shell date "+%Y-%m-%d %H:%M:%S" || echo "Unable to get date(?)")
CFLAGS += -DVM_VERSION=$(VM_VERSION)
CFLAGS += -DGIT_HASH='"$(GIT_HASH)"'
CFLAGS += -DBUILD_DATE='"$(BUILD_DATE)"'
GLOBAL_DEPS = src/spec.h
INTERPRETER_DEPS = src/vm/error.h
all: vm disasm vmasm
# VM
vm: build/vm/vm.o build/vm/opcodes.o
${CC} $^ -o vm ${CFLAGS}
build/vm/vm.o: src/vm/main.c src/vm/opcodes.h ${GLOBAL_DEPS} ${INTERPRETER_DEPS}
${CC} -c src/vm/main.c -o build/vm/vm.o ${CFLAGS}
build/vm/opcodes.o: src/vm/opcodes.c src/vm/opcodes.h ${GLOBAL_DEPS} ${INTERPRETER_DEPS}
${CC} -c src/vm/opcodes.c -o build/vm/opcodes.o ${CFLAGS}
# DISASSEMBLER
disasm: build/disassemble/main.o
${CC} $^ -o disasm ${CFLAGS}
build/disassemble/main.o: src/disassemble/main.c ${GLOBAL_DEPS}
${CC} -c src/disassemble/main.c -o build/disassemble/main.o ${CFLAGS}
## ASSEMBLER
vmasm: build/assemble/main.o
${CC} $^ -o vmasm ${CFLAGS}
build/assemble/main.o: src/assembler/main.c ${GLOBAL_DEPS}
${CC} -c src/assembler/main.c -o build/assemble/main.o ${CFLAGS}
# MISC
externlib:
make -C example_programs/externlib
tests: all
make -C tests/ tests
clean: clear
clear:
rm -f *.obj *.bin disassembled.asm file.txt index.html RAM.DATA VM.dump crash_log.txt vm vmasm disasm build/vm/*.o build/disassemble/*.o build/assemble/*.o
make -C tests clear
make -C example_programs/externlib/ clear