-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
101 lines (77 loc) · 2.97 KB
/
Copy pathmakefile
File metadata and controls
101 lines (77 loc) · 2.97 KB
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
91
92
93
94
95
96
97
98
99
100
101
DIRECTORIES = $(addprefix -I./,$(shell ls -d ./src/*/))
DIRECTORIES_2 = $(addprefix -I./,$(shell ls -d ./src/*/*/))
DIRECTORIES_3 = $(addprefix -I./,$(shell ls -d ./src/*/*/*/)) # todo: shouldn't be here, should be left for factories
TARGET_NAME = TechDemo
DEFINES = \
-DGLM_ENABLE_EXPERIMENTAL \
-DGLM_FORCE_SWIZZLE \
-DGLM_SWIZZLE \
-DGLM_FORCE_RADIANS \
-DUSE_BULLET
# -DBT_USE_DOUBLE_PRECISION=ON
CORE_PCH_FILENAME=./src/core_pch.hpp
CORE_PCH=$(CORE_PCH_FILENAME).gch
# CXX_FLAGS = -isystem C:\MinGW\include -std=c++17 -O2 -msse2 -mfpmath=sse -g -pipe -I. -I./src $(DIRECTORIES) $(DIRECTORIES_2) $(DIRECTORIES_3) $(DEFINES)
CXX_FLAGS = -std=c++17 -O2 -msse2 -mfpmath=sse -g -pipe -I. -I./src $(DIRECTORIES) $(DIRECTORIES_2) $(DIRECTORIES_3) $(DEFINES)
# CXX_FLAGS += -ftime-report
# https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
# https://packages.msys2.org/base
EXTRA_CXX_FLAGS = -Werror=return-type
EXTRA_CXX_FLAGS += -Werror=reorder
EXTRA_CXX_FLAGS += -Wuninitialized
EXTRA_CXX_FLAGS += -Winvalid-pch
# EXTRA_CXX_FLAGS += -Wshadow
# EXTRA_CXX_FLAGS += -Wmaybe-uninitialized
# EXTRA_CXX_FLAGS += -Wal
# EXTRA_CXX_FLAGS += -Wunused-function
# EXTRA_CXX_FLAGS += -Wswitch-enum
ifeq ("$(clang)", "yes")
# echo "CLANG INCOMING!"
CXX = C:\msys64\mingw64\bin\clang++.exe -stdlib=libstdc++
LDX = C:\msys64\mingw64\bin\clang++.exe -stdlib=libstdc++
# LDX = C:\MinGW\bin\g++.exe
else
CXX = C:\msys64\mingw64\bin\g++.exe
# CXX = C:\MinGW\bin\g++.exe
LDX = $(CXX)
endif
GDB = C:\msys64\usr\bin\gdb.exe
# LDX = C:\msys64\mingw64\bin\ld.exe
FFMPEG = C:\ffmpeg\bin\ffmpeg.exe
SRC = ./src
BIN = ./bin
OBJ_DIR = ./obj
LIBS = -lPMK-audio -lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt -lboost_date_time-mt -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath \
-lglfw3 -lgdi32 -lglu32 -lopengl32 -lassimp.dll -lFreeImage -lFreeImagePlus -lpng -ljpeg -lz -lOpenAL32 -lvorbisfile -lvorbis -logg -lvorbisenc -lFLAC
TARGETS = $(wildcard src/*.cpp) $(wildcard src/*/*.cpp) $(wildcard src/*/*/*.cpp) $(wildcard src/*/*/*/*.cpp)
OBJS = $(TARGETS:%.cpp=$(OBJ_DIR)/%.o)
DEP = $(OBJS:%.o=%.d)
# include($(shell find . -type f -name \*.d))
build: ./src/core_pch.hpp.gch $(BIN)/$(TARGET_NAME)
@echo "Done"
run: ./src/core_pch.hpp.gch $(BIN)/$(TARGET_NAME)
@echo "Starting $(TARGET_NAME)"
@$(BIN)/$(TARGET_NAME).exe
$(BIN)/$(TARGET_NAME): $(OBJS) ./obj/res.o
@mkdir -p ./bin
@echo "Linking: $@"
@$(LDX) $^ -o $@ $(LIBS)
@echo "Done"
-include $(DEP)
$(OBJ_DIR)/%.o : %.cpp
@echo "Compiling: $< "
@mkdir -p $(@D)
@$(CXX) $(CXX_FLAGS) $(EXTRA_CXX_FLAGS) -MMD -c $< -o $@
$(OBJ_DIR)/res.o: ./resource.rc ./icon.ico
windres ./resource.rc ./obj/res.o
./src/core_pch.hpp.gch : ./src/core_pch.hpp
@echo "Creating PCH"
@$(CXX) $(CXX_FLAGS) $(EXTRA_CXX_FLAGS) $(CORE_PCH_FILENAME)
clean:
rm -rf $(OBJ_DIR)
rm $(BIN)/$(TARGET_NAME).exe
debug: $(BIN)/$(TARGET_NAME)
$(GDB) $(BIN)/$(TARGET_NAME).exe -ex=run
format:
find src/ -iname *.hpp -o -iname *.cpp | xargs clang-format -i
.PHONY: clean