1
0
Fork 0

Add DESKTOP_APP_USE_PACKAGED_FFMPEG_STATIC option

Since static linking of packaged ffmpeg can be the easier option for libraries bundling
This commit is contained in:
Ilya Fedin 2020-05-13 00:00:32 +04:00 committed by John Preston
parent e4f4dad321
commit 85759739eb
4 changed files with 51 additions and 9 deletions

View file

@ -16,14 +16,34 @@ if (DESKTOP_APP_USE_PACKAGED)
pkg_check_modules(SWSCALE REQUIRED IMPORTED_TARGET libswscale)
pkg_check_modules(SWRESAMPLE REQUIRED IMPORTED_TARGET libswresample)
target_link_libraries(external_ffmpeg
INTERFACE
PkgConfig::AVCODEC
PkgConfig::AVFORMAT
PkgConfig::AVUTIL
PkgConfig::SWSCALE
PkgConfig::SWRESAMPLE
)
if (DESKTOP_APP_USE_PACKAGED_FFMPEG_STATIC)
target_include_directories(external_ffmpeg
INTERFACE
${AVCODEC_STATIC_INCLUDE_DIRS}
${AVFORMAT_STATIC_INCLUDE_DIRS}
${AVUTIL_STATIC_INCLUDE_DIRS}
${SWSCALE_STATIC_INCLUDE_DIRS}
${SWRESAMPLE_STATIC_INCLUDE_DIRS}
)
target_link_static_libraries(external_ffmpeg IGNORE_NONEXISTING
INTERFACE
${AVCODEC_STATIC_LIBRARIES}
${AVFORMAT_STATIC_LIBRARIES}
${AVUTIL_STATIC_LIBRARIES}
${SWSCALE_STATIC_LIBRARIES}
${SWRESAMPLE_STATIC_LIBRARIES}
)
else()
target_link_libraries(external_ffmpeg
INTERFACE
PkgConfig::AVCODEC
PkgConfig::AVFORMAT
PkgConfig::AVUTIL
PkgConfig::SWSCALE
PkgConfig::SWRESAMPLE
)
endif()
else()
target_include_directories(external_ffmpeg SYSTEM
INTERFACE

View file

@ -63,6 +63,7 @@ INTERFACE
VideoDecodeAcceleration
AVFoundation
CoreAudio
CoreVideo
QuartzCore
AppKit
CoreWLAN

View file

@ -12,14 +12,34 @@ function(target_link_static_libraries target_name)
set(private_libs "")
set(public_libs "")
set(interface_libs "")
set(ignore_nonexisting 0)
set(ignored_libs "")
foreach (entry ${list})
if (${entry} STREQUAL "PRIVATE" OR ${entry} STREQUAL "PUBLIC" OR ${entry} STREQUAL "INTERFACE")
set(writing_now ${entry})
elseif (${entry} STREQUAL "IGNORE_NONEXISTING")
set(ignore_nonexisting 1)
else()
find_library(static_lib_${entry} lib${entry}.a)
set(full_path "${static_lib_${entry}}")
if (${full_path} STREQUAL static_lib_${entry}-NOTFOUND)
message(FATAL_ERROR "Could not find static library lib${entry}.a")
if (ignore_nonexisting)
if (NOT entry IN_LIST ignored_libs)
message(VERBOSE "Could not find static library lib${entry}.a, using shared one...")
list(APPEND ignored_libs ${entry})
endif()
if (APPLE)
find_library(shared_lib_${entry} lib${entry}.dylib)
set(full_path "${shared_lib_${entry}}")
if (${full_path} STREQUAL shared_lib_${entry}-NOTFOUND)
message(FATAL_ERROR "Could not find shared library lib${entry}.dylib")
endif()
else()
set(full_path ${entry})
endif()
else()
message(FATAL_ERROR "Could not find static library lib${entry}.a")
endif()
endif()
if ("${writing_now}" STREQUAL "PRIVATE")
list(APPEND private_libs ${full_path})

View file

@ -32,6 +32,7 @@ option(DESKTOP_APP_USE_PACKAGED_EXPECTED "Find expected using CMake instead of b
option(DESKTOP_APP_USE_PACKAGED_VARIANT "Find mapbox-variant using CMake instead of bundled one." ${DESKTOP_APP_USE_PACKAGED})
option(DESKTOP_APP_USE_PACKAGED_GSL "Find GSL using CMake instead of bundled one." ${DESKTOP_APP_USE_PACKAGED})
option(DESKTOP_APP_USE_PACKAGED_QRCODE "Find qr-code-generator library using CMake instead of bundled one." OFF)
option(DESKTOP_APP_USE_PACKAGED_FFMPEG_STATIC "Link found ffmpeg statically." OFF)
option(DESKTOP_APP_USE_PACKAGED_FONTS "Use preinstalled fonts instead of bundled one." ${DESKTOP_APP_USE_PACKAGED})
option(DESKTOP_APP_USE_HUNSPELL_ONLY "Disable system spellchecker and use bundled Hunspell only. (For debugging purposes)" OFF)
option(DESKTOP_APP_USE_ENCHANT "Use Enchant instead of bundled Hunspell. (Linux only)" OFF)