-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile
64 lines (47 loc) · 1.36 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
CC=gcc
CFLAGS=-Wall -Wextra -pedantic -ggdb2
DEFINES=
INCLUDES=-Isrc
LIBS=
SRCDIR=src
BUILDDIR=build
ifeq ($(BUILD_TYPE), DEBUG)
CFLAGS += -g -ggdb2
endif
SRC=$(wildcard $(SRCDIR)/*.c)
OBJ=$(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SRC))
TIREDIR=$(BUILDDIR)/tire
TIRESRC=$(wildcard $(SRCDIR)/tire/*.c)
TIREOBJ=$(patsubst $(SRCDIR)/tire/%.c, $(TIREDIR)/%.o, $(TIRESRC))
TIRENAME=tire
TIRE=$(TIREDIR)/$(TIRENAME)
TASMDIR=$(BUILDDIR)/tasm
TASMSRC=$(wildcard $(SRCDIR)/tasm/*.c)
TASMOBJ=$(patsubst $(SRCDIR)/tasm/%.c, $(TASMDIR)/%.o, $(TASMSRC))
TASMNAME=tasm
TASM=$(TASMDIR)/$(TASMNAME)
.PHONY: all clean destroy test
all: $(OBJ) $(TIRE) $(TASM)
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
@ mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c $< -o $@
$(TIRE): $(BUILDDIR)/$(TIREOBJ)
$(CC) $(CFLAGS) $(INCLUDES) $(TIREOBJ) $(OBJ) -o $(TIRE) $(LIBS)
$(BUILDDIR)/tire/%.o: $(SRCDIR)/tire/%.c
@ mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c $< -o $@
$(TASM): $(BUILDDIR)/$(TASMOBJ)
$(CC) $(CFLAGS) $(INCLUDES) $(TASMOBJ) $(OBJ) -o $(TASM) $(LIBS)
$(BUILDDIR)/tasm/%.o: $(SRCDIR)/tasm/%.c
@ mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c $< -o $@
clean:
rm -rf $(TIRE)
rm -rf $(TIREOBJ)
rm -rf $(TASM)
rm -rf $(TASMOBJ)
rm -rf $(OBJ)
destroy:
rm -rf $(BUILDDIR)
test:
$(foreach file, $(wildcard tests/*.tasm), ./build/tasm/tasm $(file);)