Warning, /graphics/krita/3rdparty/ext_ffmpeg/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 SET(PREFIX_ext_ffmpeg "${EXTPREFIX}") 0002 0003 # ======================== AUDIO =========================== 0004 0005 ExternalProject_Add( 0006 ext_libogg 0007 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0008 URL http://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.gz 0009 URL_HASH SHA256=0eb4b4b9420a0f51db142ba3f9c64b333f826532dc0f48c6410ae51f4799b664 0010 0011 PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-libogg-Fix-library-filename-on-Windows.patch 0012 0013 CMAKE_ARGS ${LIBOGG_EXTRA_CMAKE_ARGS} -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} 0014 0015 UPDATE_COMMAND "" 0016 ) 0017 0018 ExternalProject_Add( 0019 ext_libvorbis 0020 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0021 URL http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.xz 0022 URL_HASH SHA256=b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b 0023 0024 PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-libvorbis-Fix-empty-LIBRARY-tag-in-.def-files.patch 0025 0026 CMAKE_ARGS ${LIBVORBIS_EXTRA_CMAKE_ARGS} -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} 0027 0028 UPDATE_COMMAND "" 0029 0030 DEPENDS ${OGG_DEP} 0031 ) 0032 0033 ExternalProject_Add( 0034 ext_libtheora_meson 0035 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0036 URL https://wrapdb.mesonbuild.com/v2/theora_1.1.1-4/get_patch 0037 URL_HASH SHA256=210af99fbc5a1b34d0f32270c25ecfb6fae7e76c1ae9dc6971b063317c97a826 0038 0039 DOWNLOAD_NAME "theora_1.1.1-4_patch.zip" 0040 0041 BUILD_COMMAND "" 0042 CONFIGURE_COMMAND "" 0043 INSTALL_COMMAND "" 0044 UPDATE_COMMAND "" 0045 0046 SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/theora_meson" 0047 ) 0048 0049 kis_ExternalProject_Add_with_separate_builds_apple( 0050 ext_libtheora 0051 MESON 0052 0053 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0054 GIT_REPOSITORY https://gitlab.xiph.org/xiph/theora.git 0055 # gitlab-ci: Add scons build. Latest commit as of Nov 26, 2022 0056 GIT_TAG 7180717276af1ebc7da15c83162d6c5d6203aabf 0057 0058 PATCH_COMMAND ${CMAKE_COMMAND} -E echo Deploying Meson wrap 0059 COMMAND ${CMAKE_COMMAND} -E copy_directory 0060 ${CMAKE_CURRENT_BINARY_DIR}/theora_meson 0061 <SOURCE_DIR> 0062 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0010-theora-Update-to-1.2.0.patch 0063 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0011-theora-Add-Arm-support.patch 0064 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-libtheora-Fix-build-on-android-x86.patch 0065 0066 CONFIGURE_ARGS --prefix=${PREFIX_ext_ffmpeg} 0067 -Ddoc=disabled 0068 -Dspec=disabled 0069 ${EXTRA_MESON_FLAGS} 0070 0071 UPDATE_COMMAND "" 0072 0073 DEPENDS ${MESON_DEP} ${PKG_CONFIG_DEP} ${OGG_DEP} ext_png ext_libvorbis ext_libtheora_meson 0074 ) 0075 0076 0077 ExternalProject_Add( 0078 ext_flac 0079 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0080 # the official .tar.xz cannot be unpacked by CMake on macOS due to usage 0081 # of UTF-8 internationalized filenames in 0082 # test/flac-to-flac-metadata-test-files. 0083 GIT_REPOSITORY https://github.com/xiph/flac.git 0084 GIT_TAG 1.4.2 0085 0086 # Emmet: if you need metaflac, please add: 0087 # -DIconv_IS_BUILT_IN=TRUE 0088 # -DBUILD_PROGRAMS=FALSE 0089 # and add ${ICONV_DEP} to DEPENDS. 0090 # otherwise CMake's FindIconv gets confused due to libiconv having 0091 # its headers in the include path 0092 0093 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} 0094 -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} 0095 -DBUILD_SHARED_LIBS=TRUE 0096 -DBUILD_PROGRAMS=FALSE 0097 -DBUILD_EXAMPLES=FALSE 0098 -DBUILD_TESTING=FALSE 0099 -DBUILD_DOCS=FALSE 0100 -DINSTALL_MANPAGES=FALSE 0101 ${GLOBAL_PROFILE} 0102 0103 UPDATE_COMMAND "" 0104 0105 DEPENDS ${OGG_DEP} 0106 ) 0107 0108 ExternalProject_Add( 0109 ext_opus 0110 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0111 # Official tarball has a missing opus_buildtype.cmake 0112 # The Git tag is complete 0113 GIT_REPOSITORY https://gitlab.xiph.org/xiph/opus.git 0114 GIT_TAG v1.3.1 0115 0116 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} 0117 -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} 0118 -DBUILD_SHARED_LIBS=TRUE 0119 -DOPUS_STACK_PROTECTOR=OFF 0120 ${GLOBAL_PROFILE} 0121 0122 UPDATE_COMMAND "" 0123 ) 0124 0125 # ======================== VIDEO =========================== 0126 0127 kis_ExternalProject_Add_with_separate_builds_apple( 0128 ext_libopenh264 0129 MESON 0130 0131 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0132 URL https://github.com/cisco/openh264/archive/v2.3.1.tar.gz 0133 URL_HASH SHA256=453afa66dacb560bc5fd0468aabee90c483741571bca820a39a1c07f0362dc32 0134 0135 PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-libopenh264-Enable-PIC-for-the-assembler-code-on-x86.patch 0136 0137 CONFIGURE_ARGS --prefix=${PREFIX_ext_ffmpeg} 0138 -Dtests=disabled 0139 ${EXTRA_MESON_FLAGS} 0140 0141 DEPENDS ext_nasm ${MESON_DEP} ${PKG_CONFIG_DEP} 0142 ) 0143 0144 0145 ExternalProject_Add( 0146 ext_libmp3lame_meson 0147 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0148 URL https://wrapdb.mesonbuild.com/v2/lame_3.100-9/get_patch 0149 URL_HASH SHA256=bedda639a621b2046fb04110a51870d6c9640f2f4282b5d877bc452e9943c22e 0150 0151 DOWNLOAD_NAME "lame_3.100-9_patch.zip" 0152 0153 BUILD_COMMAND "" 0154 CONFIGURE_COMMAND "" 0155 INSTALL_COMMAND "" 0156 UPDATE_COMMAND "" 0157 0158 SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/lame_meson" 0159 ) 0160 0161 kis_ExternalProject_Add_with_separate_builds_apple( 0162 ext_libmp3lame 0163 MESON 0164 0165 URL https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz 0166 URL_HASH SHA256=ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e 0167 0168 PATCH_COMMAND ${CMAKE_COMMAND} -E echo Deploying Meson wrap 0169 COMMAND ${CMAKE_COMMAND} -E copy_directory 0170 ${CMAKE_CURRENT_BINARY_DIR}/lame_meson 0171 <SOURCE_DIR> 0172 COMMAND ${CMAKE_COMMAND} -E echo Deploying patches 0173 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0002-lame-Install-pkg-config-file.patch 0174 0175 CONFIGURE_ARGS --prefix=${PREFIX_ext_ffmpeg} 0176 ${EXTRA_MESON_FLAGS} 0177 0178 DEPENDS ${MESON_DEP} ${PKG_CONFIG_DEP} ext_libmp3lame_meson 0179 ) 0180 0181 if (ANDROID) 0182 ExternalProject_Add( 0183 ext_sdl2 0184 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0185 GIT_REPOSITORY https://github.com/sh-zam/SDL-android-glue.git 0186 GIT_TAG 8babf290ece99a58a5354d52775bf79063cf7cf5 0187 0188 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} 0189 -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} 0190 -DBUILD_SHARED_LIBS=TRUE -DSDL_ANDROID_AUDIO_STRIPPED=ON -DSDL_HAPTIC=OFF 0191 -DSDL_JOYSTICK=OFF -DSDL_VIDEO=OFF -DSDL_SENSOR=OFF -DSDL_MISC=OFF -DSDL_POWER=OFF 0192 -DSDL_LOCALE=OFF -DSDL_FILESYSTEM=OFF -DINSTALL_JARS_PATH=${PREFIX_ext_ffmpeg}/jar 0193 -DANDROID_SDK=${ANDROID_SDK_ROOT} -DANDROID_JAVA_PLATFORM_API=${ANDROID_SDK_COMPILE_API} 0194 ${GLOBAL_PROFILE} 0195 0196 0197 UPDATE_COMMAND "" 0198 ) 0199 else() 0200 ExternalProject_Add( 0201 ext_sdl2 0202 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0203 URL https://github.com/libsdl-org/SDL/releases/download/release-2.26.0/SDL2-2.26.0.tar.gz 0204 URL_HASH SHA256=8000d7169febce93c84b6bdf376631f8179132fd69f7015d4dadb8b9c2bdb295 0205 0206 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_ffmpeg} 0207 -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} 0208 -DBUILD_SHARED_LIBS=TRUE 0209 ${GLOBAL_PROFILE} 0210 0211 UPDATE_COMMAND "" 0212 ) 0213 endif() 0214 0215 0216 if (ANDROID AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686") 0217 set (_extra_meson_flags_orig ${EXTRA_MESON_FLAGS}) 0218 set (EXTRA_MESON_FLAGS -Dmultithread=disabled "${EXTRA_MESON_FLAGS}") 0219 endif() 0220 0221 kis_ExternalProject_Add_with_separate_builds_apple( 0222 ext_vpx 0223 MESON 0224 0225 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0226 GIT_REPOSITORY https://github.com/dimula73/libvpx.git 0227 GIT_TAG meson 0228 0229 WORKING_DIRECTORY <BINARY_DIR> 0230 0231 CONFIGURE_ARGS --prefix=${PREFIX_ext_ffmpeg} 0232 -Ddefault_library=shared 0233 -Dunit_tests=disabled 0234 -Dtools=disabled 0235 -Ddocs=disabled 0236 ${EXTRA_MESON_FLAGS} 0237 0238 UPDATE_COMMAND "" 0239 0240 DEPENDS ext_nasm ${MESON_DEP} ${PKG_CONFIG_DEP} 0241 ) 0242 0243 if (ANDROID AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686") 0244 set (EXTRA_MESON_FLAGS ${_extra_meson_flags_orig}) 0245 set(DISABLE_ASM_ON_ANDROID_x86_32 "-Dasm=disabled" "-Dinline_asm=disabled") 0246 endif() 0247 # IMPORTANT: 0248 # OpenSUSE's list of whitelisted encoders: https://build.opensuse.org/package/view_file/openSUSE:Factory/ffmpeg-5/enable_encoders 0249 # OpenSUSE's list of whitelisted decoders: https://build.opensuse.org/package/view_file/openSUSE:Factory/ffmpeg-5/enable_decoders 0250 # Above are the lists of codecs that have been approved for use by OpenSUSE's legal department. 0251 # Anything not enabled (missing or commented out) in these lists is considered unsafe and should NOT be used! 0252 # While unlikely, it's possible that these lists could change, so it's worth occasionally cross-referencing. 0253 0254 if (NOT MSVC) 0255 set(_stack_guard_flag "-Denable-ssp=enabled") 0256 endif() 0257 0258 kis_ExternalProject_Add_with_separate_builds_apple( 0259 ext_ffmpeg 0260 MESON 0261 DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR} 0262 GIT_REPOSITORY https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git 0263 GIT_TAG meson-4.4 0264 0265 # Workaround https://github.com/mesonbuild/meson/issues/11113 0266 # See https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/31 0267 PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-meson-Fix-library-detection-in-prefixed-builds.patch 0268 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-ffmpeg-Add-an-option-to-disable-UB-in-av_uninit.patch 0269 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0002-ffmpeg-Fix-crashes-in-ff_seek_frame_binary-if-built-with-la.patch 0270 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0003-ffmpeg-Add-options-for-SSP-and-CFGuard.patch 0271 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Disable-ebp_available-on-android.patch 0272 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-libavutil-Don-t-disable-PIC-on-x86_32.patch 0273 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-ffmpeg-Be-more-forceful-when-setting-PIC-on-x86_32.patch 0274 COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Copy-over-some-macros-from-libavutil-version.h.patch 0275 0276 CONFIGURE_ARGS --prefix=${PREFIX_ext_ffmpeg} 0277 --libdir=lib 0278 -Dno_uninit_ub=true 0279 ${_stack_guard_flag} 0280 -Denable-cfguard=disabled # TODO: change to 'auto' when Krita enabled cfguard internally 0281 -Dbuildtype=$<IF:$<CONFIG:Debug>,debug,debugoptimized> 0282 -Ddefault_library=shared 0283 ${DISABLE_ASM_ON_ANDROID_x86_32} 0284 -Dcli=enabled 0285 -Dtests=disabled 0286 -Dffprobe=enabled 0287 -Dffplay=disabled 0288 -Davdevice=disabled 0289 -Davcodec=enabled 0290 -Davformat=enabled 0291 -Davutil=enabled 0292 -Davresample=enabled 0293 -Dswresample=enabled 0294 -Dswscale=enabled 0295 -Dpostproc=disabled 0296 -Dsdl2=enabled 0297 -Dlibaom=enabled 0298 -Dzlib=enabled 0299 -Dimage2_demuxer=enabled 0300 -Dimage2_alias_pix_demuxer=enabled 0301 -Dimage2_brender_pix_demuxer=enabled 0302 # ===================== Container Formats 0303 -Dwebm_muxer=enabled 0304 -Dmatroska_muxer=enabled 0305 -Dogg_muxer=enabled 0306 -Dapng_muxer=enabled 0307 # ===================== Image Formats 0308 -Dlibwebp=enabled 0309 -Dpng_encoder=enabled 0310 -Dpng_decoder=enabled 0311 -Dapng_encoder=enabled 0312 -Dapng_decoder=enabled 0313 # ===================== Video Codecs 0314 -Dlibaom_av1_encoder=enabled 0315 -Dlibvpx_vp9_encoder=auto 0316 -Dlibvpx_vp8_encoder=auto 0317 -Dlibopenh264=enabled 0318 -Dlibtheora=enabled 0319 # ===================== Audio Codecs 0320 -Dflac_encoder=enabled 0321 -Daac_encoder=enabled 0322 -Dlibmp3lame=enabled 0323 -Dlibopus=enabled 0324 -Dlibvorbis=enabled 0325 ${EXTRA_MESON_FLAGS} 0326 0327 UPDATE_COMMAND "" 0328 0329 DEPENDS ${FLAC_DEP} ${OPUS_DEP} ${SDL_DEP} ${VPX_DEP} ext_libvorbis ext_libtheora ext_libopenh264 ext_libmp3lame ext_libaom ext_webp ext_png ext_jpeg ${MESON_DEP} ${PKG_CONFIG_DEP} 0330 )