104 lines
4.6 KiB
CMake
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)
|