Files
packages/multimedia/ffmpeg/Makefile
Ian Leonard 8bbe2c06fa ffmpeg: improve minidlna profile
Minidlna has no need to mux streams, or be able to read network streams at this point in time, so remove this support from
libffmpeg.

Synchronize the minidlna profile between libffmpeg-ucstom and libffmpeg-mini.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2014-08-12 13:03:51 -07:00

590 lines
12 KiB
Makefile

#
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
PKG_VERSION:=2.3.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://ffmpeg.org/releases/
PKG_MD5SUM:=bb02e99c39941d7f3dc56658b9324a2b
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
FFMPEG_CUSTOM_ENCODERS:= \
ac3 \
jpegls \
mpeg1video \
mpeg2video \
mpeg4 \
pcm_s16be \
pcm_s16le \
png \
vorbis \
zlib \
FFMPEG_CUSTOM_DECODERS:= \
aac \
ac3 \
alac \
amrnb \
amrwb \
ape \
atrac3 \
flac \
gif \
h264 \
jpegls \
mp2 \
mp3 \
mpeg1video \
mpeg2video \
mpeg4 \
mpegvideo \
mpc7 \
mpc8 \
pcm_s16be \
pcm_s16le \
png \
vorbis \
wavpack \
wmav1 \
wmav2 \
zlib \
FFMPEG_CUSTOM_MUXERS:= \
ac3 \
ffm \
h264 \
mp3 \
mp4 \
mpeg1video \
mpeg2video \
mpegts \
ogg \
rtp \
FFMPEG_CUSTOM_DEMUXERS:= \
aac \
ac3 \
amr \
ape \
avi \
flac \
ffm \
h264 \
matroska \
mov \
mp3 \
mpegps \
mpegts \
mpegvideo \
mpc \
mpc8 \
ogg \
rm \
rtsp \
rtp \
sdp \
v4l2 \
wav \
wv \
FFMPEG_CUSTOM_PARSERS:= \
aac \
flac \
ac3 \
h264 \
mpegaudio \
mpeg4video \
mpegvideo \
FFMPEG_CUSTOM_PROTOCOLS:= \
file http pipe rtp tcp udp
FFMPEG_MINI_DECODERS:= \
aac \
ac3 \
flac \
h264 \
jpegls \
mp3 \
mpeg1video \
mpeg2video \
mpeg4 \
mpegvideo \
png \
wmav1 \
wmav2 \
FFMPEG_MINI_DEMUXERS := \
aac \
ac3 \
avi \
flac \
h264 \
matroska \
mov \
mp3 \
mpegts \
mpegvideo \
FFMPEG_MINI_PARSERS:= \
ac3 \
flac \
h264 \
mpeg4video \
mpegaudio \
FFMPEG_MINI_PROTOCOLS := \
file \
FFMPEG_AUDIO_DECODERS:= \
aac \
aac_latm \
ac3 \
adpcm_* \
alac \
amrnb \
amrwb \
ape \
atrac3 \
flac \
mp2 \
mp3* \
mpc7 \
mpc8 \
pcm_* \
vorbis \
wavpack \
wmav1 \
wmav2 \
wmalossless \
wmapro \
zlib \
FFMPEG_AUDIO_DEMUXERS:= \
aac \
ac3 \
aiff \
amr \
ape \
avi \
flac \
ffm \
matroska \
mp3 \
mov \
mpc \
mpc8 \
mpegts \
ogg \
rm \
rtsp \
rtp \
sdp \
wav \
wv \
FFMPEG_AUDIO_PARSERS:= \
aac \
aac_latm \
flac \
ac3 \
mpegaudio \
FFMPEG_AUDIO_PROTOCOLS:= \
file http rtp tcp udp
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
$(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
include $(INCLUDE_DIR)/package.mk
define Package/ffmpeg/Default
TITLE:=FFmpeg
URL:=http://ffmpeg.mplayerhq.hu/
endef
define Package/ffmpeg/Default/description
FFmpeg is a a software package that can record, convert and stream digital
audio and video in numerous formats.
endef
define Package/ffmpeg
$(call Package/ffmpeg/Default)
SECTION:=multimedia
CATEGORY:=Multimedia
TITLE+= program
DEPENDS+= +libpthread +libffmpeg-full
VARIANT:=full
endef
define Package/ffmpeg/description
$(call Package/ffmpeg/Default/description)
.
This package contains the FFmpeg command line tool.
endef
define Package/ffprobe
$(call Package/ffmpeg/Default)
SECTION:=multimedia
CATEGORY:=Multimedia
TITLE+= CLI media identifier
DEPENDS+= +libffmpeg-full
VARIANT:=full
endef
define Package/ffprobe/description
$(call Package/ffmpeg/Default/description)
.
This package contains the FFprobe command line tool.
endef
define Package/ffserver
$(call Package/ffserver/Default)
SECTION:=multimedia
CATEGORY:=Multimedia
TITLE+= streaming server
DEPENDS+= +libpthread +libffmpeg-full
VARIANT:=full
endef
define Package/ffserver/description
$(call Package/ffmpeg/Default/description)
.
This package contains the FFmpeg streaming server.
endef
define Package/libffmpeg/Default
$(call Package/ffmpeg/Default)
SECTION:=libs
CATEGORY:=Libraries
TITLE+= libraries
DEPENDS+= +libpthread +zlib +libbz2
PROVIDES:= libffmpeg
endef
define Package/libffmpeg-custom
$(call Package/libffmpeg/Default)
TITLE+= (custom)
DEPENDS+= @DEVEL +libspeex
VARIANT:=custom
MENU:=1
endef
define Package/libffmpeg-custom/config
source "$(SOURCE)/Config.in"
endef
define Package/libffmpeg-custom/description
$(call Package/ffmpeg/Default/description)
.
This package contains customized FFmpeg shared libraries.
endef
define Package/libffmpeg-audio-dec
$(call Package/libffmpeg/Default)
TITLE+= (audio)
DEPENDS+= @DEVEL +libspeex
VARIANT:=audio-dec
endef
define Package/libffmpeg-audio-dec/description
$(call Package/ffmpeg/Default/description)
.
This package contains FFmpeg shared libraries for audio decoding
endef
define Package/libffmpeg-full
$(call Package/libffmpeg/Default)
TITLE+= (full)
DEPENDS+= @BUILD_PATENTED +alsa-lib
VARIANT:=full
endef
define Package/libffmpeg-full/description
$(call Package/ffmpeg/Default/description)
.
This package contains full-featured FFmpeg shared libraries.
endef
define Package/libffmpeg-mini
$(call Package/libffmpeg/Default)
TITLE+= (mini)
DEPENDS+= @BUILD_PATENTED
VARIANT:=mini
endef
define Package/libffmpeg-mini/description
$(call Package/ffmpeg/Default/description)
.
This package contains minimal-featured FFmpeg shared libraries.
endef
FFMPEG_CONFIGURE:= \
CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
./configure \
--enable-cross-compile \
--cross-prefix="$(TARGET_CROSS)" \
--arch="$(ARCH)" \
--target-os=linux \
--prefix="/usr" \
--pkg-config="pkg-config" \
--enable-shared \
--enable-static \
--enable-small \
--enable-pthreads \
--enable-zlib \
--disable-runtime-cpudetect \
--disable-doc \
--disable-debug \
\
--enable-gpl \
--enable-version3 \
\
--disable-altivec \
--disable-amd3dnow \
--disable-amd3dnowext \
--disable-mmx \
--disable-mmxext \
--disable-sse \
--disable-sse2 \
--disable-sse3 \
--disable-ssse3 \
--disable-sse4 \
--disable-sse42 \
--disable-avx \
--disable-xop \
--disable-fma3 \
--disable-fma4 \
--disable-avx2 \
--disable-vfp \
--disable-neon \
--disable-inline-asm \
--disable-yasm \
--disable-mipsdspr1 \
--disable-mipsdspr2 \
--disable-mipsfpu \
\
--disable-dxva2 \
--disable-vaapi \
--disable-vda \
--disable-vdpau \
--disable-outdevs
ifeq ($(BUILD_VARIANT),custom)
FFMPEG_ENABLE= \
$(foreach c, $(2), \
$(if $($(3)_$(c)),--enable-$(1)="$(c)") \
)
FFMPEG_CONFIGURE+= \
--disable-programs \
--disable-avfilter \
--disable-postproc \
--disable-swresample \
--disable-swscale \
--disable-everything \
$(call FFMPEG_ENABLE,encoder,$(FFMPEG_CUSTOM_ENCODERS),CONFIG_FFMPEG_CUSTOM_ENCODER) \
$(call FFMPEG_ENABLE,decoder,$(FFMPEG_CUSTOM_DECODERS),CONFIG_FFMPEG_CUSTOM_DECODER) \
$(call FFMPEG_ENABLE,muxer,$(FFMPEG_CUSTOM_MUXERS),CONFIG_FFMPEG_CUSTOM_MUXER) \
$(call FFMPEG_ENABLE,demuxer,$(FFMPEG_CUSTOM_DEMUXERS),CONFIG_FFMPEG_CUSTOM_DEMUXER) \
$(call FFMPEG_ENABLE,parser,$(FFMPEG_CUSTOM_PARSERS),CONFIG_FFMPEG_CUSTOM_PARSER) \
$(call FFMPEG_ENABLE,protocol,$(FFMPEG_CUSTOM_PROTOCOLS),CONFIG_FFMPEG_CUSTOM_PROTOCOL) \
ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_adpcm),y)
FFMPEG_CONFIGURE+= \
--enable-decoder=adpcm_ima_wav \
--enable-decoder=adpcm_ima_qt \
--enable-decoder=adpcm_ms \
endif
ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_speex),y)
FFMPEG_CONFIGURE+= \
--enable-libspeex --enable-decoder=libspeex \
endif
endif
ifeq ($(BUILD_VARIANT),audio-dec)
FFMPEG_ENABLE= \
$(foreach c, $(2), \
--enable-$(1)="$(c)" \
)
FFMPEG_CONFIGURE+= \
--disable-programs \
--disable-avfilter \
--disable-postproc \
--disable-swresample \
--disable-swscale \
--disable-everything \
$(call FFMPEG_ENABLE,decoder,$(FFMPEG_AUDIO_DECODERS)) \
$(call FFMPEG_ENABLE,demuxer,$(FFMPEG_AUDIO_DEMUXERS)) \
$(call FFMPEG_ENABLE,parser,$(FFMPEG_AUDIO_PARSERS)) \
$(call FFMPEG_ENABLE,protocol,$(FFMPEG_AUDIO_PROTOCOLS)) \
--enable-libspeex --enable-decoder=libspeex \
--disable-decoder=pcm_bluray,pcm_dvd \
endif
ifeq ($(BUILD_VARIANT),mini)
FFMPEG_ENABLE= \
$(foreach c, $(2), \
--enable-$(1)="$(c)" \
)
FFMPEG_CONFIGURE+= \
--disable-programs \
--disable-avdevice \
--disable-avfilter \
--disable-postproc \
--disable-swresample \
--disable-swscale \
--disable-everything \
$(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
$(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
$(call FFMPEG_ENABLE,parser,$(FFMPEG_MINI_PARSERS)) \
$(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
endif
ifneq ($(CONFIG_TARGET_x86),)
TARGET_CFLAGS += -fomit-frame-pointer
endif
define Build/Configure
( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \
all install
endef
define Build/InstallDev/custom
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avformat,avutil} $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
endef
define Build/InstallDev/full
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale} $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
endef
define Build/InstallDev/mini
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avformat,avutil} $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
endef
Build/InstallDev/audio-dec = $(Build/InstallDev/custom)
# XXX: attempt at installing "best" dev files available
ifeq ($(BUILD_VARIANT),custom)
# XXX: only install "custom" dev files if -full & -mini are not selected
ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
Build/InstallDev = $(Build/InstallDev/custom)
endif
endif
ifeq ($(BUILD_VARIANT),audio-dec)
# XXX: only install "audio-dec" dev files if -full & -mini are not selected
ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
Build/InstallDev = $(Build/InstallDev/audio-dec)
endif
endif
ifeq ($(BUILD_VARIANT),full)
# XXX: always install "full" dev files if -full is selected
Build/InstallDev = $(Build/InstallDev/full)
endif
ifeq ($(BUILD_VARIANT),mini)
# XXX: only install "mini" dev files if -full is not selected
ifeq ($(CONFIG_PACKAGE_libffmpeg-full),)
Build/InstallDev = $(Build/InstallDev/mini)
endif
endif
define Package/ffmpeg/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/
endef
define Package/ffprobe/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
endef
define Package/ffserver/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
endef
define Package/libffmpeg-custom/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
endef
define Package/libffmpeg-full/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.so.* $(1)/usr/lib/
endef
define Package/libffmpeg-mini/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.so.* $(1)/usr/lib/
endef
Package/libffmpeg-audio-dec/install = $(Package/libffmpeg-custom/install)
$(eval $(call BuildPackage,ffmpeg))
$(eval $(call BuildPackage,ffprobe))
$(eval $(call BuildPackage,ffserver))
$(eval $(call BuildPackage,libffmpeg-custom))
$(eval $(call BuildPackage,libffmpeg-full))
$(eval $(call BuildPackage,libffmpeg-mini))
$(eval $(call BuildPackage,libffmpeg-audio-dec))