-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile
199 lines (153 loc) · 5.22 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
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
title:
@echo
@echo
@echo /////////////////////////////////////////////////////////////////////////////
@echo versor: made by pablo colapinto at the university of california santa barbara
@echo /////////////////////////////////////////////////////////////////////////////
@echo
help: title
@echo make vsr ....................... builds the main vsr library and glv submodule with built-in graphics
@echo make GFX=0 vsr ................. builds vsrs operations without graphics functionality
@echo make examples/subfolder/xFilename.cpp ..... builds and runs xFilename.cpp
@echo
@echo email questions to [email protected] or submit issues via github
@echo more info: versor.mat.ucsb.edu
#Target Nameâ‰
LIB_NAME = vsr
STRICT_WARNINGS = 0
include Makefile.common
#LINK TO GRAPHICS LIBRARIES FLAG (GLV, OpenGL, GLUT)
# run make GFX=0 vsr to make versor without built-in graphics capabilities (just data and operations)
GFX = 1
REDUCED_GFX = 0
INSTALL_PCH = 0
#Location of Git Repository Directory
BASE_DIR = ../
#Locations of Source and Header Files
VSR_DIR = vsr/
SRC_DIR = src/
TST_DIR = tests/
EX_DIR = examples/
#Locations of Libaries
LIB_DIR = $(BUILD_DIR)lib/
INC_DIR = $(BUILD_DIR)include/
EXT_DIR = externals/
BIN_DIR = $(BUILD_DIR)bin/
#Warnings
CFLAGS += -Wno-deprecated
OBJS := vsr_mv.o vsr_frame.o vsr_file.o
OBJS_GL := vsr_camera.o vsr_interface.o gl2ps.o
HEAD = vsr.h
PCH_DIR = $(BUILD_DIR)pch/
PCH = $(addsuffix .gch, $(HEAD))
#Dependencies
DEPFLAGS = -MMD -MF $(basename $@).dep
#Link
LDFLAGS += -L$(LIB_DIR)
LINK_LDFLAGS += -l$(LIB_NAME)
#Graphics only added to LDFLAGS if GFX=1 - (default)
ifneq ($(GFX), 0)
ifeq ($(PLATFORM), linux)
LINK_LDFLAGS += -lGLV -lglut -lGLEW -lGLU -lGL
LDFLAGS += -L/usr/lib/x86_64-linux-gnu/
else ifeq ($(PLATFORM), macosx)
LINK_LDFLAGS += -lglv -framework OpenGL -framework GLUT
else ifeq ($(PLATFORM), windows)
LINK_LDFLAGS += -lglv -lglew32 -lglu32 -lopengl32 -lglut32
endif
ifeq ($(REDUCED_GFX), 1)
CPPFLAGS += -D __REDUCED_GRAPHICS__
endif
OBJS += $(OBJS_GL)
endif
#endif
VPATH = $(PCH_DIR):\
$(SRC_DIR):\
$(EXT_DIR): \
$(EXT_DIR)gl2ps: \
$(TST_DIR):\
$(EX_DIR):\
$(DEMO_DIR):\
$(VSR_DIR):\
$(VSR_DIR)Elements:\
$(INC_DIR):\
$(INC_DIR)Elements
IPATH = $(PCH_DIR) \
$(VSR_DIR)Elements/\
$(VSR_DIR) \
$(INC_DIR) \
$(INC_DIR)Elements/\
$(EXT_DIR) \
$(EXT_DIR)/gfx/\
/usr/local/include/
HPATH = $(addprefix -I, $(IPATH))
CPPFLAGS += $(LINK_CPPFLAGS)
LDFLAGS += $(LINK_LDFLAGS)
CFLAGS := $(CPPFLAGS) $(CFLAGS)
CXXFLAGS := $(CFLAGS) $(CXXFLAGS)
EXEC_TARGETS = tests/%.cpp examples/%.cpp
# Dummy target to force rebuilds
FORCE:
.PRECIOUS: $(EXEC_TARGETS) $(PCH_DIR)%.h.gch
#COMPILATION of CPP to Object File
$(OBJ_DIR)%.o: %.cpp $(addprefix $(PCH_DIR), $(PCH)) #%.h
@echo $<
@echo /////////////////////////////////////////////////////////////////////////////
@echo CXX compiling $< to $@
@echo /////////////////////////////////////////////////////////////////////////////
@echo $(CXX) $(CXXFLAGS) $(HPATH) -H -c $< -o $@
$(CXX) $(CXXFLAGS) $(HPATH) -H -c $< -o $@
#COMPILATION of C to Object File
$(OBJ_DIR)%.o: %.c
@echo
@echo /////////////////////////////////////////////////////////////////////////////
@echo CC compiling $< to $@
@echo /////////////////////////////////////////////////////////////////////////////
@echo
$(CC) $(CFLAGS) $(HPATH) -c $< -o $@
$(PCH_DIR)%.h.gch: %.h
@echo CXX precompiling $< to $@
@echo This may take a little while but only needs to happen once
$(CXX) $(CXXFLAGS) $(HPATH) -H -x c++-header -c $< -o $@
linkfile:
@printf "%b\n" "CPPFLAGS +=$(LINK_CPPFLAGS)\r\nLDFLAGS +=$(LINK_LDFLAGS)" > Makefile.link
dir:
@mkdir -p $(OBJ_DIR)
@mkdir -p $(LIB_DIR)
@mkdir -p $(PCH_DIR)
@mkdir -p $(BIN_DIR)
clean:
@rm -r $(OBJ_DIR)
@rm -r $(PCH_DIR)
@rm -r $(LIB_DIR)
@rm -r $(BIN_DIR)
$(MAKE) --no-print-directory -C externals/GLV clean
glv:
@echo "glv"
@echo "building external GUI library GLV . . . if there are errors, make sure you have entered:\n\n"
@echo "git submodule init"
@echo "git submodule update\n\n"
$(MAKE) --no-print-directory -C externals/GLV install DESTDIR=../../$(BUILD_DIR)
vsr: title dir glv $(addprefix $(OBJ_DIR), $(OBJS))
$(AR) $(LIB_DIR)$(LIB_FILE) $(addprefix $(OBJ_DIR), $(OBJS))
$(EXEC_TARGETS): $(LIB_PATH) FORCE
@echo Building $@ using $<
@echo $(CXX) $(CXXFLAGS) $(HPATH) -H $@ -o $(BIN_DIR)$(*F) $(LDFLAGS)
# $(CXX) $(CXXFLAGS) $(HPATH) -H $@ -o $(BIN_DIR)$(*F) $(LDFLAGS) -l$(LIB_NAME)
$(CXX) $(CXXFLAGS) $(HPATH) -H $@ -o $(BIN_DIR)$(*F) $(LDFLAGS)
@cd $(BIN_DIR) && ./$(*F)
test: vsr tests/test.cpp
testGL: vsr tests/testGL.cpp
install: FORCE vsr
@echo installing vsr to $(DESTDIR)
@$(INSTALL) -d $(DESTDIR)/lib
@$(INSTALL) -d $(DESTDIR)/include/$(LIB_NAME)/Elements/
@$(INSTALL) -m 644 $(LIB_PATH) $(DESTDIR)/lib
@$(INSTALL) -m 644 $(VSR_DIR)*.h $(DESTDIR)/include/$(LIB_NAME)
@$(INSTALL) -m 644 $(EXT_DIR)gl2ps/*.h $(DESTDIR)/include/$(LIB_NAME)
@$(INSTALL) -m 644 $(VSR_DIR)Elements/*.h $(DESTDIR)/include/$(LIB_NAME)/Elements/
@$(INSTALL) -d $(DESTDIR)/include/$(LIB_NAME)/pch/
ifeq ($(INSTALL_PCH),1)
@echo installing precompiled header to $(DESTDIR)/include/$(LIB_NAME)/
@$(INSTALL) -m 644 $(PCH_DIR)*.gch $(DESTDIR)/include/$(LIB_NAME)/
endif