OpenMiInk/third_party/krita-deps-management/ext_ffmpeg/CMakeLists.txt
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

104 lines
4.6 KiB
CMake

cmake_minimum_required(VERSION 3.29)
project(ext_ffmpeg)
include(${CMAKE_SOURCE_DIR}/../cmake/base-dep-options.cmake)
include(${CMAKE_SOURCE_DIR}/../cmake/krita_initialize_python.cmake)
include(${CMAKE_SOURCE_DIR}/../cmake/krita_initialize_meson.cmake)
if (ANDROID AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686")
set(DISABLE_ASM_ON_ANDROID_x86_32 "-Dasm=disabled" "-Dinline_asm=disabled")
endif()
# IMPORTANT:
# OpenSUSE's list of whitelisted encoders: https://build.opensuse.org/package/view_file/openSUSE:Factory/ffmpeg-5/enable_encoders
# OpenSUSE's list of whitelisted decoders: https://build.opensuse.org/package/view_file/openSUSE:Factory/ffmpeg-5/enable_decoders
# Above are the lists of codecs that have been approved for use by OpenSUSE's legal department.
# Anything not enabled (missing or commented out) in these lists is considered unsafe and should NOT be used!
# While unlikely, it's possible that these lists could change, so it's worth occasionally cross-referencing.
if (NOT MSVC)
set(_stack_guard_flag "-Denable-ssp=enabled")
endif()
set(FFMPEG_GIT_SHA1 1834eb471506fe3f6296aa844825ac317e51bd5b)
kis_ExternalProject_Add_with_separate_builds_apple(
ext_ffmpeg
MESON
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
GIT_REPOSITORY https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git
# we use this branch as a source:
# https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/tree/meson-8.0.1
GIT_TAG ${FFMPEG_GIT_SHA1}
PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Add-an-option-to-disable-UB-in-av_uninit.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0002-Add-options-for-SSP-and-CFGuard.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0007-Switch-deps-of-QSV-codecs-to-libvpl-instead-of-libmf.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0009-Fix-VP9-hw-accelerated-encoder-with-libvpl.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0010-Fix-version-file-generation-in-version.py.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0011-Fix-build-with-Dvaapi-disabled.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0012-Fix-makedef.py-to-generate-correct-files-on-Linux.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0013-Fix-includes-for-the-optional-avcodec-sources.patch
COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0014-Do-not-require-gzip-binary-to-build-zlib-support.patch
COMMAND ${CMAKE_COMMAND} -E echo "8.0.1-g${FFMPEG_GIT_SHA1}" > VERSION
CONFIGURE_ARGS --prefix=${EXTPREFIX}
-Dvaapi=disabled
--libdir=lib
-Dno_uninit_ub=true
${_stack_guard_flag}
-Denable-cfguard=disabled # TODO: change to 'auto' when Krita enabled cfguard internally
-Dbuildtype=$<IF:$<CONFIG:Debug>,debug,debugoptimized>
-Ddefault_library=shared
${DISABLE_ASM_ON_ANDROID_x86_32}
-Dprograms=enabled
-Dtests=disabled
-Dffmpeg=enabled
-Dffprobe=enabled
-Dffplay=disabled
-Davdevice=disabled
-Davcodec=enabled
-Davformat=enabled
-Davutil=enabled
-Dswresample=enabled
-Dswscale=enabled
-Dpostproc=disabled
-Dsdl2=enabled
-Dlibaom=enabled
-Dzlib=enabled
-Dimage2_demuxer=enabled
-Dimage2_alias_pix_demuxer=enabled
-Dimage2_brender_pix_demuxer=enabled
# ===================== Container Formats
-Dwebm_muxer=enabled
-Dmatroska_muxer=enabled
-Dogg_muxer=enabled
-Dapng_muxer=enabled
# ===================== Image Formats
-Dlibwebp=enabled
-Dpng_encoder=enabled
-Dpng_decoder=enabled
-Dapng_encoder=enabled
-Dapng_decoder=enabled
# ===================== Video Codecs
-Dlibaom_av1_encoder=enabled
-Dlibvpl=auto # Intel-specific optimizations
-Dlibvpx=enabled
-Dlibvpx_vp9_encoder=enabled
-Dlibvpx_vp8_encoder=enabled
-Dlibopenh264=enabled
-Dlibtheora=enabled
# ===================== Audio Codecs
-Dflac_encoder=enabled
-Daac_encoder=enabled
-Dlibmp3lame=enabled
-Dlibopus=enabled
-Dlibvorbis=enabled
-Dvaapi=disabled
${EXTRA_MESON_FLAGS}
UPDATE_COMMAND ""
)
krita_add_to_ci_targets(ext_ffmpeg)