diff --git a/libs/ffmpeg/ffmpeg-4.1-20190507.diff b/libs/ffmpeg/ffmpeg-4.1-20190507.diff new file mode 100644 index 00000000..e0b03fb5 --- /dev/null +++ b/libs/ffmpeg/ffmpeg-4.1-20190507.diff @@ -0,0 +1,12 @@ +diff -Nrub -x '*~' -x '*\.rej' -x '*\.orig' -x '*\.o' -x '*\.pyc' ffmpeg-4.1.orig/configure ffmpeg-4.1/configure +--- ffmpeg-4.1.orig/configure 2018-11-06 00:22:33.000000000 +0100 ++++ ffmpeg-4.1/configure 2019-05-07 16:17:26.258533600 +0200 +@@ -6098,7 +6098,7 @@ + enabled libmfx && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit || + { require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } } + enabled libmodplug && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load +-enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs ++enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -llibmp3lame $libm_extralibs + enabled libmysofa && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_load || + require libmysofa mysofa.h mysofa_load -lmysofa $zlib_extralibs; } + enabled libnpp && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc -lnppidei || diff --git a/libs/ffmpeg/ffmpeg.py b/libs/ffmpeg/ffmpeg.py index bd75fd35..78fcddf1 100644 --- a/libs/ffmpeg/ffmpeg.py +++ b/libs/ffmpeg/ffmpeg.py @@ -1,46 +1,66 @@ import info class subinfo(info.infoclass): def setTargets( self ): for ver in ["3.4.1", "4.1"]: self.targets[ ver ] = f"https://ffmpeg.org/releases/ffmpeg-{ver}.tar.bz2" self.targetInstSrc[ ver ] = f"ffmpeg-{ver}" self.svnTargets['master'] = "https://git.ffmpeg.org/ffmpeg.git" self.targetDigests["3.4.1"] = (['f3443e20154a590ab8a9eef7bc951e8731425efc75b44ff4bee31d8a7a574a2c'], CraftHash.HashAlgorithm.SHA256) self.targetDigests["4.1"] = (['b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5'], CraftHash.HashAlgorithm.SHA256) + + if CraftCore.compiler.isMSVC(): + self.patchToApply["4.1"] = [("ffmpeg-4.1-20190507.diff", 1)] + self.description = "A complete, cross-platform solution to record, convert and stream audio and video." self.webpage = "https://ffmpeg.org/" self.defaultTarget = "4.1" def setDependencies( self ): self.buildDependencies["dev-utils/msys"] = None self.buildDependencies["dev-utils/nasm"] = None self.runtimeDependencies["virtual/base"] = None self.runtimeDependencies["libs/liblame"] = None self.runtimeDependencies["libs/libopus"] = None if CraftCore.compiler.isGCCLike(): self.runtimeDependencies["libs/libsdl2"] = None self.runtimeDependencies["libs/libvorbis"] = None self.runtimeDependencies["libs/libvpx"] = None self.runtimeDependencies["libs/x264"] = None self.runtimeDependencies["libs/x265"] = None from Package.AutoToolsPackageBase import * class Package(AutoToolsPackageBase): def __init__( self, **args ): AutoToolsPackageBase.__init__( self ) self.platform = "" self.subinfo.options.configure.noDataRootDir = True + self.subinfo.options.configure.autoreconf = False - self.subinfo.options.configure.args = "--enable-shared \ - --disable-debug --disable-doc --enable-gpl --enable-version3 \ - --enable-avresample --enable-libmp3lame " + self.subinfo.options.configure.args = "--enable-shared --disable-debug --disable-doc --enable-gpl " \ + "--enable-version3 --enable-avresample --enable-libmp3lame " if CraftCore.compiler.isMSVC(): + self.subinfo.options.configure.cflags += " -FS" + self.subinfo.options.configure.cxxflags += " -FS" self.subinfo.options.configure.args += " --toolchain=msvc " else: # vorbis.pc & ogg.pc currently not generated by patch to use CMake - self.subinfo.options.configure.args += " --enable-libopus --enable-libvorbis \ - --enable-libvpx --enable-libx264 --enable-libx265 " + self.subinfo.options.configure.args += " --enable-libopus --enable-libvorbis " \ + "--enable-libvpx --enable-libx264 --enable-libx265 " + + def configure(self): + with utils.ScopedEnv(self._ffmpegEnv()): + return super().configure() + + def make(self, dummyBuildType=None): + with utils.ScopedEnv(self._ffmpegEnv()): + return super().make() + + def _ffmpegEnv(self): + if not CraftCore.compiler.isMSVC(): + return {} + return { "LIB" : f"{os.environ['LIB']};{os.path.join(CraftStandardDirs.craftRoot() , 'lib')}", + "INCLUDE" : f"{os.environ['INCLUDE']};{os.path.join(CraftStandardDirs.craftRoot() , 'include')}"}