-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (75 loc) · 2 KB
/
Makefile
File metadata and controls
92 lines (75 loc) · 2 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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
CC = gcc
AR = ar rcs
CFLAGS = -Wall -Wextra -Wno-unused-parameter -fPIC -Isrc
SHARED_CFLAGS =
LDFLAG = -lm
RM = rm -f
MKDIR = mkdir -p
FRMDIR = rm -rf
ifeq (,$(findstring Windows,$(OS)))
HOST_SYS = $(shell uname -s)
else
HOST_SYS = Windows
endif
ifeq (Linux,$(HOST_SYS))
CFLAGS += -Dhby_linux
CFLAGS += -Dhby_posix
endif
ifeq (Darwin,$(HOST_SYS))
CFLAGS += -Dhby_apple
CFLAGS += -Dhby_posix
endif
ifeq (iOS,$(HOST_SYS))
CFLAGS += -Dhby_apple
CFLAGS += -Dhby_posix
endif
ifeq (Windows,$(HOST_SYS))
CFLAGS += -Dhby_windows
endif
ifeq (release,$(config))
CFLAGS += -O2
else
config = debug
CFLAGS += -O2 -g -Dhby_stress_gc
ifeq (Linux,$(HOST_SYS))
CFLAGS += -fsanitize=address -fsanitize=address
endif
endif
HBY_EXE = hobbyc
HBY_SO = libhobbyc.so
HBY_A = libhobbyc.a
HBY_CORE_C = \
src/hby.c src/arr.c src/chunk.c src/parser.c src/debug.c src/lexer.c \
src/lib_arr.c src/lib_core.c src/lib_ease.c src/lib_io.c src/lib_map.c \
src/lib_math.c src/lib_rng.c src/lib_str.c src/lib_sys.c src/map.c \
src/table.c src/mem.c src/obj.c src/state.c src/tostr.c src/val.c src/vm.c
HBY_CORE_O = $(HBY_CORE_C:src/%.c=bin/%.o)
HBY_CORE_D = $(HBY_CORE_O:%.o=%.d)
HBY_EXE_C = src/main.c
HBY_EXE_O = $(HBY_EXE_C:src/%.c=bin/%.o)
HBY_EXE_D = $(HBY_EXE_O:%.o=%.d)
.PHONY: default all clean clangd_compile_flags
default: all
all: $(HBY_SO) $(HBY_EXE) $(HBY_A)
@echo "CC: $(CC)"
@echo "CFLAGS: $(CFLAGS)"
@echo "LDFLAG: $(LDFLAG)"
$(HBY_EXE): $(HBY_A) $(HBY_EXE_O)
@echo "cc $@"
@$(CC) -o $@ $(HBY_EXE_O) $(HBY_A) $(CFLAGS) $(LDFLAG)
$(HBY_SO): $(HBY_CORE_O)
@echo "cc $@"
@$(CC) -o $@ $(HBY_CORE_O) $(CFLAGS) -shared $(SHARED_FLAG) $(LDFLAG)
$(HBY_A): $(HBY_CORE_O)
@echo "ar $@"
@$(AR) $@ $?
bin/%.o: src/%.c
@echo "cc $< -> $@"
@$(CC) -o $@ -c $< $(CFLAGS) -MMD -MD
clean:
$(RM) $(HBY_CORE_O) $(HBY_EXE_O) $(HBY_EXE) $(HBY_SO) $(HBY_A) $(HBY_CORE_D) $(HBY_EXE_D)
clangd_compile_flags:
@echo "" > compile_flags.txt
@$(foreach flag,$(CFLAGS),echo $(flag) >> compile_flags.txt;)
-include $(HBY_CORE_D)
-include $(HBY_EXE_D)