-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
40 lines (31 loc) · 1.2 KB
/
Makefile
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
CC = clang
CFLAGS = -Wall -Wextra -O2 -I runtime/builtin -I runtime/builtin/objects $(shell pkg-config --cflags bdw-gc)
LDFLAGS = $(shell pkg-config --libs bdw-gc)
RUNTIME_DIR = runtime/builtin
OBJECTS_DIR = $(RUNTIME_DIR)/objects
# 自動的にすべてのソースファイルを検出
OBJECTS_SOURCES := $(wildcard $(OBJECTS_DIR)/*.c)
OBJECTS_OBJECTS := $(OBJECTS_SOURCES:.c=.o)
# functions.cも含める
RUNTIME_SOURCES := $(wildcard $(RUNTIME_DIR)/*.c)
RUNTIME_OBJECTS := $(RUNTIME_SOURCES:.c=.o)
# 全てのオブジェクトファイル
ALL_OBJECTS := $(OBJECTS_OBJECTS) $(RUNTIME_OBJECTS)
# ビルドターゲット
all: runtime.o
# ランタイムライブラリのビルド
runtime.o: $(ALL_OBJECTS)
ld -r $^ -o $@
# objectsディレクトリのオブジェクトファイルをビルド
$(OBJECTS_DIR)/%.o: $(OBJECTS_DIR)/%.c $(OBJECTS_DIR)/%.h
$(CC) $(CFLAGS) -c $< -o $@
# runtimeディレクトリのオブジェクトファイルをビルド
$(RUNTIME_DIR)/%.o: $(RUNTIME_DIR)/%.c $(RUNTIME_DIR)/%.h
$(CC) $(CFLAGS) -c $< -o $@
# クリーンアップ
clean:
find . -name '__pycache__' -type d -exec rm -r {} +
rm -f runtime.o
rm -f $(OBJECTS_DIR)/*.o
rm -f $(RUNTIME_DIR)/*.o
.PHONY: all clean