diff --git a/libs/avahi/Makefile b/libs/avahi/Makefile new file mode 100644 index 0000000000..f2d882d32c --- /dev/null +++ b/libs/avahi/Makefile @@ -0,0 +1,313 @@ +# +# Copyright (C) 2007-2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +ifeq ($(BUILD_VARIANT),dbus) +PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)/dbus/$(PKG_NAME)-$(PKG_VERSION) +PKG_ALT_DIR=$(BUILD_DIR)/$(PKG_NAME)/nodbus/$(PKG_NAME)-$(PKG_VERSION) +else +PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)/nodbus/$(PKG_NAME)-$(PKG_VERSION) +PKG_ALT_DIR=$(BUILD_DIR)/$(PKG_NAME)/dbus/$(PKG_NAME)-$(PKG_VERSION) +endif + + +PKG_NAME:=avahi +PKG_VERSION:=0.6.31 +PKG_RELEASE:=6 + + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://avahi.org/download/ +PKG_MD5SUM:=2f22745b8f7368ad5a0a3fddac343f2d +PKG_MAINTAINER:=Ted Hess + +PKG_BUILD_DEPENDS:=libexpat libdaemon libgdbm intltool/host libpthread dbus + +PKG_FIXUP:=autoreconf +PKG_REMOVE_FILES:=autogen.sh + +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 + + + +include $(INCLUDE_DIR)/package.mk + +define Package/avahi/Default + SECTION:=net + CATEGORY:=Network + TITLE:=An mDNS/DNS-SD implementation + URL:=http://www.avahi.org/ +endef + +define Package/avahi/Default/description + Avahi is an mDNS/DNS-SD (aka RendezVous/Bonjour/ZeroConf) + implementation (library). It facilitates + service discovery on a local network -- this means that + you can plug your laptop or computer into a network and + instantly be able to view other people who you can chat with, + find printers to print to or find files being shared. + This kind of technology is already found in MacOS X + (branded 'Rendezvous', 'Bonjour' and sometimes 'ZeroConf') + and is very convenient. +endef + +define Package/libavahi + $(call Package/avahi/Default) + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+libpthread +SSP_SUPPORT:libssp + TITLE+= (library) +endef + +define Package/libavahi/description +$(call Package/avahi/Default/description) + . + The libavahi package contains the mDNS/DNS-SD shared libraries, + used by other programs. Specifically, it provides + libavahi-core and libavahi-common libraries. + By default, it is built without D-Bus support, + i.e. the --disable-dbus configuration flag is set. + To enable D-Bus support, select the package + libavahi-dbus-support. +endef + +define Package/avahi-autoipd + $(call Package/avahi/Default) + SUBMENU:=IP Addresses and Names + DEPENDS:=+libdaemon + TITLE:=IPv4LL network address configuration daemon +endef + +define Package/avahi-autoipd/description +$(call Package/avahi/Default/description) + . + This package implements IPv4LL, "Dynamic Configuration of IPv4 Link-Local + Addresses" (IETF RFC3927), a protocol for automatic IP address configuration + from the link-local 169.254.0.0/16 range without the need for a central + server. It is primarily intended to be used in ad-hoc networks which lack a + DHCP server. +endef + +define Package/avahi-daemon + $(call Package/avahi/Default) + SUBMENU:=IP Addresses and Names + ifeq ($(BUILD_VARIANT),dbus) + DEPENDS:=+libavahi +libexpat +librt +libdaemon +libdbus + else + DEPENDS:=+libavahi +libexpat +librt +libdaemon + endif + TITLE+= (daemon) +endef + +define Package/avahi-daemon/description +$(call Package/avahi/Default/description) + . + This package contains an mDNS/DNS-SD daemon. +endef + +define Package/avahi-daemon/conffiles +/etc/avahi/avahi-daemon.conf +/etc/avahi/services/http.service +/etc/avahi/services/ssh.service +endef + +define Package/avahi-dnsconfd + $(call Package/avahi/Default) + SUBMENU:=IP Addresses and Names + DEPENDS:=+libavahi +libdaemon + TITLE:=A Unicast DNS server from mDNS/DNS-SD configuration daemon +endef + +define Package/avahi-dnsconfd/description +$(call Package/avahi/Default/description) + . + This package contains a Unicast DNS server from mDNS/DNS-SD configuration + daemon, which may be used to configure conventional DNS servers using mDNS + in a DHCP-like fashion. Especially useful on IPv6. +endef + +define Package/libavahi-dbus-support + $(call Package/avahi/Default) + SECTION:=libs + CATEGORY:=Libraries + VARIANT:=dbus + DEPENDS:=+dbus +libavahi + TITLE+= (D-Bus support) +endef + +define Package/libavahi-dbus-support/description +$(call Package/libavahi/description) + . + The libavahi-dbus-support package enables + D-Bus support in avahi, needed to support + the libavahi-client library and avahi-utils. + Selecting this package modifies the build configuration + so that avahi packages are built with support for D-BUS enabled; + it does not generate a separate binary of its own. + It also automatically adds the D-Bus package to the build. + libavahi-dbus-support is selected automatically if you select + libavahi-client or avahi-utils. +endef + +define Package/libavahi-client + $(call Package/avahi/Default) + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+libavahi-dbus-support +avahi-daemon + TITLE+= (libavahi-client library) +endef + +define Package/libavahi-client/description +$(call Package/avahi/Default/description) + . + This packages adds the libavahi-client library. + It also automatically adds the required + libavahi-dbus-support and the avahi-daemon packages. + For more information please see the avahi documentation. +endef + +define Package/avahi-utils + $(call Package/avahi/Default) + SUBMENU:=IP Addresses and Names + DEPENDS:=+libavahi-client +libgdbm + TITLE+= (utilities) +endef + +define Package/avahi-utils/description +$(call Package/avahi/Default/description) + . + This packages installs the following avahi utility programs: + avahi-browse, avahi-publish, avahi-resolve, avahi-set-host-name. + It also automatically adds the required libavahi-client package. + For more information please see the avahi documentation. +endef + +TARGET_CFLAGS += $(FPIC) -DGETTEXT_PACKAGE + +CONFIGURE_ARGS+= \ + --enable-shared \ + --enable-static \ + --disable-glib \ + --disable-gobject \ + --disable-qt3 \ + --disable-qt4 \ + --disable-gtk \ + --disable-gtk3 \ + --with-xml=expat \ + --disable-dbm \ + --enable-gdbm \ + --enable-libdaemon \ + --disable-python \ + --disable-pygtk \ + --disable-python-dbus \ + --disable-mono \ + --disable-monodoc \ + --disable-doxygen-doc \ + --disable-doxygen-dot \ + --disable-doxygen-man \ + --disable-doxygen-rtf \ + --disable-doxygen-xml \ + --disable-doxygen-chm \ + --disable-doxygen-chi \ + --disable-doxygen-html \ + --disable-doxygen-ps \ + --disable-doxygen-pdf \ + --disable-xmltoman \ + --with-distro=none \ + --with-avahi-user=nobody \ + --with-avahi-group=nogroup \ + --with-autoipd-user=nobody \ + --with-autoipd-group=nogroup + +ifneq ($(CONFIG_SSP_SUPPORT),y) +CONFIGURE_ARGS+= \ + --disable-stack-protector +endif + +ifeq ($(BUILD_VARIANT),dbus) +CONFIGURE_ARGS += \ + --enable-dbus +else +CONFIGURE_ARGS += \ + --disable-dbus +endif + +CONFIGURE_VARS+= \ + CFLAGS="$$$$CFLAGS -DNDEBUG -DDISABLE_SYSTEMD" \ + ac_cv_header_sys_capability_h=no \ + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-* $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/ +endef + +define Package/libavahi-dbus-support/install + $(INSTALL_DIR) $(1)/etc/dbus-1/system.d + $(CP) $(PKG_INSTALL_DIR)/etc/dbus-1/system.d/* $(1)/etc/dbus-1/system.d +endef + +define Package/libavahi/install + # The next line removes the ".build" file from the "other" build. + # The effect is that, if the other build is re-selected in the future, + # the build system will be forced to replace all the code in the + # installer packages, removing anything from the current build. + # "Other" means this: if the current build is "dbus", the other is "nodebus", + # and if the current build is "nodbus", the other is "dbus". + $(RM) -f $(PKG_ALT_DIR)/.built + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-{common,core}.so.* $(1)/usr/lib/ +endef + +define Package/libavahi-client/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-client.so.* $(1)/usr/lib/ +endef + +define Package/avahi-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ +endef + +define Package/avahi-autoipd/install + $(INSTALL_DIR) $(1)/etc/avahi + $(CP) $(PKG_INSTALL_DIR)/etc/avahi/avahi-autoipd.action $(1)/etc/avahi/ + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-autoipd $(1)/usr/sbin/ +endef + +define Package/avahi-daemon/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-daemon $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/avahi + $(INSTALL_DATA) ./files/avahi-daemon.conf $(1)/etc/avahi/ + $(INSTALL_DIR) $(1)/etc/avahi/services + $(INSTALL_DATA) ./files/service-http $(1)/etc/avahi/services/http.service + $(INSTALL_DATA) ./files/service-ssh $(1)/etc/avahi/services/ssh.service + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/avahi-daemon.init $(1)/etc/init.d/avahi-daemon +endef + +define Package/avahi-dnsconfd/install + $(INSTALL_DIR) $(1)/etc/avahi + $(CP) $(PKG_INSTALL_DIR)/etc/avahi/avahi-dnsconfd.action $(1)/etc/avahi/ + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/avahi-dnsconfd $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,libavahi-client)) +$(eval $(call BuildPackage,avahi-utils)) +$(eval $(call BuildPackage,libavahi-dbus-support)) +$(eval $(call BuildPackage,libavahi)) +$(eval $(call BuildPackage,avahi-autoipd)) +$(eval $(call BuildPackage,avahi-daemon)) +$(eval $(call BuildPackage,avahi-dnsconfd)) diff --git a/libs/avahi/files/avahi-daemon.conf b/libs/avahi/files/avahi-daemon.conf new file mode 100644 index 0000000000..4ef64df2a8 --- /dev/null +++ b/libs/avahi/files/avahi-daemon.conf @@ -0,0 +1,28 @@ +[server] +#host-name=foo +#domain-name=local +use-ipv4=yes +use-ipv6=no +check-response-ttl=no +use-iff-running=no + +[publish] +publish-addresses=yes +publish-hinfo=yes +publish-workstation=no +publish-domain=yes +#publish-dns-servers=192.168.1.1 +#publish-resolv-conf-dns-servers=yes + +[reflector] +enable-reflector=no +reflect-ipv=no + +[rlimits] +#rlimit-as= +rlimit-core=0 +rlimit-data=4194304 +rlimit-fsize=0 +rlimit-nofile=30 +rlimit-stack=4194304 +rlimit-nproc=3 diff --git a/libs/avahi/files/avahi-daemon.init b/libs/avahi/files/avahi-daemon.init new file mode 100644 index 0000000000..b2ae4580e9 --- /dev/null +++ b/libs/avahi/files/avahi-daemon.init @@ -0,0 +1,23 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006 OpenWrt.org +START=61 + +BIN=avahi-daemon +DEFAULT=/etc/default/$BIN +OPTIONS="-D" +RUN_D=/var/run/$BIN + +start() { + [ -f $DEFAULT ] && . $DEFAULT + mkdir -p $RUN_D + $BIN $OPTIONS +} + +stop() { + $BIN -k +} + +reload() { + $BIN -r +} + diff --git a/libs/avahi/files/service-http b/libs/avahi/files/service-http new file mode 100644 index 0000000000..7e9be2d424 --- /dev/null +++ b/libs/avahi/files/service-http @@ -0,0 +1,10 @@ + + + + Web Server on %h + + _http._tcp + 80 + path=/ + + diff --git a/libs/avahi/files/service-ssh b/libs/avahi/files/service-ssh new file mode 100644 index 0000000000..b415803784 --- /dev/null +++ b/libs/avahi/files/service-ssh @@ -0,0 +1,9 @@ + + + + Secure Shell on %h + + _ssh._tcp + 22 + + diff --git a/libs/avahi/patches/010-step_back_autotools-no-gettext.patch b/libs/avahi/patches/010-step_back_autotools-no-gettext.patch new file mode 100644 index 0000000000..fab87aaef5 --- /dev/null +++ b/libs/avahi/patches/010-step_back_autotools-no-gettext.patch @@ -0,0 +1,80 @@ +--- a/Makefile.am ++++ b/Makefile.am +@@ -75,8 +75,7 @@ SUBDIRS = \ + avahi-compat-howl \ + avahi-autoipd \ + avahi-ui \ +- avahi-ui-sharp \ +- po ++ avahi-ui-sharp + + DX_INPUT = \ + $(srcdir)/avahi-common/address.h \ +--- a/avahi-python/avahi-discover/Makefile.am ++++ b/avahi-python/avahi-discover/Makefile.am +@@ -38,7 +38,6 @@ if HAVE_GDBM + pythonscripts += \ + avahi-discover + desktop_DATA += avahi-discover.desktop +-@INTLTOOL_DESKTOP_RULE@ + avahi_discover_PYTHON += __init__.py + endif + +@@ -46,7 +45,6 @@ if HAVE_DBM + pythonscripts += \ + avahi-discover + desktop_DATA += avahi-discover.desktop +-@INTLTOOL_DESKTOP_RULE@ + avahi_discover_PYTHON += __init__.py + endif + +--- a/avahi-ui/Makefile.am ++++ b/avahi-ui/Makefile.am +@@ -78,7 +78,6 @@ endif + + bin_PROGRAMS = bssh + desktop_DATA += bssh.desktop bvnc.desktop +-@INTLTOOL_DESKTOP_RULE@ + + bssh_SOURCES = bssh.c + +@@ -106,6 +105,4 @@ endif # HAVE_GLIB + endif + endif + +-@INTLTOOL_DESKTOP_RULE@ +- + CLEANFILES = $(desktop_DATA) $(desktop_DATA_in) +--- a/configure.ac ++++ b/configure.ac +@@ -23,7 +23,7 @@ AC_INIT([avahi],[0.6.29],[avahi (at) lis + AC_CONFIG_SRCDIR([avahi-core/server.c]) + AC_CONFIG_MACRO_DIR([common]) + AC_CONFIG_HEADERS([config.h]) +-AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax]) ++AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability tar-pax]) + + AC_SUBST(PACKAGE_URL, [http://avahi.org/]) + +@@ -43,8 +43,6 @@ AC_SUBST(HOWL_COMPAT_VERSION, [0.9.8]) + + AC_CANONICAL_HOST + +-AM_SILENT_RULES([yes]) +- + AC_CHECK_PROG([STOW], [stow], [yes], [no]) + + AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [ +@@ -412,12 +410,6 @@ if test "x$have_kqueue" = "xyes" ; then + AC_DEFINE([HAVE_KQUEUE], 1, [Enable BSD kqueue() usage]) + fi + +-IT_PROG_INTLTOOL([0.35.0]) +-GETTEXT_PACKAGE=avahi +-AC_SUBST([GETTEXT_PACKAGE]) +-AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) +-AM_GLIB_GNU_GETTEXT +- + avahilocaledir='${prefix}/${DATADIRNAME}/locale' + AC_SUBST(avahilocaledir) + diff --git a/libs/faad2/Config.in b/libs/faad2/Config.in new file mode 100644 index 0000000000..00336766f9 --- /dev/null +++ b/libs/faad2/Config.in @@ -0,0 +1,12 @@ +config FAAD2_ALWAYS_USE_FLOATING_POINT + depends on PACKAGE_libfaad2 + bool "Build FAAD2 to use floating-point math even if using soft floats." + default n + help + By default, libfaad2 will be built to use fixed point rather + than floating point math if emulated floating point operations + are being used. (See the CONFIG_SOFT_FLOAT option.) Set this + option if you would like to use floating point math regardless + of whether floating point emulation is in use. + + For the best real-time decoding ability, leave this option off. diff --git a/libs/faad2/Makefile b/libs/faad2/Makefile new file mode 100644 index 0000000000..0d1310b11b --- /dev/null +++ b/libs/faad2/Makefile @@ -0,0 +1,114 @@ +# +# Copyright (C) 2008-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:=faad2 +PKG_VERSION:=2.7 +PKG_RELEASE:=3 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@SF/faac +PKG_MD5SUM:=4c332fa23febc0e4648064685a3d4332 +PKG_MAINTAINER:=Ted Hess + +PKG_CONFIG_DEPENDS := \ + CONFIG_SOFT_FLOAT \ + CONFIG_FAAD2_ALWAYS_USE_FLOATING_POINT + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +TARGET_CFLAGS += $(FPIC) + +# Use fixed point math, if we're using soft floats, and the user didn't +# specifically ask to use floats anyways. +ifeq ($(CONFIG_SOFT_FLOAT)-$(CONFIG_FAAD2_ALWAYS_USE_FLOATING_POINT),y-) +TARGET_CFLAGS+= -DFIXED_POINT +FAAD2_CONFIG_OPTS= --without-fp -nfp +endif + +define Package/faad2/Default + URL:=http://www.audiocoding.com/faad2.html + TITLE:=Freeware Advanced Audio Decoder +endef + +define Package/faad2/Default/description + FAAD2 is the fastest ISO AAC audio decoder available. + FAAD2 correctly decodes all MPEG-4 and MPEG-2 MAIN, + LOW, LTP, LD and ER object type AAC files. +endef + +define Package/faad2 +$(call Package/faad2/Default) + SECTION:=sound + CATEGORY:=Sound + TITLE+=player + DEPENDS:=+libfaad2 +endef + +define Package/faad2/description +$(call Package/faad2/Default/description) + This package contains a binary to play AAC or MP4 files. +endef + +define Package/libfaad2 +$(call Package/faad2/Default) + SECTION:=libs + CATEGORY:=Libraries + TITLE+=library + DEPENDS:=@BUILD_PATENTED + MENU:=1 +endef + +define Package/libfaad2/config + source "$(SOURCE)/Config.in" +endef + +define Package/libfaad2/description +$(call Package/faad2/Default/description) + This package contains the library. +endef + +define Build/Configure + # This replacement were do according to many comments on the web because of gcc 3.4.5 version (.6 included).- + # wich doesn't recognices the -iquote parameter to AM_CFLAGS + ($(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.am; \ + $(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.in); + (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \ + autoreconf -vif \ + ); + $(call Build/Configure/Default, \ + --with-mp4v2 \ + $(FAAD2_CONFIG_OPTS) \ + --without-xmms \ + , \ + FAAD2_CPPFLAGS="-fno-builtin-cos -fno-builtin-sin -fno-builtin-log" \ + ) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfaad.{a,so*} $(1)/usr/lib/ +endef + +define Package/faad2/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/faad $(1)/usr/bin/ +endef + +define Package/libfaad2/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfaad.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,faad2)) +$(eval $(call BuildPackage,libfaad2)) diff --git a/libs/flac/Makefile b/libs/flac/Makefile new file mode 100644 index 0000000000..1a9574277f --- /dev/null +++ b/libs/flac/Makefile @@ -0,0 +1,77 @@ +# +# 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:=flac +PKG_VERSION:=1.2.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/flac +PKG_MD5SUM:= +PKG_MAINTAINER:=Ted Hess + +PKG_INSTALL:=1 + +PKG_LICENSE:=GFDLv1.2 GPLv2 LGPLv2.1 BSD-3c +PKG_LICENSE_FILES:=README COPYING.FDL COPYING.GPL COPYING.LGPL COPYING.Xiph + +PKG_FIXUP:=autoreconf +PKG_REMOVE_FILES:=autogen.sh aclocal.m4 + +include $(INCLUDE_DIR)/package.mk + +define Package/libflac + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Free Lossless Audio Codec library + URL:=http://flac.sourceforge.net/ +endef + +define Build/Configure + $(call Build/Configure/Default, \ + --disable-cpplibs \ + --disable-sse \ + --disable-3dnow \ + --disable-altivec \ + --disable-doxgen-docs \ + --disable-local-xmms-plugin \ + --disable-xmms-plugin \ + --disable-ogg \ + --disable-oggtest \ + --disable-debug \ + ) +endef + +TARGET_CFLAGS += $(FPIC) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/FLAC \ + $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libFLAC.{a,so*,la} \ + $(1)/usr/lib/ + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \ + $(1)/usr/lib/pkgconfig/ + + $(INSTALL_DIR) $(1)/usr/share/aclocal/ + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/share/aclocal/* \ + $(1)/usr/share/aclocal/ +endef + +define Package/libflac/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libFLAC.so* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libflac)) diff --git a/libs/flac/patches/001-no-docs-and-examples.patch b/libs/flac/patches/001-no-docs-and-examples.patch new file mode 100644 index 0000000000..cd4e821a49 --- /dev/null +++ b/libs/flac/patches/001-no-docs-and-examples.patch @@ -0,0 +1,73 @@ +--- a/Makefile.am ++++ b/Makefile.am +@@ -30,7 +30,7 @@ + + AUTOMAKE_OPTIONS = foreign 1.7 + +-SUBDIRS = doc include m4 man src examples test build obj ++SUBDIRS = include m4 src build obj + + DISTCLEANFILES = libtool-disable-static + +--- a/Makefile.in ++++ b/Makefile.in +@@ -234,7 +234,7 @@ target_alias = @target_alias@ + + AUTOMAKE_OPTIONS = foreign 1.7 + +-SUBDIRS = doc include m4 man src examples test build obj ++SUBDIRS = include m4 src build obj + + DISTCLEANFILES = libtool-disable-static + +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -30,12 +30,6 @@ SUBDIRS = \ + metaflac \ + monkeys_audio_utilities \ + $(XMMS_DIRS) \ +- plugin_winamp2 \ +- test_grabbag \ +- test_libs_common \ +- test_libFLAC \ +- test_seeking \ +- test_streams \ + $(CPPLIBS_DIRS) + + EXTRA_DIST = \ +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -221,7 +221,7 @@ target_alias = @target_alias@ + + @FLaC__HAS_XMMS_TRUE@XMMS_DIRS = plugin_common plugin_xmms + +-@FLaC__WITH_CPPLIBS_TRUE@CPPLIBS_DIRS = libFLAC++ test_libFLAC++ ++@FLaC__WITH_CPPLIBS_TRUE@CPPLIBS_DIRS = libFLAC++ + + SUBDIRS = \ + libFLAC \ +@@ -230,12 +230,6 @@ SUBDIRS = \ + metaflac \ + monkeys_audio_utilities \ + $(XMMS_DIRS) \ +- plugin_winamp2 \ +- test_grabbag \ +- test_libs_common \ +- test_libFLAC \ +- test_seeking \ +- test_streams \ + $(CPPLIBS_DIRS) + + +@@ -256,9 +250,8 @@ RECURSIVE_TARGETS = info-recursive dvi-r + check-recursive installcheck-recursive + DIST_COMMON = $(srcdir)/Makefile.in Makefile.am + DIST_SUBDIRS = libFLAC share flac metaflac monkeys_audio_utilities \ +- plugin_common plugin_xmms plugin_winamp2 test_grabbag \ +- test_libs_common test_libFLAC test_seeking test_streams \ +- libFLAC++ test_libFLAC++ ++ plugin_common plugin_xmms plugin_winamp2 \ ++ libFLAC++ + all: all-recursive + + .SUFFIXES: diff --git a/libs/flac/patches/002-no-utility.patch b/libs/flac/patches/002-no-utility.patch new file mode 100644 index 0000000000..e6fe1b3ed4 --- /dev/null +++ b/libs/flac/patches/002-no-utility.patch @@ -0,0 +1,24 @@ +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -26,9 +26,6 @@ endif + SUBDIRS = \ + libFLAC \ + share \ +- flac \ +- metaflac \ +- monkeys_audio_utilities \ + $(XMMS_DIRS) \ + $(CPPLIBS_DIRS) + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -226,9 +226,6 @@ target_alias = @target_alias@ + SUBDIRS = \ + libFLAC \ + share \ +- flac \ +- metaflac \ +- monkeys_audio_utilities \ + $(XMMS_DIRS) \ + $(CPPLIBS_DIRS) + diff --git a/libs/flac/patches/010-automake-compat.patch b/libs/flac/patches/010-automake-compat.patch new file mode 100644 index 0000000000..f8b154679b --- /dev/null +++ b/libs/flac/patches/010-automake-compat.patch @@ -0,0 +1,11 @@ +--- a/Makefile.am ++++ b/Makefile.am +@@ -34,6 +34,8 @@ SUBDIRS = include m4 src build obj + + DISTCLEANFILES = libtool-disable-static + ++ACLOCAL_AMFLAGS = -I m4 ++ + EXTRA_DIST = \ + COPYING.FDL \ + COPYING.GPL \ diff --git a/libs/flac/patches/020-libFLAC-remove-altivec-options.patch b/libs/flac/patches/020-libFLAC-remove-altivec-options.patch new file mode 100644 index 0000000000..bc986724c9 --- /dev/null +++ b/libs/flac/patches/020-libFLAC-remove-altivec-options.patch @@ -0,0 +1,62 @@ +--- a/src/libFLAC/Makefile.in ++++ b/src/libFLAC/Makefile.in +@@ -66,6 +66,7 @@ NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : + host_triplet = @host@ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@@FLaC__USE_ALTIVEC_TRUE@am__append_1 = -maltivec -mabi=altivec + ACLOCAL = @ACLOCAL@ + ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ + AMDEP_FALSE = @AMDEP_FALSE@ +@@ -234,13 +235,21 @@ target_alias = @target_alias@ + + lib_LTLIBRARIES = libFLAC.la + @DEBUG_TRUE@DEBUGCFLAGS = -DFLAC__OVERFLOW_DETECT ++# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific ++#@@@ PPC optimizations temporarily disabled ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@CPUCFLAGS = \ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@ $(am__append_1) \ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@ -DFLAC__NO_ASM ++ ++# FIXME: The following logic should be part of configure, not of Makefile.am ++ + # The -force_cpusubtype_ALL is needed to insert a ppc64 instruction + # into cpu.c with an asm(). + #@@@ PPC optimizations temporarily disabled +-@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@CPUCFLAGS = -faltivec -force_cpusubtype_ALL -DFLAC__NO_ASM +-# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific +-#@@@ PPC optimizations temporarily disabled +-@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@CPUCFLAGS = -faltivec \ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@ -force_cpusubtype_ALL \ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@ -DFLAC__NO_ASM \ ++@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@ $(am__append_1) + + AM_CFLAGS = $(DEBUGCFLAGS) $(CPUCFLAGS) @OGG_CFLAGS@ + @FLaC__CPU_PPC_TRUE@@FLaC__NO_ASM_FALSE@ARCH_SUBDIRS = ppc +--- a/src/libFLAC/Makefile.am ++++ b/src/libFLAC/Makefile.am +@@ -32,6 +32,9 @@ lib_LTLIBRARIES = libFLAC.la + if DEBUG + DEBUGCFLAGS = -DFLAC__OVERFLOW_DETECT + endif ++ ++# FIXME: The following logic should be part of configure, not of Makefile.am ++ + if FLaC__CPU_PPC + # The -force_cpusubtype_ALL is needed to insert a ppc64 instruction + # into cpu.c with an asm(). +@@ -40,8 +43,12 @@ if FLaC__SYS_DARWIN + CPUCFLAGS = -faltivec -force_cpusubtype_ALL -DFLAC__NO_ASM + else + # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific ++CPUCFLAGS = ++if FLaC__USE_ALTIVEC ++CPUCFLAGS += -maltivec -mabi=altivec ++endif + #@@@ PPC optimizations temporarily disabled +-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM ++CPUCFLAGS += -DFLAC__NO_ASM + endif + endif + diff --git a/libs/intltool/Makefile b/libs/intltool/Makefile new file mode 100644 index 0000000000..7c24469e4c --- /dev/null +++ b/libs/intltool/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2009-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:=intltool +PKG_LIBVER:=0.40 +PKG_VERSION:=$(PKG_LIBVER).6 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@GNOME/intltool/$(PKG_LIBVER) +PKG_MD5SUM:=69bc0353323112f42ad4f9cf351bc3e5 +PKG_MAINTAINER:=Ted Hess + +PKG_HOST_ONLY:=1 + +include $(INCLUDE_DIR)/host-build.mk +include $(INCLUDE_DIR)/package.mk + +define Package/intltool + SECTION:=libs + CATEGORY:=Libraries + TITLE:=set of tools to centralize translation using GNU gettext + URL:=http://www.freedesktop.org/wiki/Software/intltool + BUILDONLY:=1 +endef + +define Package/intltool/description + intltool is a set of tools to centralize translation of many different + file formats using GNU gettext-compatible PO files. +endef + +define Require/perl-xml-parser + perl -e 'use XML::Parser;' +endef + +$(eval $(call Require,perl-xml-parser, \ + Please install Perl XML::Parser \ +)) + +$(eval $(call BuildPackage,intltool)) +$(eval $(call HostBuild)) diff --git a/libs/libaudiofile/Makefile b/libs/libaudiofile/Makefile new file mode 100644 index 0000000000..7be5879f37 --- /dev/null +++ b/libs/libaudiofile/Makefile @@ -0,0 +1,71 @@ +# +# 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:=audiofile +PKG_VERSION:=0.3.6 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:= \ + http://github.com/downloads/mpruett/audiofile/ \ + http://www.68k.org/~michael/audiofile/ +PKG_MD5SUM:=2731d79bec0acef3d30d2fc86b0b72fd +PKG_MAINTAINER:=Ted Hess + +PKG_FIXUP:=autoreconf +PKG_INSTALL=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libaudiofile + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Audio File library + URL:=http://www.68k.org/~michael/audiofile/ + DEPENDS:=+libflac +libstdcpp +endef + +define Package/libaudiofile/description + The audiofile library allows the processing of audio data to and from audio + files of many common formats (currently AIFF, AIFF-C, WAVE, NeXT/Sun, BICS, + FLAC, ALAC, and raw data). +endef + +CONFIGURE_ARGS+= \ + --enable-shared \ + --enable-static \ + --with-build-cc="$(HOSTCC)" \ + +TARGET_CFLAGS+= $(FPIC) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/{af_vfs,audiofile,aupvlist}.h \ + $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libaudiofile.{la,a,so*} \ + $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/audiofile.pc \ + $(1)/usr/lib/pkgconfig/ +endef + +define Package/libaudiofile/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libaudiofile.so.* \ + $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libaudiofile)) diff --git a/libs/libdaemon/Makefile b/libs/libdaemon/Makefile new file mode 100644 index 0000000000..41a8abac84 --- /dev/null +++ b/libs/libdaemon/Makefile @@ -0,0 +1,71 @@ +# +# 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:=libdaemon +PKG_VERSION:=0.14 +PKG_RELEASE:=4 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://0pointer.de/lennart/projects/libdaemon/ +PKG_MD5SUM:=509dc27107c21bcd9fbf2f95f5669563 +PKG_MAINTAINER:=Ted Hess + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libdaemon + SECTION:=libs + CATEGORY:=Libraries + TITLE:=A lightweight C library that eases the writing of UNIX daemons + URL:=http://0pointer.de/lennart/projects/libdaemon/ +endef + +define Package/libdaemon/description + libdaemon is a lightweight C library that eases the writing of UNIX daemons. + It consists of the following parts: + - A wrapper around fork() which does the correct daemonization procedure of a process + - A wrapper around syslog() for simpler and compatible log output to Syslog or STDERR + - An API for writing PID files + - An API for serializing UNIX signals into a pipe for usage with select() or poll() + - An API for running subprocesses with STDOUT and STDERR redirected to syslog + + APIs like these are used in most daemon software available. It is not that + simple to get it done right and code duplication is not a goal. +endef + +define Build/Configure + $(call Build/Configure/Default, \ + --enable-shared \ + --enable-static \ + --disable-lynx \ + , \ + ac_cv_func_setpgrp_void=yes \ + ) +endef + +TARGET_CFLAGS += $(FPIC) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/libdaemon $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.a $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.so* $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libdaemon.pc $(1)/usr/lib/pkgconfig/ +endef + +define Package/libdaemon/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdaemon.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libdaemon)) diff --git a/libs/libdaemon/patches/001-daemon_set_verbosity.patch b/libs/libdaemon/patches/001-daemon_set_verbosity.patch new file mode 100644 index 0000000000..d0c66c7a26 --- /dev/null +++ b/libs/libdaemon/patches/001-daemon_set_verbosity.patch @@ -0,0 +1,30 @@ +From 013963ba35e8fe8897211c0acf5ee98f9a871fc1 Mon Sep 17 00:00:00 2001 +From: Michael Heimpold +Date: Fri, 10 Jan 2014 19:38:51 +0100 +Subject: [PATCH] daemon_set_verbosity: fix erroneous error message + +When calling this function with a value other than LOG_DEBUG +the error message was triggered erroneously. + +Signed-off-by: Michael Heimpold +--- + + libdaemon/dlog.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libdaemon/dlog.c b/libdaemon/dlog.c +index 1cc0566..cc2b918 100644 +--- a/libdaemon/dlog.c ++++ b/libdaemon/dlog.c +@@ -42,7 +42,7 @@ static int daemon_verbosity_level = LOG_INFO; + void daemon_set_verbosity(int verbosity_prio) { + + /* Allow using negative verbosity levels to hide _all_ messages */ +- if (verbosity_prio > 0 && (verbosity_prio & LOG_PRIMASK) != LOG_PRIMASK) ++ if (verbosity_prio > 0 && (verbosity_prio & LOG_PRIMASK) != verbosity_prio) + daemon_log(LOG_ERR, "The value %d is not a valid priority value", verbosity_prio); + + daemon_verbosity_level = verbosity_prio & LOG_PRIMASK; +-- +1.7.10.4 + diff --git a/libs/libid3tag/Makefile b/libs/libid3tag/Makefile new file mode 100644 index 0000000000..7af23b7d49 --- /dev/null +++ b/libs/libid3tag/Makefile @@ -0,0 +1,65 @@ +# +# 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:=libid3tag +PKG_VERSION:=0.15.1b +PKG_RELEASE:=4 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/mad +PKG_MD5SUM:=e5808ad997ba32c498803822078748c3 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:=COPYING + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libid3tag + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+zlib + TITLE:=An ID3 tag manipulation library + URL:=http://mad.sourceforge.net/ +endef + +define Package/libid3tag/description + libid3tag is a library for reading and (eventually) writing ID3 tags, both + ID3v1 and the various versions of ID3v2. +endef + +TARGET_CFLAGS += $(FPIC) + +CONFIGURE_VARS += CC="$(TARGET_CC) $(TARGET_CFLAGS)" + +define Build/Configure + $(call Build/Configure/Default, \ + --enable-shared \ + --enable-static \ + --disable-debugging \ + --disable-profiling \ + ) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/id3tag.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3tag.so* $(1)/usr/lib/ +endef + +define Package/libid3tag/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libid3tag.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libid3tag)) diff --git a/libs/libmad/Makefile b/libs/libmad/Makefile new file mode 100644 index 0000000000..e5289ce7f1 --- /dev/null +++ b/libs/libmad/Makefile @@ -0,0 +1,79 @@ +# +# 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:=libmad +PKG_VERSION:=0.15.1b +PKG_RELEASE:=3 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/mad \ + ftp://ftp.mars.org/pub/mpeg/ +PKG_MD5SUM:=1be543bc30c56fb6bea1d7bf6a64e66c +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:=COPYING + +PKG_FIXUP:=autoreconf + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +FPM:=default +ifeq ($(ARCH),armeb) + FPM:=arm +endif +ifeq ($(ARCH),i386) + FPM:=intel +endif +ifeq ($(ARCH),mipsel) + FPM:=mips +endif + +define Package/libmad + SECTION:=libs + CATEGORY:=Libraries + TITLE:=An high-quality MPEG audio decoding library + URL:=http://www.underbit.com/products/mad/ + DEPENDS:=@BUILD_PATENTED +endef + +define Package/libmad/description + MAD is a high-quality MPEG audio decoder. It currently supports + MPEG-1 and the MPEG-2 extension to lower sampling frequencies, + as well as the de facto MPEG 2.5 format. All three audio layers - + Layer I, Layer II, and Layer III (i.e. MP3) - are fully implemented. +endef + +TARGET_CFLAGS += $(FPIC) + +CONFIGURE_ARGS+= \ + --enable-shared \ + --enable-static \ + --enable-fpm="$(FPM)" \ + --disable-debugging \ + --enable-speed \ + +MAKE_FLAGS+= \ + CFLAGS="$(TARGET_CFLAGS)" \ + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/mad.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmad.{a,so*} $(1)/usr/lib/ +endef + +define Package/libmad/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmad.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libmad)) diff --git a/libs/libmad/patches/001-mips_removal_h_constraint.patch b/libs/libmad/patches/001-mips_removal_h_constraint.patch new file mode 100644 index 0000000000..b65555e1fa --- /dev/null +++ b/libs/libmad/patches/001-mips_removal_h_constraint.patch @@ -0,0 +1,70 @@ +diff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h +--- libmad-0.15.1b-orig/fixed.h 2004-02-17 12:32:03.000000000 +1030 ++++ libmad-0.15.1b/fixed.h 2009-08-05 10:46:30.000000000 +0930 +@@ -299,6 +299,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -328,6 +345,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ +diff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h +--- libmad-0.15.1b-orig/mad.h 2004-02-17 13:25:44.000000000 +1030 ++++ libmad-0.15.1b/mad.h 2009-08-05 10:42:40.000000000 +0930 +@@ -344,6 +344,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -373,6 +390,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ diff --git a/libs/libmms/Makefile b/libs/libmms/Makefile new file mode 100644 index 0000000000..8edec6648e --- /dev/null +++ b/libs/libmms/Makefile @@ -0,0 +1,68 @@ +# +# Copyright (C) 2010-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:=libmms +PKG_VERSION:=0.6.4 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/libmms +PKG_MD5SUM:=d6b665b335a6360e000976e770da7691 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=LGPLv2.1 +PKG_LICENSE_FILES:=COPYING.LIB + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/libmms + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+glib2 + TITLE:=MMS stream protocol library + URL:=http://libmms.sourceforge.net + DEPENDS:=$(ICONV_DEPENDS) +endef + +define Package/libmms/description + LibMMS is a common library for parsing mms:// and mmsh:// type network streams. + These are commonly used to stream Windows Media Video content over the web. + LibMMS itself is only for receiving MMS stream, + it doesn't handle sending at all. +endef + +TARGET_CFLAGS += $(FPIC) +TARGET_LDFLAGS += $(if $(ICONV_FULL),-liconv) + +define Build/Configure + (cd $(PKG_BUILD_DIR); ./autogen.sh ); + $(call Build/Configure/Default) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/libmms $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmms.{a,so*} $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \ + $(1)/usr/lib/pkgconfig +endef + +define Package/libmms/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmms.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libmms)) diff --git a/libs/libmpdclient/Makefile b/libs/libmpdclient/Makefile new file mode 100644 index 0000000000..6fda18d611 --- /dev/null +++ b/libs/libmpdclient/Makefile @@ -0,0 +1,67 @@ +# +# Copyright (C) 2011-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:=libmpdclient +PKG_VERSION:=2.7 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://www.musicpd.org/download/libmpdclient/2/ +PKG_MD5SUM:=053a97f1b045646d2d01a68fb2ddb5ef +PKG_MAINTAINER:=Ted Hess + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libmpdclient + TITLE:=libmpdclient + SECTION:=libs + CATEGORY:=Libraries + URL:=http://mpd.wikia.com/wiki/ClientLib:libmpdclient + DEPENDS:= +endef + +define Package/libmpdclient/description + A stable, documented, asynchronous API library for interfacing MPD in the C, C++ & Objective C languages. +endef + +TARGET_CFLAGS+="-std=gnu99" + +#TARGET_LDFLAGS+=-lpthread + +define Build/Configure + $(call Build/Configure/Default) +endef + +define Build/InstallDev + $(INSTALL_DIR) \ + $(1)/usr/include \ + $(1)/usr/lib \ + $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/* \ + $(1)/usr/lib/ + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/* \ + $(1)/usr/include/ + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig \ + $(1)/usr/lib/ +endef + +define Package/libmpdclient/install + $(INSTALL_DIR) \ + $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libmpdclient.so* \ + $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libmpdclient)) diff --git a/libs/libogg/Makefile b/libs/libogg/Makefile new file mode 100644 index 0000000000..c40c4328bf --- /dev/null +++ b/libs/libogg/Makefile @@ -0,0 +1,59 @@ +# +# Copyright (C) 2008-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:=libogg +PKG_VERSION:=1.3.2 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=http://downloads.xiph.org/releases/ogg/ +PKG_MD5SUM:=5c3a34309d8b98640827e5d0991a4015 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=BSD-3c +PKG_LICENSE_FILES:=COPYING + +PKG_FIXUP:=autoreconf + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libogg + SECTION:=libs + CATEGORY:=Libraries + TITLE:=libogg + URL:=http://xiph.org/ogg/ +endef + +define Package/libogg/description +Ogg project codecs use the Ogg bitstream format to arrange the raw, +compressed bitstream into a more robust, useful form. For example, +the Ogg bitstream makes seeking, time stamping and error recovery +possible, as well as mixing several sepearate, concurrent media +streams into a single physical bitstream. +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/ogg/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/ogg/* $(1)/usr/include/ogg/ + $(INSTALL_DIR) $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{so*,a,la} $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/ + $(INSTALL_DIR) $(1)/usr/share/aclocal/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/* $(1)/usr/share/aclocal/ +endef + +define Package/libogg/install + $(INSTALL_DIR) $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libogg)) diff --git a/libs/libupnp/Makefile b/libs/libupnp/Makefile new file mode 100644 index 0000000000..ad49703a0a --- /dev/null +++ b/libs/libupnp/Makefile @@ -0,0 +1,76 @@ +# +# 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:=libupnp +PKG_VERSION:=1.6.19 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@SF/pupnp +PKG_MD5SUM:=ee16e5d33a3ea7506f38d71facc057dd +PKG_MAINTAINER:=Ted Hess + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libupnp/Default + SECTION:=libs + CATEGORY:=Libraries + URL:=http://pupnp.sourceforge.net/ +endef + +define Package/libupnp + $(call Package/libupnp/Default) + DEPENDS:=+libpthread + TITLE:=UPnP SDK library + MENU:=1 +endef + +define Package/libupnp/description +The portable SDK for UPnP Devices (libupnp) provides developers with an API and +open source code for building control points, devices, and bridges that are +compliant with Version 1.0 of the Universal Plug and Play Device Architecture +Specification. +endef + +define Package/libupnp-sample + $(call Package/libupnp/Default) + DEPENDS:=libupnp + TITLE:=UPnP sample applications +endef + +define Package/libupnp-sample/description +TVcontrolpoint & tvdevice sample applications run inside /etc/upnp-tvdevice/ +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/upnp $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,threadutil,upnp}.{a,so*,la} $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libupnp.pc $(1)/usr/lib/pkgconfig/ +endef + +define Package/libupnp/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{ixml,threadutil,upnp}.so.* $(1)/usr/lib/ +endef + +define Package/libupnp-sample/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/upnp/sample/.libs/* $(1)/usr/bin + $(INSTALL_DIR) $(1)/etc/upnp-tvdevice/web + $(INSTALL_DATA) $(PKG_BUILD_DIR)/upnp/sample/web/* $(1)/etc/upnp-tvdevice +endef + +$(eval $(call BuildPackage,libupnp)) +$(eval $(call BuildPackage,libupnp-sample)) diff --git a/libs/libvorbis/Makefile b/libs/libvorbis/Makefile new file mode 100644 index 0000000000..fbc39b8070 --- /dev/null +++ b/libs/libvorbis/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (C) 2008-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:=libvorbis +PKG_VERSION:=1.3.4 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=http://downloads.xiph.org/releases/vorbis/ +PKG_MD5SUM:=55f2288055e44754275a17c9a2497391 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=BSD-3c +PKG_LICENSE_FILES:=COPYING + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libvorbis + SECTION:=libs + CATEGORY:=Libraries + TITLE:=libvorbis + URL:=http://xiph.org/vorbis/ + DEPENDS:=+libogg +endef + +define Package/libvorbis/description +Vorbis is a general purpose audio and music encoding format +contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond +MPEG audio layer 3. Unlike the MPEG sponsored formats (and other +proprietary formats such as RealAudio G2 and Windows' flavor of the +month), the Vorbis CODEC specification belongs to the public domain. +All the technical details are published and documented, and any +software entity may make full use of the format without license +fee, royalty or patent concerns. +endef + +CONFIGURE_ARGS+= \ + --disable-oggtest \ + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/vorbis/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/vorbis/* $(1)/usr/include/vorbis/ + $(INSTALL_DIR) $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{so*,a,la} $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/ + $(INSTALL_DIR) $(1)/usr/share/aclocal/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/* $(1)/usr/share/aclocal/ +endef + +define Package/libvorbis/install + $(INSTALL_DIR) $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libvorbis)) diff --git a/libs/libvorbisidec/Makefile b/libs/libvorbisidec/Makefile new file mode 100644 index 0000000000..9f8a99bb47 --- /dev/null +++ b/libs/libvorbisidec/Makefile @@ -0,0 +1,57 @@ +# +# 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:=libvorbisidec +PKG_VERSION:=1.0.2+svn18153 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz +PKG_SOURCE_URL:=http://ftp.de.debian.org/debian/pool/main/libv/libvorbisidec/ +PKG_MD5SUM:=4190859414c5d6760e316b5cf00fe7c5 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=BSD-3c +PKG_LICENSE_FILES:=COPYING + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/libvorbisidec + SECTION:=libs + CATEGORY:=Libraries + TITLE:=A fixed-point Ogg/Vorbis decoder library + DEPENDS:= +libogg + URL:=http://wiki.xiph.org/index.php/Tremor +endef + +define Package/libvorbisidec/description + libvorbisidec is "tremor", a fixed-point implementation of libvorbis. + It also has libogg built-in. It is suitable as a replacement for + libvorbis and libogg in tremor-aware applications. + Tremor is a decoder only. +endef + +TARGET_CFLAGS += $(FPIC) +CONFIGURE_ARGS += --enable-shared --enable-static + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/tremor $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbisidec.{a,so*} $(1)/usr/lib/ +endef + +define Package/libvorbisidec/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvorbisidec.so.* $(1)/usr/lib/ +endef + +$(eval $(call BuildPackage,libvorbisidec)) diff --git a/multimedia/ffmpeg/Config.in b/multimedia/ffmpeg/Config.in new file mode 100644 index 0000000000..69234522d5 --- /dev/null +++ b/multimedia/ffmpeg/Config.in @@ -0,0 +1,371 @@ +menu "Configuration" + depends on PACKAGE_libffmpeg-custom + +config FFMPEG_CUSTOM_PATENTED + bool "Include patented codecs and technologies" + default BUILD_PATENTED + +comment "Profiles ---" + +config FFMPEG_CUSTOM_FFSERVER_SUPPORT + bool "Include support for ffserver (FFmpeg streaming server)" + select FFMPEG_CUSTOM_MUXER_ffm + select FFMPEG_CUSTOM_DEMUXER_ffm + select FFMPEG_CUSTOM_DEMUXER_rtsp + select FFMPEG_CUSTOM_PROTOCOL_rtp + +config FFMPEG_CUSTOM_LIBDLNA_SUPPORT + bool "Include support for libdlna/ushare" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_DECODER_ac3 + select FFMPEG_CUSTOM_DECODER_atrac3 + select FFMPEG_CUSTOM_DECODER_h264 + select FFMPEG_CUSTOM_DECODER_jpegls + select FFMPEG_CUSTOM_DECODER_mp3 + select FFMPEG_CUSTOM_DECODER_mpeg1video + select FFMPEG_CUSTOM_DECODER_mpeg2video + select FFMPEG_CUSTOM_DECODER_mpeg4 + select FFMPEG_CUSTOM_DECODER_mpegvideo + select FFMPEG_CUSTOM_DECODER_wmav1 + select FFMPEG_CUSTOM_DECODER_wmav2 + select FFMPEG_CUSTOM_DECODER_png + select FFMPEG_CUSTOM_DEMUXER_ac3 + select FFMPEG_CUSTOM_DEMUXER_h264 + select FFMPEG_CUSTOM_DEMUXER_mp3 + select FFMPEG_CUSTOM_DEMUXER_mpegvideo + +config FFMPEG_CUSTOM_MINIDLNA_SUPPORT + bool "Include support for minidlna" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_DECODER_aac + select FFMPEG_CUSTOM_DECODER_ac3 + select FFMPEG_CUSTOM_DECODER_flac + select FFMPEG_CUSTOM_DECODER_h264 + select FFMPEG_CUSTOM_DECODER_jpegls + select FFMPEG_CUSTOM_DECODER_mp3 + select FFMPEG_CUSTOM_DECODER_mpeg1video + select FFMPEG_CUSTOM_DECODER_mpeg2video + select FFMPEG_CUSTOM_DECODER_mpeg4 + select FFMPEG_CUSTOM_DECODER_mpegvideo + select FFMPEG_CUSTOM_DECODER_wmav1 + select FFMPEG_CUSTOM_DECODER_wmav2 + select FFMPEG_CUSTOM_DECODER_png + select FFMPEG_CUSTOM_DEMUXER_aac + select FFMPEG_CUSTOM_DEMUXER_ac3 + select FFMPEG_CUSTOM_DEMUXER_avi + select FFMPEG_CUSTOM_DEMUXER_flac + select FFMPEG_CUSTOM_DEMUXER_h264 + select FFMPEG_CUSTOM_DEMUXER_matroska + select FFMPEG_CUSTOM_DEMUXER_mov + select FFMPEG_CUSTOM_DEMUXER_mp3 + select FFMPEG_CUSTOM_DEMUXER_mpegvideo + select FFMPEG_CUSTOM_PROTOCOL_file + +comment "Encoders ---" + +config FFMPEG_CUSTOM_ENCODER_ac3 + bool "AC3" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_PARSER_ac3 + +config FFMPEG_CUSTOM_ENCODER_jpegls + bool "JPEG-LS" + +config FFMPEG_CUSTOM_ENCODER_mpeg1video + bool "MPEG-1 Video" + +config FFMPEG_CUSTOM_ENCODER_mpeg2video + bool "MPEG-2 Video" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_ENCODER_mpeg4 + bool "MPEG-4" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_ENCODER_pcm_s16be + bool "PCM signed 16-bit big-endian" + +config FFMPEG_CUSTOM_ENCODER_pcm_s16le + bool "PCM signed 16-bit little-endian" + +config FFMPEG_CUSTOM_ENCODER_png + bool "PNG" + select FFMPEG_CUSTOM_ENCODER_zlib + +config FFMPEG_CUSTOM_ENCODER_vorbis + bool "Vorbis" + +config FFMPEG_CUSTOM_ENCODER_zlib + bool "Zlib" + +comment "Decoders ---" + +config FFMPEG_CUSTOM_DECODER_aac + bool "AAC (Advanced Audio Coding)" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_PARSER_aac + +config FFMPEG_CUSTOM_SELECT_adpcm + bool "ADPCM (multiple types)" + +config FFMPEG_CUSTOM_DECODER_ac3 + bool "AC3" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_PARSER_ac3 + +config FFMPEG_CUSTOM_DECODER_alac + bool "ALAC" + +config FFMPEG_CUSTOM_DECODER_amrnb + bool "AMR-NB" + select FFMPEG_CUSTOM_DEMUXER_amr + +config FFMPEG_CUSTOM_DECODER_amrwb + bool "AMR-WB" + select FFMPEG_CUSTOM_DEMUXER_amr + +config FFMPEG_CUSTOM_DECODER_ape + bool "APE" + +config FFMPEG_CUSTOM_DECODER_atrac3 + bool "ATRAC3" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_flac + bool "FLAC" + select FFMPEG_CUSTOM_PARSER_flac + +config FFMPEG_CUSTOM_DECODER_gif + bool "GIF" + +config FFMPEG_CUSTOM_DECODER_h264 + bool "H.264" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_jpegls + bool "JPEG-LS" + +config FFMPEG_CUSTOM_DECODER_mp2 + bool "MP2 (MPEG Audio Layer 2)" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_mp3 + bool "MP3 (MPEG Audio Layer 2)" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_mpegvideo + bool "MPEG Video" + +config FFMPEG_CUSTOM_DECODER_mpeg1video + bool "MPEG-1 Video" + +config FFMPEG_CUSTOM_DECODER_mpeg2video + bool "MPEG-2 Video" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_mpeg4 + bool "MPEG-4" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_mpc7 + bool "Musepack 7" + select FFMPEG_CUSTOM_DEMUXER_mpc + +config FFMPEG_CUSTOM_DECODER_mpc8 + bool "Musepack 8" + select FFMPEG_CUSTOM_DEMUXER_mpc8 + +config FFMPEG_CUSTOM_DECODER_pcm_s16be + bool "PCM signed 16-bit big-endian" + +config FFMPEG_CUSTOM_DECODER_pcm_s16le + bool "PCM signed 16-bit little-endian" + +config FFMPEG_CUSTOM_DECODER_png + bool "PNG" + select FFMPEG_CUSTOM_DECODER_zlib + +config FFMPEG_CUSTOM_SELECT_speex + bool "Speex" + +config FFMPEG_CUSTOM_DECODER_vorbis + bool "Vorbis" + +config FFMPEG_CUSTOM_DECODER_wavpack + bool "Wavpack" + +config FFMPEG_CUSTOM_DECODER_wmav1 + bool "WMAv1" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_wmav2 + bool "WMAv2" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DECODER_zlib + bool "Zlib" + +comment "Muxers ---" + +config FFMPEG_CUSTOM_MUXER_ac3 + bool "AC3" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_MUXER_ffm + bool "FFM (ffserver live feed)" + +config FFMPEG_CUSTOM_MUXER_h264 + bool "H.264" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_MUXER_mp3 + bool "MP3 (MPEG Audio Layer 3)" + +config FFMPEG_CUSTOM_MUXER_mp4 + bool "MP4" + +config FFMPEG_CUSTOM_MUXER_mpeg1video + bool "MPEG-1 Video" + +config FFMPEG_CUSTOM_MUXER_mpeg2video + bool "MPEG-2 Video" + +config FFMPEG_CUSTOM_MUXER_mpegts + bool "MPEG-2 (TS)" + +config FFMPEG_CUSTOM_MUXER_ogg + bool "Ogg" + +config FFMPEG_CUSTOM_MUXER_rtp + bool "RTP" + +comment "Demuxers ---" + +config FFMPEG_CUSTOM_DEMUXER_aac + bool "AAC" + +config FFMPEG_CUSTOM_DEMUXER_avi + bool "AVI (Audio Video Interleave)" + +config FFMPEG_CUSTOM_DEMUXER_ac3 + bool "AC3" + +config FFMPEG_CUSTOM_DEMUXER_amr + bool "AMR" + +config FFMPEG_CUSTOM_DEMUXER_ape + bool "APE" + +config FFMPEG_CUSTOM_DEMUXER_flac + bool "FLAC" + +config FFMPEG_CUSTOM_DEMUXER_ffm + bool "FFM (ffserver live feed)" + +config FFMPEG_CUSTOM_DEMUXER_h264 + bool "H.264" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_DEMUXER_matroska + bool "Matroska (MKA,MKV)" + select FFMPEG_CUSTOM_DECODER_zlib + +config FFMPEG_CUSTOM_DEMUXER_mov + bool "MOV/MP4/M4A/3GP/3G2/MJ2" + select FFMPEG_CUSTOM_DECODER_zlib + +config FFMPEG_CUSTOM_DEMUXER_mp3 + bool "MP3 (MPEG Audio Layer 3)" + select FFMPEG_CUSTOM_PARSER_mpegaudio + +config FFMPEG_CUSTOM_DEMUXER_mpegvideo + bool "MPEG Video" + +config FFMPEG_CUSTOM_DEMUXER_mpegps + bool "MPEG-2 (PS)" + +config FFMPEG_CUSTOM_DEMUXER_mpegts + bool "MPEG-2 (TS)" + +config FFMPEG_CUSTOM_DEMUXER_mpc + bool "Musepack" + +config FFMPEG_CUSTOM_DEMUXER_mpc8 + bool "Musepack 8" + +config FFMPEG_CUSTOM_DEMUXER_ogg + bool "Ogg" + +config FFMPEG_CUSTOM_DEMUXER_rm + bool "RM" + help + RealMedia format demuxer + +config FFMPEG_CUSTOM_DEMUXER_rtsp + bool "RTSP" + select FFMPEG_CUSTOM_DEMUXER_rm + select FFMPEG_CUSTOM_DEMUXER_sdp + select FFMPEG_CUSTOM_DEMUXER_rtp + +config FFMPEG_CUSTOM_DEMUXER_sdp + bool "SDP" + select FFMPEG_CUSTOM_DEMUXER_mpegts + +config FFMPEG_CUSTOM_DEMUXER_rtp + bool "RTP" + +config FFMPEG_CUSTOM_DEMUXER_wav + bool "WAV" + +config FFMPEG_CUSTOM_DEMUXER_wv + bool "WV" + +comment "Parsers ---" + +config FFMPEG_CUSTOM_PARSER_aac + bool "AAC (Advanced Audio Coding)" + depends on FFMPEG_CUSTOM_PATENTED + +config FFMPEG_CUSTOM_PARSER_ac3 + bool "AC3" + +config FFMPEG_CUSTOM_PARSER_flac + bool "FLAC" + +config FFMPEG_CUSTOM_PARSER_h264 + bool "H.264" + depends on FFMPEG_CUSTOM_PATENTED + select FFMPEG_CUSTOM_DECODER_h264 + +config FFMPEG_CUSTOM_PARSER_mpegaudio + bool "MPEG Audio" + +config FFMPEG_CUSTOM_PARSER_mpegvideo + bool "MPEG Video" + +config FFMPEG_CUSTOM_PARSER_mpeg4video + bool "MPEG-4 Video" + +comment "Protocols ---" + +config FFMPEG_CUSTOM_PROTOCOL_file + bool "file:" + +config FFMPEG_CUSTOM_PROTOCOL_http + bool "http:" + +config FFMPEG_CUSTOM_PROTOCOL_pipe + bool "pipe:" + +config FFMPEG_CUSTOM_PROTOCOL_rtp + bool "rtp:" + select FFMPEG_CUSTOM_PROTOCOL_udp + +config FFMPEG_CUSTOM_PROTOCOL_tcp + bool "tcp:" + +config FFMPEG_CUSTOM_PROTOCOL_udp + bool "udp:" + +endmenu + diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile new file mode 100644 index 0000000000..81112cfdca --- /dev/null +++ b/multimedia/ffmpeg/Makefile @@ -0,0 +1,575 @@ +# +# 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:=0.11.5 +PKG_RELEASE:=4 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://ffmpeg.org/releases/ +PKG_MD5SUM:=ea25fc252c132141f12988ed5506bfe8 +PKG_MAINTAINER:=Ted Hess + +PKG_LICENSE:=LGPLv2.1+ GPLv2+ LGPLv3 +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_ENCODERS:= \ + +FFMPEG_MINI_DECODERS:= \ + aac \ + ac3 \ + atrac3 \ + flac \ + h263 \ + h264 \ + jpegls \ + mp3 \ + mpeg1video \ + mpeg2video \ + mpeg4 \ + mpegvideo \ + png \ + wmav1 \ + wmav2 \ + +FFMPEG_MINI_MUXERS:= \ + ffm \ + +FFMPEG_MINI_DEMUXERS := \ + aac \ + ac3 \ + asf \ + avi \ + ffm \ + flac \ + h264 \ + matroska \ + mov \ + mp3 \ + mpegts \ + mpegvideo \ + sdp \ + rtsp \ + +FFMPEG_MINI_PARSERS:= \ + ac3 \ + flac \ + h263 \ + h264 \ + mpeg4video \ + mpegaudio \ + +FFMPEG_MINI_PROTOCOLS := \ + file http rtp tcp udp \ + +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+= (mini) + 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" \ + --enable-shared \ + --enable-static \ + --disable-debug \ + --pkg-config="pkg-config" \ + \ + --enable-gpl \ + --enable-version3 \ + \ + --disable-altivec \ + --disable-asm \ + --disable-doc \ + --disable-dxva2 \ + --enable-pthreads \ + --disable-optimizations \ + --enable-small \ + --disable-stripping \ + --enable-zlib \ + --disable-outdevs + +ifeq ($(BUILD_VARIANT),custom) + + FFMPEG_ENABLE= \ + $(foreach c, $(2), \ + $(if $($(3)_$(c)),--enable-$(1)="$(c)") \ + ) + + FFMPEG_CONFIGURE+= \ + --disable-ffmpeg \ + --disable-ffplay \ + --disable-ffprobe \ + --disable-ffserver \ + --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-ffmpeg \ + --disable-ffplay \ + --disable-ffprobe \ + --disable-ffserver \ + --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-ffmpeg \ + --disable-ffplay \ + --disable-ffprobe \ + --disable-ffserver \ + --disable-avfilter \ + --disable-postproc \ + --disable-swresample \ + --disable-swscale \ + --disable-everything \ + $(call FFMPEG_ENABLE,encoder,$(FFMPEG_MINI_ENCODERS)) \ + $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \ + $(call FFMPEG_ENABLE,muxer,$(FFMPEG_MINI_MUXERS)) \ + $(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 + +Build/InstallDev/mini = $(Build/InstallDev/custom) +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 + +Package/libffmpeg-mini/install = $(Package/libffmpeg-custom/install) +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)) diff --git a/multimedia/shairport/Makefile b/multimedia/shairport/Makefile new file mode 100644 index 0000000000..152ddc3a01 --- /dev/null +++ b/multimedia/shairport/Makefile @@ -0,0 +1,57 @@ +# +# Copyright (C) 2013-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:=shairport +PKG_VERSION:=2014-05-08 +PKG_RELEASE:=2 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=git://github.com/abrasive/shairport.git +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=078b21043cdcef6ffad7452db27f036770b23b0c +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz +PKG_MAINTAINER:=Ted Hess + +include $(INCLUDE_DIR)/package.mk + +define Package/shairport + SECTION:=multimedia + CATEGORY:=Multimedia + DEPENDS:=+libpthread +avahi-utils +libopenssl +libavahi-client +alsa-utils + TITLE:=ShairPort AirPort Express emulator +endef + +define Package/shairport/description + This program emulates an AirPort Express for the purpose of streaming + music from iTunes and compatible iPods. It implements a server for the + Apple RAOP protocol. + ShairPort does not support AirPlay v2 (video and photo streaming). + + It supports multiple simultaneous streams, if your audio output chain + (as detected by libao) does so. +endef + +TARGET_CFLAGS += $(FPIC) + +LIBS:=-lm -lcrypto -lpthread -lavahi-common -lavahi-client -lasound + +MAKE_FLAGS += \ + CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(LIBS)" + +define Package/shairport/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/shairport $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc/init.d/ + $(INSTALL_BIN) files/shairport.init $(1)/etc/init.d/shairport + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) files/shairport.config $(1)/etc/config/shairport +endef + +$(eval $(call BuildPackage,shairport)) diff --git a/multimedia/shairport/files/shairport.config b/multimedia/shairport/files/shairport.config new file mode 100644 index 0000000000..851c927e49 --- /dev/null +++ b/multimedia/shairport/files/shairport.config @@ -0,0 +1,18 @@ +config shairport main + option bname 'AirPort' + option password '' + option port '5002' + option buffer '256' + option log '' + option cmd_start '' + option cmd_stop '' + option cmd_wait '' + option audio_output 'alsa' + option mdns 'avahi' + + # options for alsa output + option output_dev '' + option mixer_dev '' + option mixer_type '' + option mixer_control '' + option mixer_index '' diff --git a/multimedia/shairport/files/shairport.init b/multimedia/shairport/files/shairport.init new file mode 100644 index 0000000000..99132be121 --- /dev/null +++ b/multimedia/shairport/files/shairport.init @@ -0,0 +1,91 @@ +#!/bin/sh /etc/rc.common + +NAME=shairport +START=94 + +SERVICE_DAEMONIZE=1 +SERVICE_WRITE_PID=1 + +AP_PIDDIR=/var/run +AP_BIN=/usr/bin/shairport + +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val + + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && append AP_ARGS "$opt ${val:-$def}" +} + +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val + + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && append AP_ARGS "$opt" +} + +start_instance() { + AP_ARGS="" + local cfg="$1" + local ao dev + + append_arg "$cfg" bname "-a" "AirPort" + append_arg "$cfg" log "-l" + append_arg "$cfg" initbuf "-b" "256" + append_arg "$cfg" port "-p" "5002" + append_arg "$cfg" password "-k" + append_arg "$cfg" mdns "-m" + + append_arg "$cfg" cmd_start "-B" + append_arg "$cfg" cmd_stop "-E" + append_bool "$cfg" cmd_wait "-w" + + append_arg "$cfg" audio_output "-o" + + config_get ao "$cfg" audio_output "" + if [ "$ao" = "alsa" ]; then + config_get dev "$cfg" output_device "" + if [ -n "$dev" ]; then + append AP_ARGS "--" + append_arg "$cfg" output_device "-d" + append_arg "$cfg" mixer_device "-m" + append_arg "$cfg" mixer_type "-t" + append_arg "$cfg" mixer-control "-c" + append_arg "$cfg" mixer-index "-i" + fi + fi + + SERVICE_PID_FILE=${AP_PIDDIR}/${NAME}_${cfg}.pid + service_start $AP_BIN $AP_ARGS + + # Check if daemon is running, if not then + # re-execute in foreground to display error. + sleep 1 && service_check $AP_BIN || \ + $AP_BIN $AP_ARGS +} + +stop_instance() +{ + local cfg="$1" + + SERVICE_PID_FILE=${AP_PIDDIR}/${NAME}_${cfg}.pid + SERVICE_SIG_STOP="INT" + service_stop $AP_BIN +} + +start() { + config_load shairport + config_foreach start_instance shairport +} + +stop() { + config_load shairport + config_foreach stop_instance shairport +} diff --git a/multimedia/shairport/patches/001-disable_pulseaudio.patch b/multimedia/shairport/patches/001-disable_pulseaudio.patch new file mode 100644 index 0000000000..7f0407e2ba --- /dev/null +++ b/multimedia/shairport/patches/001-disable_pulseaudio.patch @@ -0,0 +1,12 @@ +--- a/configure ++++ b/configure +@@ -59,7 +59,7 @@ do_pkg_config() + + do_pkg_config OpenSSL openssl +-do_pkg_config libao ao CONFIG_AO +-do_pkg_config PulseAudio libpulse-simple CONFIG_PULSE ++#do_pkg_config libao ao CONFIG_AO ++#do_pkg_config PulseAudio libpulse-simple CONFIG_PULSE + do_pkg_config ALSA alsa CONFIG_ALSA + do_pkg_config Avahi\ client avahi-client CONFIG_AVAHI + diff --git a/sound/mpc/Makefile b/sound/mpc/Makefile new file mode 100644 index 0000000000..184ca9bf99 --- /dev/null +++ b/sound/mpc/Makefile @@ -0,0 +1,56 @@ +# +# 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:=mpc +PKG_VERSION:=0.26 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=http://www.musicpd.org/download/mpc/0 +PKG_MD5SUM:=d4f37e7e6b32c804a870192d1eb86199 +PKG_MAINTAINER:=Ted Hess + +include $(INCLUDE_DIR)/package.mk + +define Package/mpc + SECTION:=sound + CATEGORY:=Sound + DEPENDS:=+libmpdclient + TITLE:=Music Player Daemon Console Client + URL:=http://www.musicpd.org/ +endef + +define Package/mpc/description + MPD is a music player supporting flac, mp3 and ogg files. + It is typically controlled over a network using one of it's many + clients including mpc(console), gmpc(gnome), phpmp(php) etc. + this is MPC +endef + +define Build/Configure +$(call Build/Configure/Default, \ + --disable-iconv \ +) +endef + +define Build/Compile +$(call Build/Compile/Default,\ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \ + prefix="/usr" \ + all \ +) +endef + +define Package/mpc/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mpc $(1)/usr/bin/ + $(INSTALL_BIN) ./files/pls-handler.sh $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,mpc)) diff --git a/sound/mpc/files/pls-handler.sh b/sound/mpc/files/pls-handler.sh new file mode 100644 index 0000000000..9394417838 --- /dev/null +++ b/sound/mpc/files/pls-handler.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +echo parameter: file.pls +mpc clear +grep '^File[0-9]*' $1 | sed -e 's/^File[0-9]*=//' | mpc add +mpc play \ No newline at end of file diff --git a/sound/mpd/Makefile b/sound/mpd/Makefile new file mode 100644 index 0000000000..6547d729e6 --- /dev/null +++ b/sound/mpd/Makefile @@ -0,0 +1,209 @@ +# +# Copyright (C) 2007-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:=mpd +PKG_VERSION:=0.17.6 +PKG_RELEASE:=4 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.17/ +PKG_MD5SUM:=0a42ed81ff298c12e22c16be31097e4c +PKG_MAINTAINER:=Ted Hess + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) +PKG_BUILD_PARALLEL:=1 + +PKG_CONFIG_DEPENDS:= \ + CONFIG_IPV6 \ + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/mpd/Default + SECTION:=sound + CATEGORY:=Sound + TITLE:=Music Player Daemon + URL:=http://www.musicpd.org/ + DEPENDS:= +glib2 +libcurl +libpthread $(ICONV_DEPENDS) \ + +libflac +BUILD_PATENTED:libmad +libvorbisidec +endef + +define Package/mpd/Default/description + Music Player Daemon (MPD) is a flexible, powerful, server-side + application for playing music. It is typically controlled over a + network using one of it's many clients including mpc (console), + gmpc (gnome), phpmp (php), etc... +endef + +define Package/mpd-full +$(call Package/mpd/Default) + TITLE+= (full) + DEPENDS+= \ + +AUDIO_SUPPORT:alsa-lib \ + +libaudiofile +BUILD_PATENTED:libfaad2 +libffmpeg +libid3tag \ + +libmms +libogg +libsndfile +libvorbis + PROVIDES:=mpd + VARIANT:=full +endef + +define Package/mpd-full/description +$(call Package/mpd/Default/description) + . + This package contains a full-blown Music Player Daemon. +endef + +define Package/mpd-full/conffiles +/etc/avahi/services/mpd.service +/etc/mpd.conf +endef + +define Package/mpd-mini +$(call Package/mpd/Default) + TITLE+= (mini) + PROVIDES:=mpd + VARIANT:=mini +endef + +define Package/mpd-mini/description +$(call Package/mpd/Default/description) + . + This package contains a minimal Music Player Daemon, with support for + only Flac, MP3 & OGG media types & only file: & http: protocols. +endef + +define Package/mpd-mini/conffiles +/etc/mpd.conf +endef + +CONFIGURE_ARGS += \ + $(call autoconf_bool,CONFIG_IPV6,ipv6) \ + --disable-debug \ + --disable-documentation \ + --disable-gprof \ + --disable-test \ + --disable-werror \ + \ + --disable-ao \ + --disable-bzip2 \ + --enable-cue \ + --disable-ffado \ + --disable-fluidsynth \ + --disable-gme \ + --enable-inotify \ + --disable-iso9660 \ + --disable-jack \ + --disable-lame-encoder \ + --disable-libwrap \ + --disable-lsr \ + --disable-mikmod \ + --disable-modplug \ + --disable-mpc \ + --disable-mpg123 \ + --disable-mvp \ + --disable-openal \ + --disable-pulse \ + --disable-sidplay \ + --disable-solaris-output \ + --disable-sqlite \ + --disable-twolame-encoder \ + --enable-wave-encoder \ + --disable-wavpack \ + --disable-wildmidi \ + --disable-zzip \ + --with-zeroconf=auto \ + \ + --enable-curl \ + --enable-flac \ + --enable-httpd-output \ + $(call autoconf_bool,CONFIG_BUILD_PATENTED,mad) \ + $(call autoconf_bool,CONFIG_AUDIO_SUPPORT,oss) \ + --enable-tcp \ + --enable-un \ + +CONFIGURE_VARS += \ + FLAC_CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/FLAC" \ + FLAC_LIBS="$(TARGET_LDFLAGS) -lFLAC" \ + $(if $(CONFIG_BUILD_PATENTED),MAD_CFLAGS="$(TARGET_CFLAGS)") \ + $(if $(CONFIG_BUILD_PATENTED),MAD_LIBS="$(TARGET_LDFLAGS) -lmad") \ + +TARGET_CFLAGS += -std=gnu99 +TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib $(if $(ICONV_FULL),-liconv) + +# use gcc instead of g++ to avoid unnecessary linking against libstdc++ +TARGET_CXX:=$(TARGET_CC) + +ifeq ($(BUILD_VARIANT),full) + + CONFIGURE_ARGS += \ + $(call autoconf_bool,CONFIG_BUILD_PATENTED,aac) \ + $(call autoconf_bool,CONFIG_AUDIO_SUPPORT,alsa) \ + --enable-audiofile \ + --enable-fifo \ + --enable-ffmpeg \ + --enable-id3 \ + --enable-lastfm \ + --enable-mms \ + --enable-oggflac \ + --enable-pipe-output \ + --enable-recorder-output \ + --disable-shout \ + --enable-sndfile \ + --enable-vorbis \ + --disable-vorbis-encoder \ + --with-faad="$(STAGING_DIR)/usr" \ + --with-tremor=yes \ + +endif + +ifeq ($(BUILD_VARIANT),mini) + + # oggflac is not compatible with tremor + CONFIGURE_ARGS += \ + --disable-aac \ + --disable-alsa \ + --disable-audiofile \ + --disable-fifo \ + --disable-ffmpeg \ + --disable-id3 \ + --disable-lastfm \ + --disable-mms \ + --disable-oggflac \ + --disable-pipe-output \ + --disable-recorder-output \ + --disable-shout \ + --disable-sndfile \ + --disable-vorbis \ + --disable-vorbis-encoder \ + --with-tremor=yes \ + +endif + +define Package/mpd/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/mpd $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc + $(CP) $(PKG_BUILD_DIR)/doc/mpdconf.example $(1)/etc/mpd.conf + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/mpd.init $(1)/etc/init.d/mpd +endef + +define Package/mpd-full/install +$(call Package/mpd/install,$1) + $(INSTALL_DIR) $(1)/etc/avahi/services + $(INSTALL_DATA) ./files/mpd.service $(1)/etc/avahi/services/ +endef + +define Package/mpd-mini/install +$(call Package/mpd/install,$1) +endef + +$(eval $(call BuildPackage,mpd-full)) +$(eval $(call BuildPackage,mpd-mini)) diff --git a/sound/mpd/files/mpd.init b/sound/mpd/files/mpd.init new file mode 100644 index 0000000000..707564bbce --- /dev/null +++ b/sound/mpd/files/mpd.init @@ -0,0 +1,28 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2007-2011 OpenWrt.org + +START=93 + +start() { + #create mpd directories + pld=`grep ^playlist_directory /etc/mpd.conf | cut -d "\"" -f 2 | sed "s/~/\/root/g"` + if [ ! -d $pld ]; then + mkdir -m 0755 -p $pld + fi + + # Set the initial volume to something manageable + [ -x /usr/bin/amixer ] && /usr/bin/amixer set PCM 40 + + if [ -x /bin/nice ]; then + # This has real-time constraints, so let's at least tell the OS + # that this should have higher priority to avoid skipping + # when doing other things in the background. + nice -n -10 + fi + + service_start /usr/bin/mpd +} + +stop() { + service_stop /usr/bin/mpd +} diff --git a/sound/mpd/files/mpd.service b/sound/mpd/files/mpd.service new file mode 100644 index 0000000000..086a2bb3fc --- /dev/null +++ b/sound/mpd/files/mpd.service @@ -0,0 +1,9 @@ + + + + Music Player Daemon on %h + + _mpd._tcp + 6600 + + diff --git a/sound/mpd/patches/100-compile-fixes.patch b/sound/mpd/patches/100-compile-fixes.patch new file mode 100644 index 0000000000..9cfdd6dba5 --- /dev/null +++ b/sound/mpd/patches/100-compile-fixes.patch @@ -0,0 +1,23 @@ +--- a/configure ++++ b/configure +@@ -9821,6 +9821,7 @@ fi + # Check whether --with-faad was given. + if test "${with_faad+set}" = set; then : + withval=$with_faad; ++ faad_prefix=$with_faad; + else + faad_prefix="" + fi +--- a/src/input/file_input_plugin.c ++++ b/src/input/file_input_plugin.c +@@ -82,10 +82,6 @@ input_file_open(const char *filename, + return NULL; + } + +-#ifdef POSIX_FADV_SEQUENTIAL +- posix_fadvise(fd, (off_t)0, st.st_size, POSIX_FADV_SEQUENTIAL); +-#endif +- + fis = g_new(struct file_input_stream, 1); + input_stream_init(&fis->base, &input_plugin_file, filename, + mutex, cond); diff --git a/sound/mpd/patches/200-allow-float-samples-ffmpeg.patch b/sound/mpd/patches/200-allow-float-samples-ffmpeg.patch new file mode 100644 index 0000000000..620a47c90a --- /dev/null +++ b/sound/mpd/patches/200-allow-float-samples-ffmpeg.patch @@ -0,0 +1,16 @@ +--- a/src/decoder/ffmpeg_decoder_plugin.c ++++ b/src/decoder/ffmpeg_decoder_plugin.c +@@ -370,6 +370,13 @@ + #endif + return SAMPLE_FORMAT_S32; + ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 94, 1) ++ case AV_SAMPLE_FMT_FLT: ++#else ++ case SAMPLE_FMT_FLOAT: ++#endif ++ return SAMPLE_FORMAT_FLOAT; ++ + default: + g_warning("Unsupported libavcodec SampleFormat value: %d", + codec_context->sample_fmt); diff --git a/sound/mpd/patches/210-support_raw_pcm_streams.patch b/sound/mpd/patches/210-support_raw_pcm_streams.patch new file mode 100644 index 0000000000..280082b321 --- /dev/null +++ b/sound/mpd/patches/210-support_raw_pcm_streams.patch @@ -0,0 +1,24 @@ +--- a/src/decoder/ffmpeg_decoder_plugin.c ++++ b/src/decoder/ffmpeg_decoder_plugin.c +@@ -387,6 +387,13 @@ ffmpeg_probe(struct decoder *decoder, st + + unsigned char *buffer = g_malloc(BUFFER_SIZE); + size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE); ++ ++ if ((nbytes > 0) && (nbytes < 1024)) ++ { ++ // Gobble some more data if header is small ++ nbytes += decoder_read(decoder, is, buffer + nbytes, BUFFER_SIZE - nbytes); ++ } ++ + if (nbytes <= PADDING || + !input_stream_lock_seek(is, 0, SEEK_SET, NULL)) { + g_free(buffer); +@@ -683,6 +690,7 @@ static const char *const ffmpeg_mime_typ + "audio/qcelp", + "audio/vorbis", + "audio/vorbis+ogg", ++ "audio/wav", + "audio/x-8svx", + "audio/x-16sv", + "audio/x-aac", diff --git a/utils/alsa-utils/Makefile b/utils/alsa-utils/Makefile new file mode 100644 index 0000000000..f7c8752652 --- /dev/null +++ b/utils/alsa-utils/Makefile @@ -0,0 +1,93 @@ +# +# 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:=alsa-utils +PKG_VERSION:=1.0.28 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/utils/ \ + http://alsa.cybermirror.org/utils/ +PKG_MD5SUM:=361552d5b1cacd0a1e7ba09e69990211 +PKG_INSTALL:=1 +PKG_MAINTAINER:=Ted Hess + +include $(INCLUDE_DIR)/package.mk + +define Package/alsa-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+alsa-lib +libncurses +libpthread + TITLE:=ALSA (Advanced Linux Sound Architecture) utilities + URL:=http://www.alsa-project.org/ +endef + +define Package/alsa-utils-seq + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+alsa-lib +libpthread + TITLE:=ALSA sequencer utilities + URL:=http://www.alsa-project.org/ +endef + +define Package/alsa-utils-tests + $(call Package/alsa-utils/Default) + SECTION:=utils + CATEGORY:=Utilities + TITLE:=ALSA utilities test data (adds ~1.3M to image) + DEPENDS:=+alsa-lib +libpthread +endef + +define Build/Configure + $(call Build/Configure/Default, \ + --disable-rpath \ + --disable-alsatest \ + --disable-xmlto \ + , \ + ac_cv_prog_ncurses5_config=no \ + ac_cv_prog_ncursesw5_config=no \ + ) +endef + +define Package/alsa-utils/install + $(INSTALL_DIR) $(1)/usr/{s,}bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/amixer $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/alsamixer $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aplay $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/arecord $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/alsactl $(1)/usr/sbin/ + + $(INSTALL_DIR) $(1)/usr/share/alsa/init + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/share/alsa/init/* \ + $(1)/usr/share/alsa/init/ +endef + +define Package/alsa-utils-seq/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aconnect $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/amidi $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aplaymidi $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/arecordmidi $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aseqdump $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aseqnet $(1)/usr/bin/ +endef + +define Package/alsa-utils-tests/install + $(INSTALL_DIR) $(1)/usr/{s,}bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/speaker-test $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/share/sounds/alsa + $(INSTALL_DATA) \ + $(PKG_INSTALL_DIR)/usr/share/sounds/alsa/* \ + $(1)/usr/share/sounds/alsa/ +endef + +$(eval $(call BuildPackage,alsa-utils)) +$(eval $(call BuildPackage,alsa-utils-seq)) +$(eval $(call BuildPackage,alsa-utils-tests)) diff --git a/utils/alsa-utils/patches/100-uClibc-compat.patch b/utils/alsa-utils/patches/100-uClibc-compat.patch new file mode 100644 index 0000000000..987c9b8b79 --- /dev/null +++ b/utils/alsa-utils/patches/100-uClibc-compat.patch @@ -0,0 +1,23 @@ +--- a/alsamixer/volume_mapping.c ++++ b/alsamixer/volume_mapping.c +@@ -114,9 +114,9 @@ static double get_normalized_volume(snd_ + if (use_linear_dB_scale(min, max)) + return (value - min) / (double)(max - min); + +- normalized = exp10((value - max) / 6000.0); ++ normalized = pow(10, (value - max) / 6000.0); + if (min != SND_CTL_TLV_DB_GAIN_MUTE) { +- min_norm = exp10((min - max) / 6000.0); ++ min_norm = pow(10, (min - max) / 6000.0); + normalized = (normalized - min_norm) / (1 - min_norm); + } + +@@ -149,7 +149,7 @@ static int set_normalized_volume(snd_mix + } + + if (min != SND_CTL_TLV_DB_GAIN_MUTE) { +- min_norm = exp10((min - max) / 6000.0); ++ min_norm = pow(10, (min - max) / 6000.0); + volume = volume * (1 - min_norm) + min_norm; + } + value = lrint_dir(6000.0 * log10(volume), dir) + max;