1
1
cmake_minimum_required (VERSION 3.16 )
2
2
3
+ include (ExternalProject )
4
+
5
+ INCLUDE (PlatformIntrospection )
6
+ _DETERMINE_CPU_COUNT (CONFIG_CPU_COUNT )
7
+
3
8
find_package (Git )
4
9
5
10
set (CONFIG_VERSION_GIT_HASH "N/A" )
@@ -13,6 +18,10 @@ endif ()
13
18
CONFIGURE_FILE ("${PROJECT_SOURCE_DIR} /version.tmpl" "${CMAKE_BINARY_DIR} /generated/version.h" )
14
19
INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR} /generated" )
15
20
21
+ set (CASPARCG_DOWNLOAD_MIRROR https://builds.julusian.dev/casparcg/dependencies/ CACHE STRING "Source/mirror to use for external dependencies" )
22
+ set (CASPARCG_DOWNLOAD_CACHE ${CMAKE_CURRENT_BINARY_DIR} /external CACHE STRING "Download cache directory for cmake ExternalProjects" )
23
+ set (BOOST_USE_PRECOMPILED ON CACHE BOOL "Use precompiled boost" )
24
+
16
25
set (CASPARCG_MODULE_INCLUDE_STATEMENTS "" CACHE INTERNAL "" )
17
26
set (CASPARCG_MODULE_INIT_STATEMENTS "" CACHE INTERNAL "" )
18
27
set (CASPARCG_MODULE_UNINIT_STATEMENTS "" CACHE INTERNAL "" )
@@ -21,6 +30,10 @@ set(CASPARCG_MODULE_PROJECTS "" CACHE INTERNAL "")
21
30
set (CASPARCG_RUNTIME_DEPENDENCIES "" CACHE INTERNAL "" )
22
31
set (CASPARCG_RUNTIME_DEPENDENCIES_DIRS "" CACHE INTERNAL "" )
23
32
33
+ function (casparcg_add_build_dependency PROJECT )
34
+ add_dependencies (${PROJECT} ${ARGN} )
35
+ endfunction ()
36
+
24
37
function (casparcg_add_include_statement HEADER_FILE_TO_INCLUDE )
25
38
set (CASPARCG_MODULE_INCLUDE_STATEMENTS "${CASPARCG_MODULE_INCLUDE_STATEMENTS} "
26
39
"#include <${HEADER_FILE_TO_INCLUDE} >"
@@ -68,33 +81,59 @@ function(casparcg_add_runtime_dependency_dir FILE_TO_COPY)
68
81
set (CASPARCG_RUNTIME_DEPENDENCIES_DIRS "${CASPARCG_RUNTIME_DEPENDENCIES_DIRS} " "${FILE_TO_COPY} " CACHE INTERNAL "" )
69
82
endfunction ()
70
83
71
- set (PACKAGES_FOLDER "${PROJECT_SOURCE_DIR} /packages" )
72
- set (NUGET_PACKAGES_FOLDER "${CMAKE_CURRENT_BINARY_DIR} /packages" )
73
-
74
84
casparcg_add_runtime_dependency ("${PROJECT_SOURCE_DIR} /shell/casparcg.config" )
75
85
76
86
# BOOST
77
- set (BOOST_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /boost.1.67.0.0/lib/native/include" )
78
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_atomic-vc141.1.67.0.0/lib/native" )
79
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_chrono-vc141.1.67.0.0/lib/native" )
80
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_context-vc141.1.67.0.0/lib/native" )
81
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_coroutine-vc141.1.67.0.0/lib/native" )
82
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_date_time-vc141.1.67.0.0/lib/native" )
83
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_filesystem-vc141.1.67.0.0/lib/native" )
84
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_locale-vc141.1.67.0.0/lib/native" )
85
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_log-vc141.1.67.0.0/lib/native" )
86
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_log_setup-vc141.1.67.0.0/lib/native" )
87
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_regex-vc141.1.67.0.0/lib/native" )
88
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_system-vc141.1.67.0.0/lib/native" )
89
- link_directories ("${NUGET_PACKAGES_FOLDER} /boost_thread-vc141.1.67.0.0/lib/native" )
87
+ if (BOOST_USE_PRECOMPILED )
88
+ ExternalProject_Add (boost
89
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /boost_1_67_0-precompiled.zip
90
+ URL_HASH MD5=8fd5450206d48acc51dff83ce5a34a20
91
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
92
+ CONFIGURE_COMMAND ""
93
+ BUILD_COMMAND ""
94
+ INSTALL_COMMAND ""
95
+ )
96
+ ExternalProject_Get_Property (boost SOURCE_DIR )
97
+ set (BOOST_INCLUDE_PATH "${SOURCE_DIR} /include/boost-1_67" )
98
+ link_directories ("${SOURCE_DIR} /lib" )
99
+ else ()
100
+ set (BOOST_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /boost-install )
101
+ ExternalProject_Add (boost
102
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /boost_1_67_0.zip
103
+ URL_HASH MD5=6da1ba65f8d33b1d306616e5acd87f67
104
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
105
+ BUILD_IN_SOURCE 1
106
+ CONFIGURE_COMMAND ./bootstrap.bat
107
+ --with-libraries=filesystem
108
+ --with-libraries=locale
109
+ --with-libraries=log
110
+ --with-libraries=log_setup
111
+ --with-libraries=regex
112
+ --with-libraries=system
113
+ --with-libraries=thread
114
+ BUILD_COMMAND ./b2 install --prefix=${BOOST_INSTALL_DIR} link=static variant=release threading=multi runtime-link=shared -j ${CONFIG_CPU_COUNT}
115
+ INSTALL_COMMAND ""
116
+ )
117
+ set (BOOST_INCLUDE_PATH "${BOOST_INSTALL_DIR} /include/boost-1_67" )
118
+ link_directories ("${BOOST_INSTALL_DIR} /lib" )
119
+ endif ()
90
120
add_definitions ( -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE )
91
121
add_definitions ( -DBOOST_COROUTINES_NO_DEPRECATION_WARNING )
92
122
add_definitions ( -DBOOST_LOCALE_HIDE_AUTO_PTR )
93
123
94
124
# FFMPEG
95
- set (FFMPEG_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /FFmpeg.Stable.5.1.2/build/native/include" )
96
- set (FFMPEG_BIN_PATH "${NUGET_PACKAGES_FOLDER} /FFmpeg.Stable.5.1.2/build/native/bin/x64" )
97
- link_directories ("${NUGET_PACKAGES_FOLDER} /FFmpeg.Stable.5.1.2/build/native/lib/x64" )
125
+ ExternalProject_Add (ffmpeg-lib
126
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /ffmpeg-5.1.2-full_build-shared.zip
127
+ URL_HASH MD5=bcb1efb68701a4b71e8a7efd9b817965
128
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
129
+ CONFIGURE_COMMAND ""
130
+ BUILD_COMMAND ""
131
+ INSTALL_COMMAND ""
132
+ )
133
+ ExternalProject_Get_Property (ffmpeg-lib SOURCE_DIR )
134
+ set (FFMPEG_INCLUDE_PATH "${SOURCE_DIR} /include" )
135
+ set (FFMPEG_BIN_PATH "${SOURCE_DIR} /bin" )
136
+ link_directories ("${SOURCE_DIR} /lib" )
98
137
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /avcodec-59.dll" )
99
138
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /avdevice-59.dll" )
100
139
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /avfilter-8.dll" )
@@ -108,62 +147,120 @@ casparcg_add_runtime_dependency("${FFMPEG_BIN_PATH}/ffmpeg.exe")
108
147
casparcg_add_runtime_dependency ("${FFMPEG_BIN_PATH} /ffprobe.exe" )
109
148
110
149
# TBB
111
- set (TBB_INCLUDE_PATH "${PACKAGES_FOLDER} /tbb/include" )
112
- set (TBB_BIN_PATH "${PACKAGES_FOLDER} /tbb/bin/intel64" )
113
- link_directories ("${PACKAGES_FOLDER} /tbb/lib/intel64" )
150
+ ExternalProject_Add (tbb
151
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /oneapi-tbb-2021.1.1-win.zip
152
+ URL_HASH MD5=51bf49044d477dea67670abd92f8814c
153
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
154
+ CONFIGURE_COMMAND ""
155
+ BUILD_COMMAND ""
156
+ INSTALL_COMMAND ""
157
+ )
158
+ ExternalProject_Get_Property (tbb SOURCE_DIR )
159
+ set (TBB_INCLUDE_PATH "${SOURCE_DIR} /include" )
160
+ set (TBB_BIN_PATH "${SOURCE_DIR} /redist/intel64/vc14" )
161
+ link_directories ("${SOURCE_DIR} /lib/intel64/vc14" )
114
162
casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbb12.dll" )
115
163
casparcg_add_runtime_dependency ("${TBB_BIN_PATH} /tbb12_debug.dll" )
116
164
117
165
# GLEW
118
- set (GLEW_INCLUDE_PATH "${PACKAGES_FOLDER} /glew/include" )
119
- set (GLEW_BIN_PATH "${PACKAGES_FOLDER} /glew/bin/win32" )
120
- link_directories ("${PACKAGES_FOLDER} /glew/lib/win32" )
166
+ ExternalProject_Add (glew
167
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /glew-2.2.0-win32.zip
168
+ URL_HASH MD5=1feddfe8696c192fa46a0df8eac7d4bf
169
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
170
+ CONFIGURE_COMMAND ""
171
+ BUILD_COMMAND ""
172
+ INSTALL_COMMAND ""
173
+ )
174
+ ExternalProject_Get_Property (glew SOURCE_DIR )
175
+ set (GLEW_INCLUDE_PATH ${SOURCE_DIR} /include )
176
+ set (GLEW_BIN_PATH ${SOURCE_DIR} /bin/Release/x64 )
177
+ link_directories (${SOURCE_DIR} /lib/Release/x64 )
121
178
add_definitions ( -DGLEW_NO_GLU )
122
179
casparcg_add_runtime_dependency ("${GLEW_BIN_PATH} /glew32.dll" )
123
180
124
181
# SFML
125
- set (SFML_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /sfml-system.2.4.2.0/build/native/include" )
126
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-graphics.2.4.2.0/build/native/lib/x64/v140/Debug/dynamic" )
127
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-graphics.2.4.2.0/build/native/lib/x64/v140/Release/dynamic" )
128
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-window.2.4.2.0/build/native/lib/x64/v140/Debug/dynamic" )
129
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-window.2.4.2.0/build/native/lib/x64/v140/Release/dynamic" )
130
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-system.2.4.2.0/build/native/lib/x64/v140/Debug/dynamic" )
131
- link_directories ("${NUGET_PACKAGES_FOLDER} /sfml-system.2.4.2.0/build/native/lib/x64/v140/Release/dynamic" )
132
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-graphics.redist.2.4.2.0/build/native/bin/x64/v140/Debug/dynamic/sfml-graphics-d-2.dll" )
133
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-graphics.redist.2.4.2.0/build/native/bin/x64/v140/Release/dynamic/sfml-graphics-2.dll" )
134
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-window.redist.2.4.2.0/build/native/bin/x64/v140/Debug/dynamic/sfml-window-d-2.dll" )
135
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-window.redist.2.4.2.0/build/native/bin/x64/v140/Release/dynamic/sfml-window-2.dll" )
136
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-system.redist.2.4.2.0/build/native/bin/x64/v140/Debug/dynamic/sfml-system-d-2.dll" )
137
- casparcg_add_runtime_dependency ("${NUGET_PACKAGES_FOLDER} /sfml-system.redist.2.4.2.0/build/native/bin/x64/v140/Release/dynamic/sfml-system-2.dll" )
182
+ ExternalProject_Add (sfml
183
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /SFML-2.4.2-windows-vc14-64-bit.zip
184
+ URL_HASH MD5=8a2f747335fa21a7a232976daa9031ac
185
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
186
+ CONFIGURE_COMMAND ""
187
+ BUILD_COMMAND ""
188
+ INSTALL_COMMAND ""
189
+ )
190
+ ExternalProject_Get_Property (sfml SOURCE_DIR )
191
+ set (SFML_INCLUDE_PATH ${SOURCE_DIR} /include )
192
+ set (SFML_BIN_PATH "${SOURCE_DIR} /bin" )
193
+ link_directories (${SOURCE_DIR} /lib )
194
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-graphics-d-2.dll" )
195
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-graphics-2.dll" )
196
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-window-d-2.dll" )
197
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-window-2.dll" )
198
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-system-d-2.dll" )
199
+ casparcg_add_runtime_dependency ("${SFML_BIN_PATH} /sfml-system-2.dll" )
138
200
139
201
# FREEIMAGE
140
- set (FREEIMAGE_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /native.freeimage.vc140.3.17.0/build/native/include" )
141
- set (FREEIMAGE_BIN_PATH "${NUGET_PACKAGES_FOLDER} /native.freeimage.vc140.redist.3.17.0/build/native/bin/x64/dynamic" )
142
- link_directories ("${NUGET_PACKAGES_FOLDER} /native.freeimage.vc140.3.17.0/build/native/lib/x64" )
143
- casparcg_add_runtime_dependency ("${FREEIMAGE_BIN_PATH} /FreeImage.dll" )
144
- casparcg_add_runtime_dependency ("${FREEIMAGE_BIN_PATH} /FreeImaged.dll" )
202
+ ExternalProject_Add (freeimage
203
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /FreeImage3180Win32Win64.zip
204
+ URL_HASH MD5=393d3df75b14cbcb4887da1c395596e2
205
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
206
+ CONFIGURE_COMMAND ""
207
+ BUILD_COMMAND ""
208
+ INSTALL_COMMAND ""
209
+ )
210
+ ExternalProject_Get_Property (freeimage SOURCE_DIR )
211
+ set (FREEIMAGE_INCLUDE_PATH "${SOURCE_DIR} /Dist/x64" )
212
+ set (FREEIMAGE_BIN_PATH "${FREEIMAGE_INCLUDE_PATH} " )
213
+ link_directories ("${FREEIMAGE_INCLUDE_PATH} " )
214
+ casparcg_add_runtime_dependency ("${FREEIMAGE_INCLUDE_PATH} /FreeImage.dll" )
145
215
146
216
#ZLIB
147
- set (ZLIB_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /zlib-msvc-x64.1.2.11.8900/build/native/include" )
148
- link_directories ("${NUGET_PACKAGES_FOLDER} /zlib-msvc-x64.1.2.11.8900/build/native/lib_release" )
149
- link_directories ("${NUGET_PACKAGES_FOLDER} /zlib-msvc-x64.1.2.11.8900/build/native/lib_debug" )
217
+ ExternalProject_Add (zlib
218
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /zlib-1.3.tar.gz
219
+ URL_HASH MD5=60373b133d630f74f4a1f94c1185a53f
220
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
221
+ INSTALL_COMMAND ""
222
+ )
223
+ ExternalProject_Get_Property (zlib SOURCE_DIR )
224
+ ExternalProject_Get_Property (zlib BINARY_DIR )
225
+ set (ZLIB_INCLUDE_PATH "${SOURCE_DIR} ;${BINARY_DIR} " )
226
+ link_directories (${BINARY_DIR} /Release )
150
227
151
228
# OPENAL
152
- set (OPENAL_INCLUDE_PATH "${PACKAGES_FOLDER} /openal/include" )
153
- set (OPENAL_BIN_PATH "${PACKAGES_FOLDER} /openal/bin/win32" )
154
- link_directories ("${PACKAGES_FOLDER} /openal/lib/win32" )
155
- casparcg_add_runtime_dependency ("${OPENAL_BIN_PATH} /OpenAL32.dll" )
229
+ ExternalProject_Add (openal
230
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /openal-soft-1.19.1-bin.zip
231
+ URL_HASH MD5=b78ef1ba26f7108e763f92df6bbc3fa5
232
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
233
+ BUILD_IN_SOURCE 1
234
+ CONFIGURE_COMMAND ""
235
+ BUILD_COMMAND cp bin/Win64/soft_oal.dll bin/Win64/OpenAL32.dll
236
+ INSTALL_COMMAND ""
237
+ )
238
+ ExternalProject_Get_Property (openal SOURCE_DIR )
239
+ set (OPENAL_INCLUDE_PATH "${SOURCE_DIR} /include" )
240
+ link_directories ("${SOURCE_DIR} /libs/Win64" )
241
+ casparcg_add_runtime_dependency ("${SOURCE_DIR} /bin/Win64/OpenAL32.dll" )
156
242
157
243
# LIBERATION_FONTS
158
244
set (LIBERATION_FONTS_BIN_PATH "${PROJECT_SOURCE_DIR} /shell/liberation-fonts" )
159
245
casparcg_add_runtime_dependency ("${LIBERATION_FONTS_BIN_PATH} /LiberationMono-Regular.ttf" )
160
246
161
247
# CEF
162
248
if (ENABLE_HTML )
163
- set (CEF_INCLUDE_PATH "${NUGET_PACKAGES_FOLDER} /casparcg.cef.sdk.95.0.1-MediaHandler.2467/CEF" )
164
- set (CEF_BIN_PATH "${NUGET_PACKAGES_FOLDER} /casparcg.cef.redist.x64.95.0.1-MediaHandler.2467/CEF" )
165
- set (CEF_RESOURCE_PATH "${NUGET_PACKAGES_FOLDER} /casparcg.cef.redist.x64.95.0.1-MediaHandler.2467/CEF" )
166
- link_directories ("${NUGET_PACKAGES_FOLDER} /casparcg.cef.sdk.95.0.1-MediaHandler.2467/CEF/x64" )
249
+ ExternalProject_Add (cef
250
+ URL ${CASPARCG_DOWNLOAD_MIRROR} /cef_binary_4638_windows_x64.zip
251
+ URL_HASH MD5=14ad547122903eba3f145322fb02bc6d
252
+ DOWNLOAD_DIR ${CASPARCG_DOWNLOAD_CACHE}
253
+ CMAKE_ARGS -DUSE_SANDBOX=Off -DCEF_RUNTIME_LIBRARY_FLAG=/MD
254
+ INSTALL_COMMAND ""
255
+ )
256
+ ExternalProject_Get_Property (cef SOURCE_DIR )
257
+ ExternalProject_Get_Property (cef BINARY_DIR )
258
+
259
+ set (CEF_INCLUDE_PATH ${SOURCE_DIR} )
260
+ set (CEF_BIN_PATH ${SOURCE_DIR} /Release )
261
+ set (CEF_RESOURCE_PATH ${SOURCE_DIR} /Resources )
262
+ link_directories (${SOURCE_DIR} /Release )
263
+ link_directories (${BINARY_DIR} /libcef_dll_wrapper/Release )
167
264
168
265
casparcg_add_runtime_dependency_dir ("${CEF_RESOURCE_PATH} /locales" )
169
266
casparcg_add_runtime_dependency ("${CEF_RESOURCE_PATH} /chrome_100_percent.pak" )
0 commit comments