# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit autotools flag-o-matic toolchain-funcs DESCRIPTION="Open source SIP, Media, and NAT Traversal Library" HOMEPAGE="https://www.pjsip.org/" SRC_URI="https://github.com/pjsip/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 x86" LICENSE="GPL-2" SLOT="0/${PV}" # g729 not included due to special bcg729 handling. CODEC_FLAGS="g711 g722 g7221 gsm ilbc speex l16" VIDEO_FLAGS="sdl ffmpeg v4l2 openh264 libyuv vpx" SOUND_FLAGS="alsa portaudio" IUSE="amr debug epoll examples ipv6 opus resample silk ssl static-libs webrtc ${CODEC_FLAGS} g729 ${VIDEO_FLAGS} ${SOUND_FLAGS}" PATCHES=( "${FILESDIR}/pjproject-2.9-ssl-enable.patch" "${FILESDIR}/pjproject-2.10-race-condition-between-transport-destroy-and-acquire.patch" "${FILESDIR}/pjproject-2.10-CVE-2020-15260-tls-hostname-check.patch" "${FILESDIR}/pjproject-2.10-CVE-2021-21375-negotiation-failure-crash.patch" ) RDEPEND="net-libs/libsrtp:= alsa? ( media-libs/alsa-lib ) amr? ( media-libs/opencore-amr ) ffmpeg? ( media-video/ffmpeg:= ) g729? ( media-libs/bcg729 ) gsm? ( media-sound/gsm ) ilbc? ( media-libs/libilbc ) openh264? ( media-libs/openh264 ) opus? ( media-libs/opus ) portaudio? ( media-libs/portaudio ) resample? ( media-libs/libsamplerate ) sdl? ( media-libs/libsdl ) speex? ( media-libs/speex media-libs/speexdsp ) ssl? ( dev-libs/openssl:0= ) " DEPEND="${RDEPEND}" BDEPEND="virtual/pkgconfig" src_prepare() { default rm configure || die "Unable to remove unwanted wrapper" mv aconfigure.ac configure.ac || die "Unable to rename configure script source" eautoreconf cp "${FILESDIR}/pjproject-2.9-config_site.h" "${S}/pjlib/include/pj/config_site.h" || die "Unable to create config_site.h" } src_configure() { local myconf=() local videnable="--disable-video" local t use debug || append-cflags -DNDEBUG=1 use ipv6 && append-cflags -DPJ_HAS_IPV6=1 append-cflags -DPJMEDIA_HAS_SRTP=1 for t in ${CODEC_FLAGS}; do myconf+=( $(use_enable ${t} ${t}-codec) ) done myconf+=( $(use_enable g729 bcg729) ) for t in ${VIDEO_FLAGS}; do myconf+=( $(use_enable ${t}) ) use "${t}" && videnable="--enable-video" done [ "${videnable}" = "--enable-video" ] && append-cflags -DPJMEDIA_HAS_VIDEO=1 LD="$(tc-getCC)" econf \ --enable-shared \ --with-external-srtp \ ${videnable} \ $(use_enable alsa sound) \ $(use_enable amr opencore-amr) \ $(use_enable epoll) \ $(use_enable opus) \ $(use_enable portaudio ext-sound) \ $(use_enable resample libsamplerate) \ $(use_enable resample resample-dll) \ $(use_enable resample) \ $(use_enable silk) \ $(use_enable speex speex-aec) \ $(use_enable ssl) \ $(use_with gsm external-gsm) \ $(use_with portaudio external-pa) \ $(use_with speex external-speex) \ $(usex webrtc '' --disable-libwebrtc) \ "${myconf[@]}" } src_compile() { emake dep LD="$(tc-getCC)" emake LD="$(tc-getCC)" } src_install() { default newbin pjsip-apps/bin/pjsua-${CHOST} pjsua newbin pjsip-apps/bin/pjsystest-${CHOST} pjsystest if use examples; then insinto "/usr/share/doc/${PF}/examples" doins -r pjsip-apps/src/samples fi use static-libs || rm "${ED}/usr/$(get_libdir)"/*.a || die "Error removing static archives" }