forked from water-works/mupen64plus-netplay
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CMakeLists.txt
231 lines (175 loc) · 5.49 KB
/
CMakeLists.txt
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
CMAKE_MINIMUM_REQUIRED (VERSION 3.2)
include (ExternalProject)
# ------------------------------------------------------------------------------
# Global variables.
# Installation directory of all required projects.
SET (INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/usr)
# ------------------------------------------------------------------------------
# GRPC C/C++
SET (GRPC_PREFIX ${CMAKE_SOURCE_DIR}/third-party/grpc)
SET (GRPC_MAKE_ARGS prefix=${INSTALL_PREFIX} REQUIRE_CUSTOM_LIBRARIES_opt=true)
ExternalProject_Add (
GRPC
PREFIX ${GRPC_PREFIX}
# Configure step (skip)
SOURCE_DIR ${GRPC_PREFIX}
CONFIGURE_COMMAND ""
# Build step
BINARY_DIR ${GRPC_PREFIX}
BUILD_COMMAND make ${GRPC_MAKE_ARGS}
# Install step
INSTALL_DIR ${INSTALL_PREFIX}
INSTALL_COMMAND make install ${GRPC_MAKE_ARGS}
)
# ------------------------------------------------------------------------------
# Proto3
#
# Note we use the proto3 repository cloned by the grpc submodule.
SET (PROTO3_PREFIX ${CMAKE_SOURCE_DIR}/third-party/grpc/third_party/protobuf)
ExternalProject_Add (
Protobuf3
PREFIX ${PROTO3_PREFIX}
DEPENDS GRPC
# Configure step (skip)
SOURCE_DIR ${PROTO3_PREFIX}
CONFIGURE_COMMAND ""
# Build step
BINARY_DIR ${PROTO3_PREFIX}
BUILD_COMMAND ""
# Install step
INSTALL_DIR ${INSTALL_PREFIX}
INSTALL_COMMAND make install prefix=${INSTALL_PREFIX}
)
# ------------------------------------------------------------------------------
# GTest
SET (GTEST_PREFIX ${CMAKE_SOURCE_DIR}/third-party/googletest/googletest)
ExternalProject_Add (
GTest
PREFIX ${GTEST_PREFIX}
# Configure step (cmake by default)
SOURCE_DIR ${GTEST_PREFIX}
# Build step
BINARY_DIR ${GTEST_PREFIX}
BUILD_COMMAND make
# Install step (skip)
INSTALL_COMMAND ""
)
# ------------------------------------------------------------------------------
# GMock
SET (GMOCK_PREFIX ${CMAKE_SOURCE_DIR}/third-party/googletest/googlemock)
ExternalProject_Add (
GMock
PREFIX ${GMOCK_PREFIX}
# Configure step (cmake by default)
SOURCE_DIR ${GMOCK_PREFIX}
# Build step
BINARY_DIR ${GMOCK_PREFIX}
BUILD_COMMAND make
# Install step (skip)
INSTALL_COMMAND ""
)
# ------------------------------------------------------------------------------
# mupen64plus-core
SET (MUPEN64PLUS_CORE_PREFIX ${CMAKE_SOURCE_DIR}/mupen64plus-core/projects/unix)
ExternalProject_Add(
Mupen64Plus_Core
PREFIX ${MUPEN64PLUS_CORE_PREFIX}
# Configure step (skip)
SOURCE_DIR ${MUPEN64PLUS_CORE_PREFIX}
CONFIGURE_COMMAND ""
# Build step
BINARY_DIR ${MUPEN64PLUS_CORE_PREFIX}
BUILD_COMMAND make all DEBUG=1
# Install step (skip)
INSTALL_COMMAND ""
)
ExternalProject_Add_Step (
Mupen64Plus_Core forceconfigure
COMMAND ${CMAKE_COMMAND} -E echo "Force configure of mupen64plus-core"
DEPENDEES update
DEPENDERS configure
ALWAYS 1)
# ------------------------------------------------------------------------------
# mupen64plus-ui-console
SET (MUPEN64PLUS_UI_CONSOLE_PREFIX
${CMAKE_SOURCE_DIR}/mupen64plus-ui-console/projects/unix)
ExternalProject_Add(
Mupen64Plus_Ui_Console
PREFIX ${MUPEN64PLUS_UI_CONSOLE_PREFIX}
# Configure step (skip)
SOURCE_DIR ${MUPEN64PLUS_UI_CONSOLE_PREFIX}
CONFIGURE_COMMAND ""
# Build step
BINARY_DIR ${MUPEN64PLUS_UI_CONSOLE_PREFIX}
BUILD_COMMAND make PIE=1 all
# Install step (skip)
INSTALL_COMMAND ""
)
ExternalProject_Add_Step (
Mupen64Plus_Ui_Console forceconfigure
COMMAND ${CMAKE_COMMAND} -E echo "Force configure of mupen64plus-ui-console"
DEPENDEES update
DEPENDERS configure
ALWAYS 1)
# ------------------------------------------------------------------------------
# GFlags
SET (GFLAGS_PREFIX ${CMAKE_SOURCE_DIR}/third-party/gflags)
ExternalProject_Add(
GFlags
PREFIX ${GFLAGS_PREFIX}
SOURCE_DIR ${GFLAGS_PREFIX}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PREFIX}
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=True
)
# ------------------------------------------------------------------------------
# GLog
SET (GLOG_PREFIX ${CMAKE_SOURCE_DIR}/third-party/glog)
ExternalProject_Add(
GLog
PREFIX ${GLOG_PREFIX}
SOURCE_DIR ${GLOG_PREFIX}
CONFIGURE_COMMAND cd ${GLOG_PREFIX} && autoreconf --force --install
COMMAND ${GLOG_PREFIX}/configure --prefix=${INSTALL_PREFIX}
)
# ------------------------------------------------------------------------------
# Netplay
SET (NETPLAY_PREFIX ${CMAKE_SOURCE_DIR}/netplay)
ExternalProject_Add (
Netplay
PREFIX ${NETPLAY_PREFIX}
DEPENDS
Protobuf3
GRPC
GTest
GMock
GLog
Mupen64Plus_Core
Mupen64Plus_Ui_Console
# Configure step
SOURCE_DIR ${NETPLAY_PREFIX}
CMAKE_ARGS
-DGRPC_ROOT:string=${INSTALL_PREFIX}
-DGTEST_ROOT:string=${GTEST_PREFIX}
-DGMOCK_ROOT:string=${GMOCK_PREFIX}
-DMUPEN64_ROOT:string=${CMAKE_SOURCE_DIR}/mupen64plus-core/src/api
-DCMAKE_LIBRARY_PATH:string=${INSTALL_PREFIX}/lib
-DCMAKE_PROGRAM_PATH:string=${INSTALL_PREFIX}/bin
-DCMAKE_INCLUDE_PATH:string=${INSTALL_PREFIX}/include
# TODO(alexgolec): LLVM 7.0.0 on OSX complains about missing overrides in
# GRPC headers. Hopefully those headers will eventually be updated, so
# remove this once that happens.
-DCMAKE_CXX_FLAGS:string=-Wno-inconsistent-missing-override
-DCMAKE_BUILD_TYPE:string=Debug
# Build step
BINARY_DIR ${NETPLAY_PREFIX}
BUILD_COMMAND make
# Install step (skip)
INSTALL_COMMAND ""
)
ExternalProject_Add_Step (
Netplay forceconfigure
COMMAND ${CMAKE_COMMAND} -E echo "Force configure of netplay"
DEPENDEES update
DEPENDERS configure
ALWAYS 1)