1
1
cmake_minimum_required (VERSION 3.16 )
2
2
3
3
include (ExternalProject )
4
+ include (FetchContent )
4
5
5
6
if (POLICY CMP0135 )
6
7
cmake_policy (SET CMP0135 NEW )
@@ -33,6 +34,17 @@ function(casparcg_add_runtime_dependency_dir FILE_TO_COPY)
33
34
set (CASPARCG_RUNTIME_DEPENDENCIES_DEBUG_DIRS "${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG_DIRS} " "${FILE_TO_COPY} " CACHE INTERNAL "" )
34
35
endif ()
35
36
endfunction ()
37
+ function (casparcg_add_runtime_dependency_from_target TARGET )
38
+ get_target_property (_runtime_lib_name ${TARGET} IMPORTED_LOCATION_RELEASE )
39
+ if (NOT "${_runtime_lib_name} " STREQUAL "" )
40
+ set (CASPARCG_RUNTIME_DEPENDENCIES_RELEASE "${CASPARCG_RUNTIME_DEPENDENCIES_RELEASE} " "${_runtime_lib_name} " CACHE INTERNAL "" )
41
+ endif ()
42
+
43
+ get_target_property (_runtime_lib_name ${TARGET} IMPORTED_LOCATION_DEBUG )
44
+ if (NOT "${_runtime_lib_name} " STREQUAL "" )
45
+ set (CASPARCG_RUNTIME_DEPENDENCIES_DEBUG "${CASPARCG_RUNTIME_DEPENDENCIES_DEBUG} " "${_runtime_lib_name} " CACHE INTERNAL "" )
46
+ endif ()
47
+ endfunction ()
36
48
37
49
casparcg_add_runtime_dependency ("${PROJECT_SOURCE_DIR} /shell/casparcg.config" )
38
50
@@ -65,7 +77,7 @@ else ()
65
77
--with-libraries=regex
66
78
--with-libraries=system
67
79
--with-libraries=thread
68
- BUILD_COMMAND ./b2 install debug release --prefix=${BOOST_INSTALL_DIR} link=static threading=multi runtime-link=shared -j ${CONFIG_CPU_COUNT}
80
+ BUILD_COMMAND ./b2 install debug release --prefix=${BOOST_INSTALL_DIR} link=static threading=multi runtime-link=shared -j ${CONFIG_CPU_COUNT}
69
81
INSTALL_COMMAND ""
70
82
)
71
83
set (BOOST_INCLUDE_PATH "${BOOST_INSTALL_DIR} /include/boost-1_74" )
@@ -101,69 +113,59 @@ casparcg_add_runtime_dependency("${FFMPEG_BIN_PATH}/swscale-8.dll")
101
113
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /ffmpeg.exe" )
102
114
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /ffprobe.exe" )
103
115
116
+ get_property (is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG )
117
+
104
118
set (EXTERNAL_CMAKE_ARGS "" )
105
- if (NOT CMAKE_GENERATOR MATCHES "Visual Studio" )
119
+ if (is_multi_config )
106
120
set (EXTERNAL_CMAKE_ARGS "-DCMAKE_BUILD_TYPE:STRING=$<CONFIG>" )
121
+ else ()
122
+ set (EXTERNAL_CMAKE_ARGS "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} " )
107
123
endif ()
108
124
109
125
# TBB
110
- casparcg_add_external_project (tbb )
111
- ExternalProject_Add (tbb
126
+ FetchContent_Declare (tbb
112
127
URL ${CASPARCG_DOWNLOAD_MIRROR} /tbb/oneapi-tbb-2021.1.1-win.zip
113
128
URL_HASH MD5=51bf49044d477dea67670abd92f8814c
114
129
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
115
- CONFIGURE_COMMAND ""
116
- BUILD_COMMAND ""
117
- INSTALL_COMMAND ""
118
130
)
119
- ExternalProject_Get_Property (tbb SOURCE_DIR )
120
- set (TBB_INCLUDE_PATH "${SOURCE_DIR} /include" )
121
- set (TBB_BIN_PATH "${SOURCE_DIR} /redist/intel64/vc14" )
122
- link_directories ("${SOURCE_DIR} /lib/intel64/vc14" )
123
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbb12.dll" "Release" )
124
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbb12_debug.dll" "Debug" )
125
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbbmalloc.dll" "Release" )
126
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbbmalloc_debug.dll" "Debug" )
127
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbbmalloc_proxy.dll" "Release" )
128
- casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbbmalloc_proxy_debug.dll" "Debug" )
131
+ FetchContent_MakeAvailable (tbb )
132
+
133
+ list (APPEND CMAKE_PREFIX_PATH ${tbb_SOURCE_DIR} /lib/cmake/tbb )
134
+ find_package (tbb REQUIRED )
135
+
136
+ casparcg_add_runtime_dependency_from_target (TBB::tbb )
137
+ casparcg_add_runtime_dependency_from_target (TBB::tbbmalloc )
138
+ casparcg_add_runtime_dependency_from_target (TBB::tbbmalloc_proxy )
129
139
130
140
# GLEW
131
- casparcg_add_external_project (glew )
132
- ExternalProject_Add (glew
141
+ FetchContent_Declare (glew
133
142
URL ${CASPARCG_DOWNLOAD_MIRROR} /glew/glew-2.2.0-win32.zip
134
143
URL_HASH MD5=1feddfe8696c192fa46a0df8eac7d4bf
135
144
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
136
- CONFIGURE_COMMAND ""
137
- BUILD_COMMAND ""
138
- INSTALL_COMMAND ""
139
145
)
140
- ExternalProject_Get_Property (glew SOURCE_DIR )
141
- set (GLEW_INCLUDE_PATH ${SOURCE_DIR} /include )
142
- set (GLEW_BIN_PATH ${SOURCE_DIR} /bin/Release/x64 )
143
- link_directories (${SOURCE_DIR} /lib/Release/x64 )
144
- add_definitions ( -DGLEW_NO_GLU )
145
- casparcg_add_runtime_dependency ("${GLEW_BIN_PATH} /glew32.dll" )
146
+ FetchContent_MakeAvailable (glew )
147
+
148
+ add_library (GLEW::glew INTERFACE IMPORTED )
149
+ target_include_directories (GLEW::glew INTERFACE ${glew_SOURCE_DIR} /include )
150
+ target_link_directories (GLEW::glew INTERFACE ${glew_SOURCE_DIR} /lib/Release/x64 )
151
+ target_link_libraries (GLEW::glew INTERFACE glew32 )
152
+ casparcg_add_runtime_dependency ("${glew_SOURCE_DIR} /bin/Release/x64/glew32.dll" )
146
153
147
154
# SFML
148
- casparcg_add_external_project (sfml )
149
- ExternalProject_Add (sfml
150
- URL ${CASPARCG_DOWNLOAD_MIRROR} /sfml/SFML-2.4.2-windows-vc14-64-bit.zip
151
- URL_HASH MD5=8a2f747335fa21a7a232976daa9031ac
155
+ FetchContent_Declare (sfml
156
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /sfml/SFML-2.6.2-windows-vc17-64-bit.zip
157
+ URL_HASH MD5=dee0602d6f94d1843eef4d7568d2c23d
152
158
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
153
- CONFIGURE_COMMAND ""
154
- BUILD_COMMAND ""
155
- INSTALL_COMMAND ""
156
159
)
157
- ExternalProject_Get_Property (sfml SOURCE_DIR )
158
- set (SFML_INCLUDE_PATH ${SOURCE_DIR} /include )
159
- set (SFML_BIN_PATH "${SOURCE_DIR} /bin" )
160
- link_directories (${SOURCE_DIR} /lib )
161
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-graphics-d-2.dll" "Debug" )
162
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-graphics-2.dll" "Release" )
163
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-window-d-2.dll" "Debug" )
164
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-window-2.dll" "Release" )
165
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-system-d-2.dll" "Debug" )
166
- casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-system-2.dll" "Release" )
160
+ FetchContent_MakeAvailable (sfml )
161
+
162
+ list (APPEND CMAKE_PREFIX_PATH ${sfml_SOURCE_DIR} /lib/cmake/SFML )
163
+ # set(SFML_STATIC_LIBRARIES TRUE)
164
+ find_package (SFML 2 COMPONENTS graphics window REQUIRED )
165
+
166
+ casparcg_add_runtime_dependency_from_target (sfml-graphics )
167
+ casparcg_add_runtime_dependency_from_target (sfml-window )
168
+ casparcg_add_runtime_dependency_from_target (sfml-system )
167
169
168
170
#ZLIB
169
171
casparcg_add_external_project (zlib )
@@ -178,27 +180,26 @@ ExternalProject_Get_Property(zlib SOURCE_DIR)
178
180
ExternalProject_Get_Property (zlib BINARY_DIR )
179
181
set (ZLIB_INCLUDE_PATH "${SOURCE_DIR} ;${BINARY_DIR} " )
180
182
181
- if (CMAKE_GENERATOR MATCHES "Visual Studio" )
183
+ if (is_multi_config )
182
184
link_directories (${BINARY_DIR} /Release )
183
185
else ()
184
186
link_directories (${BINARY_DIR} )
185
187
endif ()
186
188
187
- # OPENAL
188
- casparcg_add_external_project (openal )
189
- ExternalProject_Add (openal
189
+ # OpenAL
190
+ FetchContent_Declare (openal
190
191
URL ${CASPARCG_DOWNLOAD_MIRROR} /openal/openal-soft-1.19.1-bin.zip
191
192
URL_HASH MD5=b78ef1ba26f7108e763f92df6bbc3fa5
192
193
DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
193
- BUILD_IN_SOURCE 1
194
- CONFIGURE_COMMAND ""
195
- BUILD_COMMAND ${CMAKE_COMMAND} -E copy bin/Win64/soft_oal.dll bin/Win64/OpenAL32.dll
196
- INSTALL_COMMAND ""
197
194
)
198
- ExternalProject_Get_Property (openal SOURCE_DIR )
199
- set (OPENAL_INCLUDE_PATH "${SOURCE_DIR} /include" )
200
- link_directories ("${SOURCE_DIR} /libs/Win64" )
201
- casparcg_add_runtime_dependency ("${SOURCE_DIR} /bin/Win64/OpenAL32.dll" )
195
+ FetchContent_MakeAvailable (openal )
196
+ file (COPY_FILE ${openal_SOURCE_DIR} /bin/Win64/soft_oal.dll ${openal_SOURCE_DIR} /bin/Win64/OpenAL32.dll )
197
+
198
+ add_library (OpenAL::OpenAL INTERFACE IMPORTED )
199
+ target_include_directories (OpenAL::OpenAL INTERFACE ${openal_SOURCE_DIR} /include )
200
+ target_link_directories (OpenAL::OpenAL INTERFACE ${openal_SOURCE_DIR} /libs/Win64 )
201
+ target_link_libraries (OpenAL::OpenAL INTERFACE OpenAL32 )
202
+ casparcg_add_runtime_dependency ("${openal_SOURCE_DIR} /bin/Win64/OpenAL32.dll" )
202
203
203
204
# flash template host
204
205
casparcg_add_external_project (flashtemplatehost )
@@ -219,7 +220,6 @@ set(TEMPLATE_HOST_PATH "${SOURCE_DIR}")
219
220
set (LIBERATION_FONTS_BIN_PATH "${PROJECT_SOURCE_DIR} /shell/liberation-fonts" )
220
221
casparcg_add_runtime_dependency ("${LIBERATION_FONTS_BIN_PATH} /LiberationMono-Regular.ttf" )
221
222
222
- message ("TEST ${EXTERNAL_CMAKE_ARGS} " )
223
223
# CEF
224
224
if (ENABLE_HTML )
225
225
casparcg_add_external_project (cef )
@@ -233,30 +233,33 @@ if (ENABLE_HTML)
233
233
ExternalProject_Get_Property (cef SOURCE_DIR )
234
234
ExternalProject_Get_Property (cef BINARY_DIR )
235
235
236
+ add_library (CEF::CEF INTERFACE IMPORTED )
237
+ add_dependencies (CEF::CEF cef )
238
+ target_include_directories (CEF::CEF INTERFACE
239
+ "${SOURCE_DIR} "
240
+ )
236
241
237
- set (CEF_INCLUDE_PATH ${SOURCE_DIR} )
238
242
set (CEF_RESOURCE_PATH ${SOURCE_DIR} /Resources )
239
243
set (CEF_BIN_PATH ${SOURCE_DIR} /Release )
240
- link_directories (${SOURCE_DIR} /Release )
241
- link_directories (${BINARY_DIR} /libcef_dll_wrapper )
242
-
243
- if (CMAKE_GENERATOR MATCHES "Visual Studio" )
244
- set (CEF_LIB
245
- libcef
246
- optimized Release/libcef_dll_wrapper
247
- debug Debug/libcef_dll_wrapper )
244
+
245
+ if (is_multi_config )
246
+ target_link_libraries (CEF::CEF INTERFACE
247
+ ${SOURCE_DIR} /Release/libcef.lib
248
+ optimized ${BINARY_DIR} /libcef_dll_wrapper/Release/libcef_dll_wrapper.lib
249
+ debug ${BINARY_DIR} /libcef_dll_wrapper/Debug/libcef_dll_wrapper.lib )
248
250
else ()
249
- set (CEF_LIB
250
- libcef
251
- libcef_dll_wrapper )
251
+ link_directories (${SOURCE_DIR} /Release ${BINARY_DIR} /libcef_dll_wrapper )
252
+ target_link_libraries (CEF::CEF INTERFACE
253
+ libcef.lib
254
+ libcef_dll_wrapper.lib )
252
255
endif ()
253
256
254
257
casparcg_add_runtime_dependency_dir ("${CEF_RESOURCE_PATH} /locales" )
255
258
casparcg_add_runtime_dependency ("${CEF_RESOURCE_PATH} /chrome_100_percent.pak" )
256
259
casparcg_add_runtime_dependency ("${CEF_RESOURCE_PATH} /chrome_200_percent.pak" )
257
260
casparcg_add_runtime_dependency ("${CEF_RESOURCE_PATH} /resources.pak" )
258
261
casparcg_add_runtime_dependency ("${CEF_RESOURCE_PATH} /icudtl.dat" )
259
-
262
+
260
263
casparcg_add_runtime_dependency ("${CEF_BIN_PATH} /snapshot_blob.bin" )
261
264
casparcg_add_runtime_dependency ("${CEF_BIN_PATH} /v8_context_snapshot.bin" )
262
265
casparcg_add_runtime_dependency ("${CEF_BIN_PATH} /libcef.dll" )
0 commit comments