-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
125 lines (97 loc) · 3.63 KB
/
Makefile
File metadata and controls
125 lines (97 loc) · 3.63 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
.phony: all locale
############################
# BASELINE
############################
EXECUTABLE_NAME = LPPShow
EXECUTABLE_VERSION = $(shell cat version)
SOURCES_DIR = src
INCLUDE_DIR = include
THIRDPARTY_INCLUDE = thirdparty
IMGUI_DIR = $(THIRDPARTY_INCLUDE)/imgui
SOURCES_BASE = $(SOURCES_DIR)/assets.cpp $(SOURCES_DIR)/camera.cpp $(SOURCES_DIR)/LPPShow.cpp $(SOURCES_DIR)/solver.cpp $(SOURCES_DIR)/display.cpp
SOURCES_THIRDPARTY = $(THIRDPARTY_INCLUDE)/quickhull/QuickHull.cpp
SOURCES_THIRDPARTY += $(IMGUI_DIR)/imgui.cpp $(IMGUI_DIR)/backends/imgui_impl_glfw.cpp $(IMGUI_DIR)/backends/imgui_impl_opengl3.cpp
SOURCES_THIRDPARTY += $(IMGUI_DIR)/imgui_draw.cpp $(IMGUI_DIR)/imgui_tables.cpp $(IMGUI_DIR)/imgui_widgets.cpp
SOURCES_THIRDPARTY += $(THIRDPARTY_INCLUDE)/glad.c
SOURCES = $(SOURCES_BASE) + $(SOURCES_THIRDPARTY)
OBJS_BASE = $(addprefix objects/, $(addsuffix .o, $(basename $(notdir $(SOURCES_BASE)))))
OBJS_THIRDPARTY = $(addprefix objects/, $(addsuffix .o, $(basename $(notdir $(SOURCES_THIRDPARTY)))))
OBJS = $(OBJS_BASE) $(OBJS_THIRDPARTY)
DEPS = $(OBJS:%.o=%.d)
LOCALE_FILES = $(notdir $(wildcard locale/translated/*.po))
COMPILED_LOCALE_FILES = $(addprefix locale/compiled/, $(LOCALE_FILES:%.po=%.mo))
SHADERS = $(wildcard assets/*.vert) $(wildcard assets/*.frag)
CXXFLAGS = -I$(INCLUDE_DIR) -I$(THIRDPARTY_INCLUDE)
CXXFLAGS += -I$(IMGUI_DIR) -DUSE_CDDLIB -std=c++14
LIBS = -lstdc++fs
############################
# PLATFORM-SPECIFIC
############################
PLATFORM := $(shell uname -s)
# Not quite the same as cmake's build
ifeq ($(PLATFORM),Linux)
LIBS += $(LINUX_GL_LIBS) `pkg-config --static --libs glfw3` `pkg-config --static --libs cddlib`
CXXFLAGS += `pkg-config --cflags glfw3` `pkg-config --cflags cddlib`
endif
ifeq ($(PLATFORM),Darwin) # Borrowed from ImGui's example script
LIBS += -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo
LIBS += -L/usr/local/lib -L/opt/local/lib -L/opt/homebrew/lib
LIBS += -lglfw
CXXFLAGS += -I/usr/local/include -I/opt/local/include -I/opt/homebrew/include
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(OS),Windows_NT)
LIBS += -lglfw3 -lopengl32 -lgdi32 -l:libcdd.a
CXXFLAGS += -static -Llibraries -Llibraries/glfw-mingw-w64
endif
CFLAGS = $(CXXFLAGS) # I think after?
############################
# CONFIGURATIONS
############################
configuration:=debug
ifeq ($(configuration),debug)
CXXFLAGS += -DDEBUG -DUSE_OBJ_LOADER -g
endif
ifeq ($(configuration),optimized)
CXXFLAGS += -DUSE_BAKED_SHADERS -O3
endif
ifeq ($(configuration),cum)
CXXFLAGS += -g -D_GLIBCXX_DEBUG
endif
############################
# TARGETS
############################
objects/%.o:src/%.cpp
$(CXX) $(CXXFLAGS) -MMD -c -o $@ $<
objects/%.o:tests/%.cpp
$(CXX) $(CXXFLAGS) -MMD -c -o $@ $<
objects/%.o:thirdparty/%.c
$(CC) $(CFLAGS) -c -o $@ $<
objects/%.o:thirdparty/quickhull/%.cpp
$(CXX) -I$(THIRDPARTY_INCLUDE) -c -o $@ $<
objects/%.o:$(IMGUI_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
objects/%.o:$(IMGUI_DIR)/backends/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
locale/compiled/%.mo:locale/translated/%.po
msgfmt -o $@ $< --
include/bake%.h: $(SHADERS)
python preconfigure/bake_shaders.py $^ $@
all: object-folder locale $(EXECUTABLE_NAME)
@echo "Build done for $(EXECUTABLE_NAME) v$(EXECUTABLE_VERSION)"
locale: $(COMPILED_LOCALE_FILES)
-include $(DEPS)
run-tests: objects/tests.o objects/solver.o
$(CXX) -o $@ $^ $(CXXFLAGS) -g -D_GLIBCXX_DEBUG $(LIBS)
bake: include/baked_shaders.h
object-folder:
@mkdir -p objects
obj: $(OBJS)
$(EXECUTABLE_NAME): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean-all: clean
-rm $(OBJS_THIRDPARTY)
clean:
-rm $(OBJS_BASE)
-rm $(EXECUTABLE_NAME)
@echo "All clean!"