-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
90 lines (75 loc) · 2.97 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
87
88
89
90
# Makefile for Thriving colony
# Created by Mario Gonzalez and Julian Garcia
# Name of the executable created
TARGET = ThrivingColony
# Project root
PROJECTROOT = .
# Path for the executable
BINPATH = $(PROJECTROOT)/bin
# Path for the .o files
BUILDPATH = $(PROJECTROOT)/obj
#Directories
SOURCEPATHS = $(PROJECTROOT)/src
#C++ compiler
CXX = clang++
#C++ debugger
DBG = lldb
####
# FLAGS
####
# Include paths
CPPFLAGS = -I/usr/include -I/usr/include/eigen3 -I$(PROJECTROOT)/include -I$(PROJECTROOT)/include/nanovg
# Compiler params
CPPFLAGS += -g -O3 -std=c++11 -m64 -ffast-math -pthread -Wall -Wno-macro-redefined -Wno-unused-value -Wno-delete-non-virtual-dtor -DGL_GLEXT_PROTOTYPES -DUSEVIDEO
# Lib paths
LDFLAGS = -L/usr/lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/X11 -L/usr/local/lib -L$(PROJECTROOT)/lib -Wl,-R -Wl,$(PROJECTROOT)/lib -Wl,--no-as-needed
# Libs
LIBS = -lGL -lXxf86vm -lXext -lX11 -lXcursor -lXrandr -lXinerama -lXi -lpthread -ldl -lrt -lglfw -lnanogui -lfmod -lfmodstudio -lterterrain -laabbtree -lavformat -lavcodec -lavutil -lswresample -lswscale
######## DON'T EDIT ANYTHING BELOW THIS LINE
EXECUTABLE := $(BINPATH)/$(TARGET)
rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
SRC_DIRS := $(foreach DIR,$(SOURCEPATHS),$(shell find $(DIR) -type d))
OBJ_DIRS := $(foreach DIR,$(SOURCEPATHS),$(patsubst %, $(BUILDPATH)/%,$(shell find $(DIR) -type d ! -path .)))
SRC_FILES := $(foreach DIR,$(SRC_DIRS),$(wildcard $(DIR)/*.cpp))
OBJ_FILES := $(foreach FILE,$(SRC_FILES),$(patsubst %.cpp, $(BUILDPATH)/%.o, $(FILE)))
INCLUDE_DIRS := $(foreach DIR,$(SOURCEPATHS),$(patsubst %, -I%, $(DIR)))
CPPFLAGS += $(INCLUDE_DIRS)
#MAKE OPTIONS
.PHONY: all run debug clean cleanfolder
all: $(BUILDPATH) $(OBJ_FILES)
$(info =================================)
$(info Creando el ejecutable $(Target)...)
$(info =================================)
@$(CXX) $(CPPFLAGS) $(OBJ_FILES) -o $(EXECUTABLE) $(LDFLAGS) $(LIBS)
$(BUILDPATH)/%.o: %.cpp
$(info Creando el binario para el archivo $<...)
@$(CXX) $(CPPFLAGS) -c $< -o $@
$(BUILDPATH):
$(info =================================)
$(info Creando la estructura de carpetas...)
$(info =================================)
@mkdir -p $(OBJ_DIRS)
@mkdir -p $(BINPATH)
clean:
$(info =================================)
$(info Limpiando todo el proyecto...)
$(info =================================)
@$(RM) $(EXECUTABLE)
@$(RM) -r $(OBJ_DIRS)
@$(RM) -r $(BUILDPATH)
cleanfolder:
$(info =================================)
$(info Limpiando la carpeta $(FOLDER)...)
$(info =================================)
@$(RM) $(EXECUTABLE)
@$(RM) -r $(BUILDPATH)/$(FOLDER)
run: all
$(info =================================)
$(info Ejecutando...)
$(info =================================)
@$(EXECUTABLE)
debug: all
$(info =================================)
$(info Ejecutando...)
$(info =================================)
@$(DBG) $(EXECUTABLE)