-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
36 lines (31 loc) · 930 Bytes
/
Makefile
File metadata and controls
36 lines (31 loc) · 930 Bytes
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
CFLAGS:=-std=c11 -MMD
LIBFLAGS:=-l hooligan -L./bin
SOURCE:=$(wildcard src/*.c)
OBJS:=$(SOURCE:.c=.o)
DEPENDS:=$(SOURCE:.c=.d)
LIBSOURCE:=$(wildcard lib/*.c)
LIBOBJS:=$(LIBSOURCE:.c=.o)
# 第一世代コンパイラの作成
first: $(OBJS) lib
@cc $(OBJS) $(CFLAGS) $(LIBFLAGS) -o bin/hcc1
$(OBJS): src/hooligan.h
-include $(DEPENDS)
# 第二世代以降のコンパイラの作成
COMPILER:=
OUTPUT:=bin/hcc
ifneq ($(COMPILER),)
ifneq ($(shell [ -e $(COMPILER) ] && echo exist),exist)
$(error 指定されたコンパイラは存在しません)
endif
else
COMPILER:=bin/hcc1
endif
selfhost: first
@$(COMPILER) $(SOURCE) && ./bin/assemble.sh && mv a.out $(OUTPUT)
lib: $(LIBOBJS)
@cc -shared -std=c11 -o bin/libhooligan.so $(LIBOBJS)
$(LIBOBJS): %.o: %.c
cc $< $(CFLAGS) -c -fPIC -o $@
clean:
@rm -f bin/hcc* *.o src/*.o src/*.d lib/*.o lib/*.d *~ tmp* *.s a.out core.* bin/*.so
.PHONY: test clean selfhost lib