-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
75 lines (59 loc) · 1.69 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
CXX=g++
CXXOPTIONS=--std=c++17 -g
INCLUDEDIRS=
LD=g++
LDOPTIONS=-L/usr/local/lib # this is where protobuf is placed
SHARED_LDLIBS=-lpthread -lprotobuf
CLIENT_LDLIBS=-lsfml-graphics -lsfml-window -lsfml-system $(SHARED_LDLIBS)
SERVER_LDLIBS=$(SHARED_LDLIBS)
PROTOBUF_COMPILER=protoc
PROTOBUF_OPTIONS=
PROTOBUF_SRC_DIR=src/net
PROTOBUF_MSG=$(PROTOBUF_SRC_DIR)/BaseMessage.proto
PROTOBUF_GEN=$(PROTOBUF_MSG:.proto=.cpp)
CLIENT_TARGET=FreeSpace
SERVER_TARGET=FreeSpace-server
COMMON_SRC=src/Scene.cpp\
src/net/Socket.cpp\
src/PhysicsSystem.cpp\
$(PROTOBUF_GEN)
CLIENT_SRC=\
$(COMMON_SRC)\
src/Space.cpp\
src/Game.cpp\
src/Client.cpp\
src/SpaceInputManager.cpp\
src/GraphicsSystem.cpp\
src/InputSystem.cpp\
src/ClientScene.cpp\
src/net/ClientSocket.cpp\
src/Menu.cpp\
src/MenuInputManager.cpp\
SERVER_SRC=\
$(COMMON_SRC)\
src/Server.cpp\
src/net/ServerSocket.cpp\
src/ServerScene.cpp\
src/AISystem.cpp\
src/ResourceCollectSystem.cpp\
src/WeaponSystem.cpp\
src/ProjectileSystem.cpp\
CLIENT_OBJ=$(CLIENT_SRC:.cpp=.o)
CLIENT_DEP=$(CLIENT_SRC:.cpp=.d)
SERVER_OBJ=$(SERVER_SRC:.cpp=.o)
SERVER_DEP=$(SERVER_SRC:.cpp=.d)
all: $(CLIENT_TARGET) $(SERVER_TARGET)
$(CLIENT_TARGET): $(CLIENT_OBJ)
$(LD) $^ -o $@ $(LDOPTIONS) $(CLIENT_LDLIBS)
$(SERVER_TARGET): $(SERVER_OBJ)
$(LD) $^ -o $@ $(LDOPTIONS) $(SERVER_LDLIBS)
-include $(OBJ:.o=.d)
$(PROTOBUF_GEN): $(PROTOBUF_MSG)
$(PROTOBUF_COMPILER) -I=$(PROTOBUF_SRC_DIR) --cpp_out=$(PROTOBUF_SRC_DIR) $^;
mv $(PROTOBUF_SRC_DIR)/$(basename $(notdir $^)).pb.cc $@;
%.o: %.cpp
$(CXX) -c $(CXXOPTIONS) $(INCLUDEDIRS) $*.cpp -o $*.o
$(CXX) -MM $(CXXOPTIONS) $(INCLUDEDIRS) $*.cpp > $*.d
.PHONY: clean
clean:
$(RM) -f src/*.o src/*.d $(TARGET) $(PROTOBUF_GEN)