@@ -30,6 +30,94 @@ ExternalProject_Add(
30
30
ExternalProject_Get_Property (project_depot_tools SOURCE_DIR )
31
31
set (depot_tools_install_dir ${SOURCE_DIR} )
32
32
33
+ # libc++
34
+ # -----------------------------------------------------------------------------
35
+
36
+ set (libwebrtc_binary_dir ${CMAKE_BINARY_DIR} /external/libwebrtc/build/${CMAKE_BUILD_TYPE} )
37
+ set (libwebrtc_src_dir ${CMAKE_BINARY_DIR} /external/libwebrtc/download/src )
38
+
39
+ add_library (libc++ OBJECT IMPORTED )
40
+ add_dependencies (libc++ libwebrtc )
41
+
42
+ set (libc++_objects
43
+ algorithm.o
44
+ any.o
45
+ bind.o
46
+ chrono.o
47
+ condition_variable.o
48
+ debug.o
49
+ exception.o
50
+ functional.o
51
+ future.o
52
+ hash.o
53
+ ios.o
54
+ iostream.o
55
+ locale.o
56
+ memory.o
57
+ mutex.o
58
+ new.o
59
+ optional .o
60
+ random.o
61
+ regex .o
62
+ shared_mutex.o
63
+ stdexcept.o
64
+ string .o
65
+ strstream.o
66
+ system_error.o
67
+ thread.o
68
+ typeinfo.o
69
+ utility.o
70
+ valarray.o
71
+ variant.o
72
+ vector.o
73
+ )
74
+ list (TRANSFORM libc++_objects PREPEND ${libwebrtc_binary_dir} /obj/buildtools/third_party/libc++/libc++/ )
75
+
76
+ set_property (TARGET libc++ APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG )
77
+ set_target_properties (libc++ PROPERTIES IMPORTED_OBJECTS_DEBUG "${libc++_objects}" IMPORTED_OBJECTS "${libc++_objects}" )
78
+
79
+ # NOTE(mroberts): I would like this to be INTERFACE.
80
+ #
81
+ # https://gitlab.kitware.com/cmake/cmake/issues/15052
82
+ #
83
+ # target_include_directories(libc++ SYSTEM INTERFACE "${libc++_include_dir}")
84
+
85
+ # libc++abi
86
+ # -----------------------------------------------------------------------------
87
+
88
+ add_library (libc++abi OBJECT IMPORTED )
89
+ add_dependencies (libc++abi libwebrtc )
90
+
91
+ set (libc++abi_objects
92
+ abort_message.o
93
+ cxa_aux_runtime.o
94
+ cxa_default_handlers.o
95
+ cxa_demangle.o
96
+ cxa_exception.o
97
+ cxa_exception_storage.o
98
+ cxa_guard.o
99
+ cxa_handlers.o
100
+ cxa_personality.o
101
+ cxa_unexpected.o
102
+ cxa_vector.o
103
+ cxa_virtual.o
104
+ fallback_malloc.o
105
+ private_typeinfo.o
106
+ stdlib_exception.o
107
+ stdlib_stdexcept.o
108
+ stdlib_typeinfo.o
109
+ )
110
+ list (TRANSFORM libc++abi_objects PREPEND ${libwebrtc_binary_dir} /obj/buildtools/third_party/libc++abi/libc++abi/ )
111
+
112
+ set_property (TARGET libc++abi APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG )
113
+ set_target_properties (libc++abi PROPERTIES IMPORTED_OBJECTS_DEBUG "${libc++abi_objects}" IMPORTED_OBJECTS "${libc++abi_objects}" )
114
+
115
+ # NOTE(mroberts): I would like this to be INTERFACE.
116
+ #
117
+ # https://gitlab.kitware.com/cmake/cmake/issues/15052
118
+ #
119
+ # target_include_directories(libc++abi SYSTEM INTERFACE "${libc++abi_include_dir}")
120
+
33
121
# libwebrtc
34
122
# -----------------------------------------------------------------------------
35
123
@@ -87,6 +175,20 @@ else()
87
175
endif ()
88
176
endif ()
89
177
178
+ if (WIN32 )
179
+ set (byproducts
180
+ ${libwebrtc_binary_dir} /obj/webrtc.lib
181
+ ${libwebrtc_binary_dir} /obj/pc/peerconnection.lib
182
+ )
183
+ else ()
184
+ set (byproducts
185
+ ${libc++_objects}
186
+ ${libc++abi_objects}
187
+ ${libwebrtc_binary_dir} /obj/libwebrtc.a
188
+ ${libwebrtc_binary_dir} /obj/pc/libpeerconnection.a
189
+ )
190
+ endif ()
191
+
90
192
ExternalProject_Add (
91
193
project_libwebrtc
92
194
@@ -97,6 +199,8 @@ ExternalProject_Add(
97
199
SOURCE_DIR ${CMAKE_BINARY_DIR} /external/libwebrtc/download/src
98
200
BINARY_DIR ${CMAKE_BINARY_DIR} /external/libwebrtc/build/${CMAKE_BUILD_TYPE}
99
201
202
+ BUILD_BYPRODUCTS ${byproducts}
203
+
100
204
DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E env DEPOT_TOOLS=${depot_tools_install_dir} PLATFORM=${PLATFORM} WEBRTC_REVISION=${WEBRTC_REVISION} ${CMAKE_SOURCE_DIR} /scripts/download-webrtc.${suffix}
101
205
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env BINARY_DIR=<BINARY_DIR> DEPOT_TOOLS=${depot_tools_install_dir} GN_GEN_ARGS=${GN_GEN_ARGS} SOURCE_DIR=<SOURCE_DIR> ${CMAKE_SOURCE_DIR} /scripts/configure-webrtc.${suffix}
102
206
BUILD_COMMAND ${CMAKE_COMMAND} -E env CMAKE_BUILD_TYPE =${CMAKE_BUILD_TYPE} DEPOT_TOOLS=${depot_tools_install_dir} ${CMAKE_SOURCE_DIR} /scripts/build-webrtc.${suffix}
@@ -129,6 +233,9 @@ else()
129
233
set_property (TARGET libpeerconnection PROPERTY IMPORTED_LOCATION "${libwebrtc_binary_dir} /obj/pc/libpeerconnection.a" )
130
234
endif ()
131
235
236
+ set (libc++_include_dir "${libwebrtc_source_dir} /src/buildtools/third_party/libc++/trunk/include" )
237
+ set (libc++abi_include_dir "${libwebrtc_source_dir} /src/buildtools/third_party/libc++abi/trunk/include" )
238
+
132
239
# NOTE(mroberts): I would like this to be INTERFACE.
133
240
#
134
241
# https://gitlab.kitware.com/cmake/cmake/issues/15052
@@ -140,95 +247,6 @@ endif()
140
247
# ${libwebrtc_source_dir}/webrtc/third_party/libyuv/include
141
248
# )
142
249
143
- # libc++
144
- # -----------------------------------------------------------------------------
145
-
146
- add_library (libc++ OBJECT IMPORTED )
147
- add_dependencies (libc++ libwebrtc )
148
-
149
- set (libc++_objects
150
- algorithm.o
151
- any.o
152
- bind.o
153
- chrono.o
154
- condition_variable.o
155
- debug.o
156
- exception.o
157
- functional.o
158
- future.o
159
- hash.o
160
- ios.o
161
- iostream.o
162
- locale.o
163
- memory.o
164
- mutex.o
165
- new.o
166
- optional .o
167
- random.o
168
- regex .o
169
- shared_mutex.o
170
- stdexcept.o
171
- string .o
172
- strstream.o
173
- system_error.o
174
- thread.o
175
- typeinfo.o
176
- utility.o
177
- valarray.o
178
- variant.o
179
- vector.o
180
- )
181
- list (TRANSFORM libc++_objects PREPEND ${libwebrtc_binary_dir} /obj/buildtools/third_party/libc++/libc++/ )
182
-
183
- set_property (TARGET libc++ APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG )
184
- set_target_properties (libc++ PROPERTIES IMPORTED_OBJECTS_DEBUG "${libc++_objects}" IMPORTED_OBJECTS "${libc++_objects}" )
185
-
186
- set (libc++_include_dir "${libwebrtc_source_dir} /src/buildtools/third_party/libc++/trunk/include" )
187
-
188
- # NOTE(mroberts): I would like this to be INTERFACE.
189
- #
190
- # https://gitlab.kitware.com/cmake/cmake/issues/15052
191
- #
192
- # target_include_directories(libc++ SYSTEM INTERFACE "${libc++_include_dir}")
193
-
194
- # libc++abi
195
- # -----------------------------------------------------------------------------
196
-
197
- add_library (libc++abi OBJECT IMPORTED )
198
- add_dependencies (libc++abi libwebrtc )
199
-
200
- set (libc++abi_objects
201
- abort_message.o
202
- cxa_aux_runtime.o
203
- cxa_default_handlers.o
204
- cxa_demangle.o
205
- cxa_exception.o
206
- cxa_exception_storage.o
207
- cxa_guard.o
208
- cxa_handlers.o
209
- cxa_personality.o
210
- cxa_unexpected.o
211
- cxa_vector.o
212
- cxa_virtual.o
213
- fallback_malloc.o
214
- private_typeinfo.o
215
- stdlib_exception.o
216
- stdlib_stdexcept.o
217
- stdlib_typeinfo.o
218
- )
219
- list (TRANSFORM libc++abi_objects PREPEND ${libwebrtc_binary_dir} /obj/buildtools/third_party/libc++abi/libc++abi/ )
220
-
221
- set_property (TARGET libc++abi APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG )
222
- set_target_properties (libc++abi PROPERTIES IMPORTED_OBJECTS_DEBUG "${libc++abi_objects}" IMPORTED_OBJECTS "${libc++abi_objects}" )
223
-
224
- set (libc++abi_include_dir "${libwebrtc_source_dir} /src/buildtools/third_party/libc++abi/trunk/include" )
225
-
226
- # NOTE(mroberts): I would like this to be INTERFACE.
227
- #
228
- # https://gitlab.kitware.com/cmake/cmake/issues/15052
229
- #
230
- # target_include_directories(libc++abi SYSTEM INTERFACE "${libc++abi_include_dir}")
231
-
232
250
# catch2
233
251
# -----------------------------------------------------------------------------
234
252
0 commit comments