__deps__ := YASM BZIP2 ZLIB FDKAAC LIBVPX LAME LIBOPUS ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) __deps__ += PTHREADW32 endif ifeq (1,$(FEATURE.qsv)) __deps__ += LIBMFX endif $(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,$(__deps__))) $(eval $(call import.CONTRIB.defs,FFMPEG)) FFMPEG.FETCH.url = https://download.handbrake.fr/handbrake/contrib/libav-11.3.tar.gz FFMPEG.FETCH.url += https://libav.org/releases/libav-11.3.tar.gz FFMPEG.FETCH.sha256 = 5a6f6d5529d2074a5a9665bd3e048cbaefbfd88d57f0b59604baa0ce3602967e # TODO: libav >= 11.4 #FFMPEG.FETCH.url = https://libav.org/releases/libav-11.4.tar.gz #FFMPEG.FETCH.sha256 = 5a6f6d5529d2074a5a9665bd3e048cbaefbfd88d57f0b59604baa0ce3602967e FFMPEG.CONFIGURE.deps = FFMPEG.CONFIGURE.host = FFMPEG.CONFIGURE.build = FFMPEG.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" FFMPEG.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" FFMPEG.CONFIGURE.extra = \ --enable-gpl \ --disable-doc \ --disable-bsfs \ --enable-bsf=aac_adtstoasc \ --disable-avconv \ --disable-avplay \ --disable-avprobe \ --disable-avdevice \ --disable-muxers \ --disable-network \ --disable-hwaccels \ --disable-encoders \ --enable-libmp3lame \ --enable-encoder=aac \ --enable-encoder=ac3 \ --enable-encoder=eac3 \ --enable-encoder=flac \ --enable-encoder=mpeg2video \ --enable-encoder=mpeg4 \ --enable-encoder=libmp3lame \ --enable-libopus \ --enable-encoder=libopus \ --enable-libvpx \ --enable-encoder=libvpx_vp8 \ --disable-decoder=libvpx_vp8 \ --enable-encoder=libvpx_vp9 \ --disable-decoder=libvpx_vp9 \ --enable-zlib \ --enable-bzlib \ --enable-pthreads \ --cc="$(FFMPEG.GCC.gcc)" \ --extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)" ifeq (1,$(FEATURE.fdk_aac)) FFMPEG.CONFIGURE.extra += \ --enable-nonfree \ --enable-libfdk-aac \ --enable-encoder=libfdk_aac endif FFMPEG.CONFIGURE.extra += \ --enable-muxer=matroska \ --enable-muxer=webm \ --enable-muxer=mov \ --enable-muxer=mp4 \ --enable-muxer=psp \ --enable-muxer=ipod ## check against tuple: B-SYSTEM where B is { 0 | 1 } for cross-compiling flag ifeq (0-cygwin,$(BUILD.cross)-$(BUILD.system)) FFMPEG.GCC.args.extra += -fno-common else ifeq (darwin,$(BUILD.system)) ## section for darwin-archs FFMPEG.CONFIGURE.extra += --enable-cross-compile --arch=$(BUILD.machine) --target-os=darwin else ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) FFMPEG.CONFIGURE.extra += \ --target-os=mingw32 \ --arch=$(BUILD.machine) \ --enable-cross-compile --cross-prefix=$(BUILD.cross.prefix) FFMPEG.GCC.args.extra += -fno-common ifeq (1,$(FEATURE.local_pkgconfig)) FFMPEG.CONFIGURE.extra += --pkg-config="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin/$(PKGCONFIG.exe))" else FFMPEG.CONFIGURE.extra += --pkg-config=$(PKGCONFIG.exe) endif endif ifneq (none,$(FFMPEG.GCC.g)) FFMPEG.CONFIGURE.extra += --enable-debug ifeq (max,$(FFMPEG.GCC.g)) FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DDEBUG" else FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" endif else FFMPEG.CONFIGURE.extra += --disable-debug FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" endif ifeq (none,$(FFMPEG.GCC.O)) FFMPEG.CONFIGURE.extra += --disable-optimizations endif ## not supported in release/11 branch without our patch ## ifeq (1,$(FEATURE.qsv)) ## FFMPEG.CONFIGURE.extra += --enable-qsv ## endif ## enable compile verbosity FFMPEG.BUILD.extra = V=1 ## ## llvm inline assembler (used in llvm-gcc and clang) runs out of registers ## on darwin i386 - unclear if it is a source code or llvm bug. ## ifeq (darwin-i386,$(BUILD.system)-$(BUILD.machine)) ## optimize mode hack: use clang ifneq (none,$(FFMPEG.GCC.O)) FFMPEG.GCC.gcc = clang endif ## debug mode hack: omit frame pointer ifneq (none,$(FFMPEG.GCC.g)) FFMPEG.GCC.args.extra += -fomit-frame-pointer endif endif ## For POSIX.1-2001 ifeq (solaris,$(BUILD.system)) FFMPEG.CONFIGURE.extra += --extra-libs=/usr/lib/values-xpg6.o endif ## MPC8 Doesn't compile on SPARC ifeq (solaris-sparc,$(BUILD.system)-$(BUILD.machine)) FFMPEG.CONFIGURE.extra += --disable-demuxer=mpc8 endif