vcpkg/ports/qtmultimedia/portfile.cmake

87 lines
3.8 KiB
CMake

set(SCRIPT_PATH "${CURRENT_INSTALLED_DIR}/share/qtbase")
include("${SCRIPT_PATH}/qt_install_submodule.cmake")
set(${PORT}_PATCHES
remove_unistd.patch
remove_export_macro.patch
static_find_modules.patch
fix_avfoundation_target.patch
)
#Maybe TODO: ALSA + PulseAudio? (Missing Ports) -> check ALSA since it was added
# qt_find_package(ALSA PROVIDED_TARGETS ALSA::ALSA MODULE_NAME multimedia QMAKE_LIB alsa)
# qt_find_package(AVFoundation PROVIDED_TARGETS AVFoundation::AVFoundation MODULE_NAME multimedia QMAKE_LIB avfoundation)
# qt_find_package(WrapPulseAudio PROVIDED_TARGETS WrapPulseAudio::WrapPulseAudio MODULE_NAME multimedia QMAKE_LIB pulseaudio)
# qt_find_package(WMF PROVIDED_TARGETS WMF::WMF MODULE_NAME multimedia QMAKE_LIB wmf)
# qt_configure_add_summary_section(NAME "Qt Multimedia")
# qt_configure_add_summary_entry(ARGS "alsa")
# qt_configure_add_summary_entry(ARGS "gstreamer_1_0")
# qt_configure_add_summary_entry(ARGS "linux_v4l")
# qt_configure_add_summary_entry(ARGS "pulseaudio")
# qt_configure_add_summary_entry(ARGS "mmrenderer")
# qt_configure_add_summary_entry(ARGS "avfoundation")
# qt_configure_add_summary_entry(ARGS "wmf")
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
"qml" CMAKE_REQUIRE_FIND_PACKAGE_Qt6Quick
"widgets" CMAKE_REQUIRE_FIND_PACKAGE_Qt6Widgets
INVERTED_FEATURES
"qml" CMAKE_DISABLE_FIND_PACKAGE_Qt6Quick
"widgets" CMAKE_DISABLE_FIND_PACKAGE_Qt6Widgets
"gstreamer" CMAKE_DISABLE_FIND_PACKAGE_GStreamer
"ffmpeg" CMAKE_DISABLE_FIND_PACKAGE_FFmpeg
# Features not yet added in the manifest:
"vaapi" CMAKE_DISABLE_FIND_PACKAGE_VAAPI # not in vpckg
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
if("gstreamer" IN_LIST FEATURES AND "ffmpeg" IN_LIST FEATURES)
message(FATAL_ERROR "Qt will by default autolink both plugin backends in static builds leading to symbol collisions and a build failure in dependent ports!\n
As such in static builds only one backend is allowed by default.\n If you plan to manually link the plugins feel free to remove this error in an overlay.")
endif()
endif()
if("gstreamer" IN_LIST FEATURES)
list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer='yes'")
else()
list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer='no'")
endif()
list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer_gl='no'")
list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer_photography='no'")
if(VCPKG_TARGET_IS_WINDOWS)
list(APPEND FEATURE_OPTIONS "-DFEATURE_wmf=ON")
else()
list(APPEND FEATURE_OPTIONS "-DFEATURE_wmf=OFF")
endif()
if("ffmpeg" IN_LIST FEATURES)
# Note: Requires pulsadio on linux and wmfsdk on windows
list(APPEND FEATURE_OPTIONS "-DINPUT_ffmpeg='yes'")
if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_ANDROID)
list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='no'")
else()
list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='yes'")
endif()
else()
list(APPEND FEATURE_OPTIONS "-DINPUT_ffmpeg='no'")
list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='no'")
endif()
# alsa is not ready
list(APPEND FEATURE_OPTIONS "-DFEATURE_alsa=OFF")
qt_install_submodule(PATCHES ${${PORT}_PATCHES}
CONFIGURE_OPTIONS ${FEATURE_OPTIONS}
-DCMAKE_FIND_PACKAGE_TARGETS_GLOBAL=ON
CONFIGURE_OPTIONS_RELEASE
CONFIGURE_OPTIONS_DEBUG
)
if("gstreamer" IN_LIST FEATURES AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/Qt6Multimedia/Qt6QGstreamerMediaPluginDependencies.cmake" "GStreamer\;FALSE\;\;\;;GStreamer\;FALSE\;\;App\;;GStreamer\;FALSE\;\;\;Gl" "GStreamer\;FALSE\;\;\;;GStreamer\;FALSE\;\;App\;;GStreamer\;FALSE\;\;\;Gl;EGL\;FALSE\;\;\;" )
endif()