-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
73 lines (52 loc) · 1.44 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
65
66
67
68
69
70
71
72
73
CXX := g++
CC := gcc
LINK := g++
CFLAGS += -Wall
CFLAGS += -Werror
CFLAGS += -pedantic
CFLAGS += -Wextra
CFLAGS += -Wmissing-prototypes
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wswitch-enum #require that all enums are used in switc
CFLAGS += -lm
CFLAGS += -std=gnu99
CFLAGS += -DGNUSOURCE #asprintf
ifeq ($(debug),1)
COMMONFLAGS += -g
endif
ifeq ($(release),1)
COMMONFLAGS += -O2
COMMONFLAGS += -DNDEBUG
endif
ifeq ($(profile),1)
CXXFLAGS += -pg
CFLAGS += -pg
endif
BUILDDIR = build
BINDIR = bin
SRCDIR = src
# Common flags
#COMMONFLAGS += $(INCLUDES)
CXXFLAGS += $(COMMONFLAGS)
CFLAGS += $(COMMONFLAGS)
OBJS=state.c parser.c vec3.c
EXECS=frostcoder.c eggcoder.c splitter.c
BUILD_OBJS=$(addprefix $(BUILDDIR)/, $(addsuffix .o, $(OBJS)))
LINKLINE = $(LINK) $(BUILD_OBJS)
all: frost egg split
init:
mkdir -p $(BUILDDIR)
mkdir -p $(BINDIR)
.SUFFIXES: .c .cpp .o
$(BUILDDIR)/%.c.o: $(SRCDIR)/%.c $(SRCDIR)/%.h
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/%.cpp.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
$(CXX) $(CXXFLAGS) -c $< -o $@
frost: $(BUILD_OBJS) $(BUILDDIR)/frostcoder.c.o
$(LINKLINE) $(BUILDDIR)/frostcoder.c.o -o$(BINDIR)/frostcoder
egg: $(BUILD_OBJS) $(BUILDDIR)/eggcoder.c.o
$(LINKLINE) $(BUILDDIR)/eggcoder.c.o -o$(BINDIR)/eggcoder
split: $(BUILD_OBJS) $(BUILDDIR)/splitter.c.o
$(LINKLINE) $(BUILDDIR)/splitter.c.o -o$(BINDIR)/splitter
clean:
rm -f $(BUILDDIR)/* $(BINDIR)/eggcoder $(BINDIR)/frostcoder $(BINDIR)/splitter $(SRCDIR)/*~