-
Notifications
You must be signed in to change notification settings - Fork 206
Expand file tree
/
Copy pathffmpeg.cmake
More file actions
484 lines (442 loc) · 14.5 KB
/
ffmpeg.cmake
File metadata and controls
484 lines (442 loc) · 14.5 KB
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
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
#
# Copyright (C) 2022 Autodesk, Inc. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# ---------------------- FFmpeg Build Customization ----------------------------
# Note: The FFmpeg build can be customized by super projects via the following cmake global properties (typically by appending values to them):
# cmake-format: off
# RV_FFMPEG_DEPENDS - Additional FFmpeg's dependencies can be appended to this property
# RV_FFMPEG_PATCH_COMMAND_STEP - Commands to be executed as part of FFmpeg's patch step
# RV_FFMPEG_POST_CONFIGURE_STEP - Commands to be executed after FFMpeg's configure step
# RV_FFMPEG_CONFIG_OPTIONS - Custom FFmpeg configure options to enable/disable decoders and encoders
# RV_FFMPEG_EXTRA_C_OPTIONS - Extra cflags options
# RV_FFMPEG_EXTRA_LIBPATH_OPTIONS - Extra libpath options
# cmake-format: on
# ------------------------------------------------------------------------------
IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(PkgConfig)
SET(_ffmpeg_found_all
TRUE
)
FOREACH(
_comp
avutil swresample swscale avcodec avformat
)
PKG_CHECK_MODULES(PC_${_comp} lib${_comp})
IF(PC_${_comp}_FOUND)
IF(NOT TARGET ffmpeg::${_comp})
ADD_LIBRARY(ffmpeg::${_comp} UNKNOWN IMPORTED GLOBAL)
FIND_LIBRARY(
LIB_${_comp}
NAMES ${_comp}
HINTS ${PC_${_comp}_LIBDIR}
)
SET_PROPERTY(
TARGET ffmpeg::${_comp}
PROPERTY IMPORTED_LOCATION "${LIB_${_comp}}"
)
TARGET_INCLUDE_DIRECTORIES(
ffmpeg::${_comp}
INTERFACE "${PC_${_comp}_INCLUDE_DIRS}"
)
LIST(APPEND RV_DEPS_LIST ffmpeg::${_comp})
# Need to link dependencies
IF("${_comp}" STREQUAL "swresample"
OR "${_comp}" STREQUAL "swscale"
)
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::avutil
)
ELSEIF("${_comp}" STREQUAL "avcodec")
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::swresample
)
ELSEIF("${_comp}" STREQUAL "avformat")
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::avcodec
)
ENDIF()
ENDIF()
ELSE()
MESSAGE(WARNING "Homebrew FFmpeg component lib${_comp} not found")
SET(_ffmpeg_found_all
FALSE
)
ENDIF()
ENDFOREACH()
IF(_ffmpeg_found_all)
RETURN()
ENDIF()
ENDIF()
SET(_target
"RV_DEPS_FFMPEG"
)
SET(_version
${RV_DEPS_FFMPEG_VERSION}
)
SET(_download_hash
${RV_DEPS_FFMPEG_DOWNLOAD_HASH}
)
SET(_download_url
"https://github.com/FFmpeg/FFmpeg/archive/refs/tags/${_version}.zip"
)
SET(_base_dir
${RV_DEPS_BASE_DIR}/${_target}
)
SET(_install_dir
${_base_dir}/install
)
SET(${_target}_ROOT_DIR
${_install_dir}
)
SET(_make_command
make
)
SET(_configure_command
sh ./configure
)
SET(_include_dir
${_install_dir}/include
)
IF(RV_TARGET_WINDOWS)
SET(_lib_dir
${_install_dir}/bin
)
ELSE()
SET(_lib_dir
${_install_dir}/lib
)
ENDIF()
IF(RV_TARGET_DARWIN)
SET(_ffmpeg_avutil_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avutil.${RV_DEPS_FFMPEG_VERSION_LIB_avutil}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_swresample_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swresample.${RV_DEPS_FFMPEG_VERSION_LIB_swresample}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_swscale_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swscale.${RV_DEPS_FFMPEG_VERSION_LIB_swscale}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_avcodec_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avcodec.${RV_DEPS_FFMPEG_VERSION_LIB_avcodec}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_avformat_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avformat.${RV_DEPS_FFMPEG_VERSION_LIB_avformat}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
ELSEIF(RV_TARGET_LINUX)
SET(_ffmpeg_avutil_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avutil${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_FFMPEG_VERSION_LIB_avutil}
)
SET(_ffmpeg_swresample_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swresample${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_FFMPEG_VERSION_LIB_swresample}
)
SET(_ffmpeg_swscale_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swscale${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_FFMPEG_VERSION_LIB_swscale}
)
SET(_ffmpeg_avcodec_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avcodec${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_FFMPEG_VERSION_LIB_avcodec}
)
SET(_ffmpeg_avformat_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avformat${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_FFMPEG_VERSION_LIB_avformat}
)
ELSEIF(RV_TARGET_WINDOWS)
SET(_ffmpeg_avutil_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avutil-${RV_DEPS_FFMPEG_VERSION_LIB_avutil}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_swresample_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swresample-${RV_DEPS_FFMPEG_VERSION_LIB_swresample}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_swscale_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}swscale-${RV_DEPS_FFMPEG_VERSION_LIB_swscale}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_avcodec_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avcodec-${RV_DEPS_FFMPEG_VERSION_LIB_avcodec}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_ffmpeg_avformat_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}avformat-${RV_DEPS_FFMPEG_VERSION_LIB_avformat}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
ENDIF()
SET(_ffmpeg_libs
avutil swresample swscale avcodec avformat
)
FOREACH(
_ffmpeg_lib
${_ffmpeg_libs}
)
SET(_ffmpeg_${_ffmpeg_lib}_lib
${_lib_dir}/${_ffmpeg_${_ffmpeg_lib}_lib_name}
)
LIST(APPEND _build_byproducts ${_ffmpeg_${_ffmpeg_lib}_lib})
IF(RV_TARGET_WINDOWS)
SET(_ffmpeg_${_ffmpeg_lib}_implib
${_lib_dir}/${CMAKE_IMPORT_LIBRARY_PREFIX}${_ffmpeg_lib}${CMAKE_IMPORT_LIBRARY_SUFFIX}
)
LIST(APPEND _build_byproducts ${_ffmpeg_${_ffmpeg_lib}_implib})
ENDIF()
ENDFOREACH()
# Fetch customizable FFmpeg build properties
GET_PROPERTY(
RV_FFMPEG_DEPENDS GLOBAL
PROPERTY "RV_FFMPEG_DEPENDS"
)
GET_PROPERTY(
RV_FFMPEG_PATCH_COMMAND_STEP GLOBAL
PROPERTY "RV_FFMPEG_PATCH_COMMAND_STEP"
)
GET_PROPERTY(
RV_FFMPEG_POST_CONFIGURE_STEP GLOBAL
PROPERTY "RV_FFMPEG_POST_CONFIGURE_STEP"
)
GET_PROPERTY(
RV_FFMPEG_CONFIG_OPTIONS GLOBAL
PROPERTY "RV_FFMPEG_CONFIG_OPTIONS"
)
GET_PROPERTY(
RV_FFMPEG_EXTRA_C_OPTIONS GLOBAL
PROPERTY "RV_FFMPEG_EXTRA_C_OPTIONS"
)
GET_PROPERTY(
RV_FFMPEG_EXTRA_LIBPATH_OPTIONS GLOBAL
PROPERTY "RV_FFMPEG_EXTRA_LIBPATH_OPTIONS"
)
GET_PROPERTY(
RV_FFMPEG_EXTERNAL_LIBS GLOBAL
PROPERTY "RV_FFMPEG_EXTERNAL_LIBS"
)
# Make a list of common FFmpeg config options
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--enable-shared")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-static")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-iconv")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-outdevs")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-programs")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-large-tests")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-vaapi")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-doc")
IF(RV_TARGET_WINDOWS)
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--toolchain=msvc")
ENDIF()
# Disable x11 on macOS to avoid linking against Homebrew's X11 libraries, ensuring binary portability
IF(RV_TARGET_DARWIN
OR RV_TARGET_APPLE_ARM64
)
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-xlib")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-libxcb")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-libxcb-shm")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-libxcb-shape")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-libxcb-xfixes")
# For older FFmpeg versions, you might also need: LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-x11grab")
ENDIF()
# Change the condition to TRUE to be able to debug into FFmpeg.
IF(FALSE)
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-optimizations")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--enable-debug=3")
LIST(APPEND RV_FFMPEG_COMMON_CONFIG_OPTIONS "--disable-stripping")
ENDIF()
# Controls the EXTERNALPROJECT_ADD/BUILD_ALWAYS option
SET(${_force_rebuild}
FALSE
)
IF(RV_TARGET_APPLE_ARM64)
SET(RV_FFMPEG_USE_VIDEOTOOLBOX_DEFAULT_VALUE
ON
)
ELSE()
SET(RV_FFMPEG_USE_VIDEOTOOLBOX_DEFAULT_VALUE
OFF
)
ENDIF()
OPTION(RV_FFMPEG_USE_VIDEOTOOLBOX "FFmpeg laveraging the VideoToolbox framework" ${RV_FFMPEG_USE_VIDEOTOOLBOX_DEFAULT_VALUE})
# Make a list of the Open RV's FFmpeg config options unless already customized. Note that a super project, a project consuming Open RV as a submodule, can
# customize the FFmpeg config options via the RV_FFMPEG_CONFIG_OPTIONS cmake property.
IF(NOT RV_FFMPEG_CONFIG_OPTIONS)
SET(NON_FREE_DECODERS_TO_DISABLE
"aac"
"aac_at"
"aac_fixed"
"aac_latm"
"ac3"
"bink"
"binkaudio_dct"
"binkaudio_rdft"
"dnxhd"
"dvvideo"
"prores"
"qtrle"
"vp9"
"vp9_cuvid"
"vp9_mediacodec"
"vp9_qsv"
"vp9_rkmpp"
"vp9_v4l2m2m"
)
FOREACH(
NON_FREE_DECODER_TO_DISABLE
${NON_FREE_DECODERS_TO_DISABLE}
)
IF(NOT NON_FREE_DECODER_TO_DISABLE IN_LIST RV_FFMPEG_NON_FREE_DECODERS_TO_ENABLE)
LIST(APPEND _disabled_decoders "--disable-decoder=${NON_FREE_DECODER_TO_DISABLE}")
ELSE()
MESSAGE(STATUS "FFmpeg decoder ${NON_FREE_DECODER_TO_DISABLE} enabled")
ENDIF()
ENDFOREACH()
SET(NON_FREE_ENCODERS_TO_DISABLE
"aac"
"aac_mf"
"dnxhd"
"dvvideo"
"prores"
"qtrle"
"vp9_qsv"
"vp9_vaapi"
)
FOREACH(
NON_FREE_ENCODER_TO_DISABLE
${NON_FREE_ENCODERS_TO_DISABLE}
)
IF(NOT NON_FREE_ENCODER_TO_DISABLE IN_LIST RV_FFMPEG_NON_FREE_ENCODERS_TO_ENABLE)
LIST(APPEND _disabled_encoders "--disable-encoder=${NON_FREE_ENCODER_TO_DISABLE}")
ELSE()
MESSAGE(STATUS "FFmpeg encoder ${NON_FREE_ENCODER_TO_DISABLE} enabled")
ENDIF()
ENDFOREACH()
LIST(APPEND _disabled_parsers "--disable-parser=vp9")
LIST(APPEND _disabled_filters "--disable-filter=geq")
LIST(APPEND _disabled_protocols "--disable-protocol=ffrtmpcrypt")
LIST(APPEND _disabled_protocols "--disable-protocol=rtmpe")
LIST(APPEND _disabled_protocols "--disable-protocol=rtmpte")
SET(RV_FFMPEG_CONFIG_OPTIONS
${_disabled_decoders} ${_disabled_encoders} ${_disabled_filters} ${_disabled_parsers} ${_disabled_protocols}
)
IF(NOT RV_FFMPEG_CONFIG_OPTIONS STREQUAL RV_FFMPEG_CONFIG_OPTIONS_CACHE)
SET(${_force_rebuild}
TRUE
)
SET(RV_FFMPEG_CONFIG_OPTIONS_CACHE
${RV_FFMPEG_CONFIG_OPTIONS}
CACHE STRING "FFmpeg config options" FORCE
)
ENDIF()
ENDIF()
LIST(REMOVE_DUPLICATES RV_FFMPEG_DEPENDS)
LIST(REMOVE_DUPLICATES RV_FFMPEG_CONFIG_OPTIONS)
LIST(REMOVE_DUPLICATES RV_FFMPEG_EXTRA_C_OPTIONS)
LIST(REMOVE_DUPLICATES RV_FFMPEG_EXTRA_LIBPATH_OPTIONS)
LIST(REMOVE_DUPLICATES RV_FFMPEG_EXTERNAL_LIBS)
SET(_ffmpeg_preprocess_pkg_config_path
$ENV{PKG_CONFIG_PATH}
)
LIST(APPEND _ffmpeg_preprocess_pkg_config_path "${RV_DEPS_DAVID_LIB_DIR}/pkgconfig")
IF(RV_TARGET_WINDOWS)
FOREACH(
_ffmpeg_pkg_config_path_element IN
LISTS _ffmpeg_preprocess_pkg_config_path
)
# Changing path start from "c:/..." to "/c/..." and replacing all backslashes with slashes since PkgConfig wants a linux path
STRING(REPLACE "\\" "/" _ffmpeg_pkg_config_path_element "${_ffmpeg_pkg_config_path_element}")
STRING(REPLACE ":" "" _ffmpeg_pkg_config_path_element "${_ffmpeg_pkg_config_path_element}")
STRING(FIND ${_ffmpeg_pkg_config_path_element} / _ffmpeg_first_slash_index)
IF(_ffmpeg_first_slash_index GREATER 0)
STRING(PREPEND _ffmpeg_pkg_config_path_element "/")
ENDIF()
LIST(APPEND _ffmpeg_pkg_config_path ${_ffmpeg_pkg_config_path_element})
ENDFOREACH()
ELSE()
SET(_ffmpeg_pkg_config_path
${_ffmpeg_preprocess_pkg_config_path}
)
ENDIF()
LIST(JOIN _ffmpeg_pkg_config_path ":" _ffmpeg_pkg_config_path)
SEPARATE_ARGUMENTS(RV_FFMPEG_PATCH_COMMAND_STEP)
EXTERNALPROJECT_ADD(
${_target}
DEPENDS ${RV_FFMPEG_DEPENDS}
DOWNLOAD_NAME ${_target}_${_version}.zip
DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
INSTALL_DIR ${_install_dir}
URL ${_download_url}
URL_MD5 ${_download_hash}
SOURCE_DIR ${RV_DEPS_BASE_DIR}/${_target}/src
PATCH_COMMAND ${RV_FFMPEG_PATCH_COMMAND_STEP}
CONFIGURE_COMMAND
${CMAKE_COMMAND} -E env "PKG_CONFIG_PATH=${_ffmpeg_pkg_config_path}" ${_configure_command} --prefix=${_install_dir} ${RV_FFMPEG_COMMON_CONFIG_OPTIONS}
${RV_FFMPEG_CONFIG_OPTIONS} ${RV_FFMPEG_EXTRA_C_OPTIONS} ${RV_FFMPEG_EXTRA_LIBPATH_OPTIONS} ${RV_FFMPEG_EXTERNAL_LIBS}
BUILD_COMMAND ${_make_command} -j${_cpu_count}
INSTALL_COMMAND ${_make_command} install
BUILD_IN_SOURCE TRUE
BUILD_ALWAYS ${_force_rebuild}
BUILD_BYPRODUCTS ${_build_byproducts}
USES_TERMINAL_BUILD TRUE
)
IF(RV_FFMPEG_POST_CONFIGURE_STEP)
EXTERNALPROJECT_ADD_STEP(
${_target} post_configure_step
${RV_FFMPEG_POST_CONFIGURE_STEP}
DEPENDEES configure
DEPENDERS build
)
ENDIF()
FILE(MAKE_DIRECTORY ${_include_dir})
FOREACH(
_ffmpeg_lib
${_ffmpeg_libs}
)
ADD_LIBRARY(ffmpeg::${_ffmpeg_lib} SHARED IMPORTED GLOBAL)
ADD_DEPENDENCIES(ffmpeg::${_ffmpeg_lib} ${_target})
SET_PROPERTY(
TARGET ffmpeg::${_ffmpeg_lib}
PROPERTY IMPORTED_LOCATION ${_ffmpeg_${_ffmpeg_lib}_lib}
)
IF(RV_TARGET_WINDOWS)
SET_PROPERTY(
TARGET ffmpeg::${_ffmpeg_lib}
PROPERTY IMPORTED_IMPLIB ${_ffmpeg_${_ffmpeg_lib}_implib}
)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(
ffmpeg::${_ffmpeg_lib}
INTERFACE ${_include_dir}
)
LIST(APPEND RV_DEPS_LIST ffmpeg::${_ffmpeg_lib})
ENDFOREACH()
TARGET_LINK_LIBRARIES(
ffmpeg::avutil
INTERFACE OpenSSL::Crypto
)
TARGET_LINK_LIBRARIES(
ffmpeg::swresample
INTERFACE ffmpeg::avutil
)
TARGET_LINK_LIBRARIES(
ffmpeg::swscale
INTERFACE ffmpeg::avutil
)
TARGET_LINK_LIBRARIES(
ffmpeg::avcodec
INTERFACE ffmpeg::swresample
)
TARGET_LINK_LIBRARIES(
ffmpeg::avformat
INTERFACE ffmpeg::avcodec
)
ADD_CUSTOM_TARGET(
clean-${_target}
COMMENT "Cleaning '${_target}' ..."
COMMAND ${CMAKE_COMMAND} -E remove_directory ${_base_dir}
COMMAND ${CMAKE_COMMAND} -E remove_directory ${RV_DEPS_BASE_DIR}/cmake/dependencies/${_target}-prefix
)
# Note: On Windows, FFmpeg stores both import libs and DLLs in the install bin directory, so we copy _lib_dir (which is install/bin on Windows) to both stage
# dirs.
IF(RV_TARGET_WINDOWS)
RV_STAGE_DEPENDENCY_LIBS(TARGET ${_target} EXTRA_LIB_DIRS ${RV_STAGE_BIN_DIR} USE_FLAG_FILE)
ELSE()
RV_STAGE_DEPENDENCY_LIBS(TARGET ${_target} USE_FLAG_FILE)
ENDIF()
SET(RV_DEPS_FFMPEG_VERSION
${_version}
CACHE INTERNAL "" FORCE
)