-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (47 loc) · 1.18 KB
/
Copy pathMakefile
File metadata and controls
59 lines (47 loc) · 1.18 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
CC := gcc
CFLAGS := -std=c11 -Wall -Wextra -O2 -g -Iinclude
LDFLAGS :=
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
LDFLAGS += -ldl
endif
ARCH := $(shell uname -m)
ifeq ($(ARCH),x86_64)
ARCH_DIR := x86_64
ARCH_SRCS := src/jit/arch/x86_64/jit_x86_64.c
else ifeq ($(ARCH),aarch64)
ARCH_DIR := aarch64
ARCH_SRCS := src/jit/arch/aarch64/jit_aarch64.c
else ifeq ($(ARCH),arm64)
ARCH_DIR := aarch64
ARCH_SRCS := src/jit/arch/aarch64/jit_aarch64.c
else
$(warning "JIT not supported for architecture: $(ARCH). JIT will be disabled.")
ARCH_SRCS :=
endif
BASE_SRCS := \
src/main.c \
src/util.c \
src/vm.c \
src/compiler.c \
src/jit/jit.c \
src/jit/jit_common.c \
src/jit/runtime/jit_runtime.c
SRCS := $(BASE_SRCS) $(ARCH_SRCS)
BUILD_DIR := build
OBJS := $(SRCS:src/%.c=$(BUILD_DIR)/%.o)
TARGET := brainbork
all: $(TARGET)
$(TARGET): $(OBJS)
@echo "Linking $@"
$(CC) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS)
$(BUILD_DIR)/%.o: src/%.c
@mkdir -p $(dir $@)
@echo "Compiling $<"
$(CC) $(CFLAGS) -c $< -o $@
run: $(TARGET)
@echo "Running Brainbork example: examples/mandelbrot.bf"
./$(TARGET) examples/mandelbrot.bf
clean:
rm -rf $(BUILD_DIR) $(TARGET)
.PHONY: all clean run