-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
executable file
·86 lines (61 loc) · 2.09 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
74
75
76
77
78
79
80
81
82
83
84
85
86
RTDIR = .
SRCDIR = $(RTDIR)/Source/src
INCDIR = $(RTDIR)/Source/include
LIBDIR = $(RTDIR)/Include
BINDIR = $(RTDIR)/bin
OBJDIR = $(RTDIR)/obj
CC = g++
#DEBUG FLAGS
CFLAGS = --std=c++17 -Wall -O2 -g -fsanitize=address -c -DDebug -D_MAC_MAKEFILE
#RELEASE FLAGS
#CFLAGS = --std=c++17 -Wall -O2 -c -D_MAC_MAKEFILE
LFLAGS = -fsanitize=address -lGL -lGLEW -lglfw -lpng
INCLUDE = -I$(INCDIR)
ifeq ($(OS),Windows_NT)
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
LFLAGS = -L/usr/local/lib -lpng -lGLEW -lglfw -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo
INCLUDE += -I/usr/local/include -I./Include
endif
endif
EXEC = Game
_SOURCES = $(wildcard $(SRCDIR)/*.cpp) $(wildcard $(SRCDIR)/*/*.cpp) $(wildcard $(SRCDIR)/*/*/*.cpp) \
$(wildcard $(SRCDIR)/*/*/*/*.cpp) $(wildcard $(SRCDIR)/*/*/*/*/*.cpp)
SOURCES = $(subst $(SRCDIR)/,,$(_SOURCES))
_HEADERS = $(wildcard $(INCDIR)/*.h) $(wildcard $(INCDIR)/*/*.h) $(wildcard $(INCDIR)/*/*/*.h) \
$(wildcard $(INCDIR)/*/*/*/*.h) $(wildcard $(INCDIR)/*/*/*/*/*.h)
HEADERS = $(subst $(INCDIR)/,,$(_HEADERS))
_OBJS = $(basename $(SOURCES))
_OBJECTS = $(patsubst %,$(OBJDIR)/%,$(_OBJS))
OBJS = $(addsuffix .o,$(_OBJECTS))
_LIBSOURCES = $(wildcard $(LIBDIR)/*.cpp) $(wildcard $(LIBDIR)/*/*.cpp) $(wildcard $(LIBDIR)/*/*/*.cpp) \
$(wildcard $(LIBDIR)/*/*/*/*.cpp) $(wildcard $(LIBDIR)/*/*/*/*/*.cpp)
LIBSOURCES = $(subst $(LIBDIR)/,,$(_LIBSOURCES))
_LIBOBJS = $(basename $(LIBSOURCES))
_LIBOBJECTS = $(patsubst %,$(OBJDIR)/%,$(_LIBOBJS))
LIBOBJS = $(addsuffix .o,$(_LIBOBJECTS))
.PHONY: all
all: $(LIBOBJS) $(OBJS) $(EXEC)
.PHONY: rebuild
rebuild: clean all
.PHONY: run
run: $(EXEC)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp | $(OBJDIR)
mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCLUDE) $< -o $@
$(OBJDIR)/%.o: $(LIBDIR)/%.cpp | $(OBJDIR)
mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCLUDE) $< -o $@
$(EXEC): $(BINDIR) $(OBJS) $(LIBOBJS)
$(CC) -o $</$@ $(OBJS) $(LIBOBJS) $(LFLAGS)
$(BINDIR)/$(EXEC)
$(BINDIR):
mkdir -p $(BINDIR)
cp -r $(RTDIR)/Res $(BINDIR)/Res
$(OBJDIR):
mkdir -p $(OBJDIR)
$(OUT):
.PHONY: clean
clean:
rm -rf $(BINDIR) $(OBJDIR)