diff options
Diffstat (limited to 'net-libs/opal/opal-3.6.1.ebuild')
-rw-r--r-- | net-libs/opal/opal-3.6.1.ebuild | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/net-libs/opal/opal-3.6.1.ebuild b/net-libs/opal/opal-3.6.1.ebuild new file mode 100644 index 0000000..08b356b --- /dev/null +++ b/net-libs/opal/opal-3.6.1.ebuild @@ -0,0 +1,274 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="2" + +inherit eutils flag-o-matic + +DESCRIPTION="C++ class library normalising numerous telephony protocols" +HOMEPAGE="http://www.opalvoip.org/" +SRC_URI="mirror://sourceforge/opalvoip/${P}.tar.bz2 + doc? ( mirror://sourceforge/opalvoip/${P}-htmldoc.tar.bz2 )" + +LICENSE="MPL-1.0" +SLOT="0" +KEYWORDS="~ppc ~x86" +IUSE="+audio capi debug dns doc dtmf examples fax ffmpeg g711plc h224 +h323 iax +ipv6 ivr ixj java ldap lid msrp +plugins rfc4103 rfc4175 sbc +sip sipim srtp ssl +stats swig theora +video vpb vxml wav x264 x264-static xml" + +RDEPEND=">=net-libs/ptlib-2.0.0[url,debug=,audio?,dns?,dtmf?,ipv6?,ldap?,ssl?,video?,vxml?,wav?,xml?] + >=media-libs/speex-1.2_beta + fax? ( net-libs/ptlib[asn] ) + ivr? ( net-libs/ptlib[xml,vxml] ) + java? ( virtual/jdk ) + plugins? ( media-sound/gsm + capi? ( net-dialup/capi4k-utils ) + fax? ( media-libs/spandsp ) + ffmpeg? ( >=media-video/ffmpeg-0.4.7[encode] ) + ixj? ( sys-kernel/linux-headers ) + sbc? ( media-libs/libsamplerate ) + theora? ( media-libs/libtheora ) + x264? ( >=media-video/ffmpeg-0.4.7 + media-libs/x264 ) ) + srtp? ( net-libs/libsrtp )" +DEPEND="${RDEPEND} + dev-util/pkgconfig + >=sys-devel/gcc-3 + java? ( swig? ( dev-lang/swig[java] ) )" + +# NOTES: +# needs speexdsp, that means >=speex-1.2 +# ffmpeg[encode] is for h263 and mpeg4 +# fax enable fax, t38 and spandsp support +# h323 auto-enables h450, h460 and h501 wich provide supplementary services +# h224 auto-enables h281 +# ssl, xml, vxml, ipv6, dtmf, ldap, audio, wav, dns and video are use flags +# herited from ptlib: feature is enabled if ptlib has enabled it +# however, disabling it if ptlib has it looks hard (coz of buildopts.h) +# forcing ptlib to disable it for opal is not a solution too +# atm, accepting the "auto-feature" looks like a good solution +# (asn is used for fax and config _only_ for examples) +# OPALDIR should not be used anymore, if a package still need it, create it +# TODO: merge some use-flags or force their values ? +# candidates are: msrp, sipim, rfc4103 and any other without a dep +# TODO: celt use flag can't be set because celt is not in portage, add it +# TODO: rtp_mode from libavcodec is badly checked, see bug 2715290 +# needs to have ptlib url use flag enabled, see bug 2715377 + +pkg_setup() { + local warning=false + + # opal can't be built with --as-needed + # users where experiencing issues with --as-needed, see bug 238610 + # TODO: should be re-tested and, if possible, fixed in a cleanier way + append-ldflags -Wl,--no-as-needed + + # warn user about use flag that are gonna override other ones + + if ! use plugins; then + ewarn "disabling plugins will automatialy disable a lot of ${PN} features" + ewarn "like gsm, capi, spandsp, ffmpeg, ixj, theora and x264" + ewarn "it is _not_ recommended" + warning=true + fi + + if use rfc4175 && ! use video; then + ewarn "rfc4175 support needs video support: rfc4175 support has been disabled" + ewarn "enable video support if you want to use the rfc4175 support" + warning=true + fi + + if use x264-static && ! use x264; then + ewarn "x264-static has been enabled but x264 support has been disabled" + fi + + if ${warning}; then + echo + ewarn "If one of the warnings above is not volunteer, hit Ctrl+C now" + ewarn "and re-emerge ${PN} with the desired USE flags" + echo + ebeep + epause + fi +} + +src_prepare() { + # move files from ${P}-htmldoc.tar.gz + if use doc; then + mv ../html . || die "moving doc files failed" + fi + + # remove visual studio related files from samples/ + if use examples; then + rm -f samples/*/*.vcproj + rm -f samples/*/*.sln + rm -f samples/*/*.dsp + rm -f samples/*/*.dsw + fi + + # disable srtp if srtp is not enabled (prevent auto magic dep) + # upstream has been contacted, bug 2686485 in their bugtracker + if ! use srtp; then + sed -i -e "s/OPAL_SRTP=yes/OPAL_SRTP=no/" configure \ + || die "patching configure failed" + fi + + # disable theora if theora is not enabled (prevent auto magic dep) + # upstream has been contacted, bug 2686488 in their bugtracker + if ! use theora; then + sed -i -e "s/HAVE_THEORA=yes/HAVE_THEORA=no/" plugins/configure \ + || die "patching plugins/configure failed" + fi + + # disable mpeg4 and h263p if ffmpeg is not enabled (prevent auto magic dep) + # upstream has been contacted, bug 2686495 in their bugtracker + if ! use ffmpeg; then + sed -i -e "s/HAVE_H263P=yes/HAVE_H263P=no/" plugins/configure \ + || die "patching plugins/configure failed" + fi + + # actually, mpeg4 plugin can't build, disable it + # upstream has been contacted, bug 2714854 in their bugtracker + # TODO: when fixed, move it back into if ! use ffmpeg + sed -i -e "s/HAVE_MPEG4=yes/HAVE_MPEG4=no/" plugins/configure \ + || die "patching plugins/configure failed" + + # fix gsm wav49 support check + # upstream has been contacted, bug 2686500 in their bugtracker + if use plugins; then + sed -i -e "s:gsm\.h:gsm/gsm.h:" plugins/configure \ + || die "patching plugins/configure failed" + fi + + # fix automatic swig detection + # upstream has been contacted, bug 2712521 in their bugtracker + if ! use swig; then + sed -i -e "/^SWIG=/d" configure || die "patching configure failed" + fi + + # remove plugins install when plugins are disabled + # upstream has been contacted, bug 2715354 in their bugtracker + if ! use plugins; then + sed -i -e "/-C plugins/d" Makefile.in \ + || die "patching Makefile.in failed" + fi + + # there is a stupid bug that shown when disabling statistics + # upstream has been contacted, bug 2686504 in their bugtracker + if ! use stats; then + # a sed script is not so cool because of new lines + epatch "${FILESDIR}"/${PN}-3.4.5-stats.patch + fi +} + +src_configure() { + local myconf="" + + if use ffmpeg; then + # with-libavcodec-source-dir: no default value + myconf="--with-libavcodec-source-dir=/usr/include" + fi + + # versioncheck: check for ptlib version + # shared: should always be enabled for a lib + # zrtp doesn't depend on net-libs/libzrtpcpp but on libzrtp from + # http://zfoneproject.com/ wich is not in portage + # localspeex, localspeexdsp, localgsm: never use bundled libs + # samples: only build some samples, useless + # libavcodec-stackalign-hack: prevent hack (default disable by upstream) + # default-to-full-capabilties: default enable by upstream + # aec: atm, only used when bundled speex, so it's painless for us + # celt: not in the portage tree nor in the voip overlay + econf ${myconf} \ + --enable-versioncheck \ + --enable-shared \ + --disable-zrtp \ + --disable-localspeex \ + --disable-localspeexdsp \ + --disable-localgsm \ + --disable-samples \ + --disable-libavcodec-stackalign-hack \ + --enable-default-to-full-capabilties \ + --enable-aec \ + --disable-celt \ + $(use_enable debug) \ + $(use_enable capi) \ + $(use_enable fax) \ + $(use_enable fax spandsp) \ + $(use_enable fax t38) \ + $(use_enable ffmpeg ffmpeg-h263) \ + $(use_enable g711plc) \ + $(use_enable h224) \ + $(use_enable h224 h281) \ + $(use_enable h323) \ + $(use_enable h323 h450) \ + $(use_enable h323 h460) \ + $(use_enable h323 h501) \ + $(use_enable iax) \ + $(use_enable ivr) \ + $(use_enable ixj) \ + $(use_enable java) \ + $(use_enable lid) \ + $(use_enable msrp) \ + $(use_enable plugins) \ + $(use_enable rfc4103) \ + $(use_enable rfc4175) \ + $(use_enable sbc) \ + $(use_enable sip) \ + $(use_enable sipim) \ + $(use_enable stats statistics) \ + $(use_enable video) \ + $(use_enable vpb) \ + $(use_enable x264 h264) \ + $(use_enable x264-static x264-link-static) +} + +src_compile() { + local makeopts="" + + use debug && makeopts="debug" + + emake ${makeopts} || die "emake failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + if use doc; then + dohtml -r html/* docs/* || die "dohtml failed" + fi + + # ChangeLog is not standard + dodoc ChangeLog-${PN}-v${PV//./_}.txt || die "dodoc failed" + + if use examples; then + local exampledir="/usr/share/doc/${PF}/examples" + local basedir="samples" + local sampledirs="`ls ${basedir} --hide=configure* \ + --hide=opal_samples.mak.in`" + + # first, install files + insinto ${exampledir}/ + doins ${basedir}/{configure*,opal_samples*} \ + || die "doins failed" + + # now, all examples + for x in ${sampledirs}; do + insinto ${exampledir}/${x}/ + doins ${basedir}/${x}/* || die "doins failed" + done + + # some examples need version.h + insinto "/usr/share/doc/${PF}/" + doins version.h || die "doins failed" + fi +} + +pkg_postinst() { + if use examples; then + ewarn "all examples have been installed, some of them will not work on your system" + ewarn "it will depend of the enabled use flags in ptlib and opal" + fi +} |