From bba4a011a765b786563cffd4ed66ca8d7370aca2 Mon Sep 17 00:00:00 2001 From: Oliver Epper Date: Mon, 4 Mar 2024 19:18:11 +0100 Subject: [PATCH 1/4] Initial rewrite for pjsip 2.14 renabled portaudio make kqueue configurable added upnp and fixed opus options installed pjsip-apps more dynamic pkg-plist added ffmpeg added information about fix c368025 debug option fix aarch64 build --- net/pjsip/Makefile | 105 ++++++------------ net/pjsip/distinfo | 6 +- net/pjsip/files/config_site.h | 39 +------ net/pjsip/files/patch-aconfigure | 13 +-- .../files/patch-pjmedia_build_os-auto.mak.in | 52 --------- net/pjsip/files/patch-pkgconfig.py | 2 +- .../patch-third__party_build_os-auto.mak.in | 4 +- ..._modules_audio__processing_aec_aec__core.c | 11 -- ..._modules_audio__processing_aec_aec__rdft.c | 11 -- ...-third__party_webrtc_src_webrtc_typedefs.h | 23 ---- net/pjsip/pkg-plist | 69 ++++++------ 11 files changed, 84 insertions(+), 251 deletions(-) delete mode 100644 net/pjsip/files/patch-pjmedia_build_os-auto.mak.in delete mode 100644 net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__core.c delete mode 100644 net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__rdft.c delete mode 100644 net/pjsip/files/patch-third__party_webrtc_src_webrtc_typedefs.h diff --git a/net/pjsip/Makefile b/net/pjsip/Makefile index 49f20c30d76c..7ff2aef965aa 100644 --- a/net/pjsip/Makefile +++ b/net/pjsip/Makefile @@ -1,19 +1,18 @@ PORTNAME= pjsip -DISTVERSION= 2.13.1 +DISTVERSION= 2.14 PORTREVISION= 1 CATEGORIES= net -MAINTAINER= ports@FreeBSD.org +MAINTAINER= oliver.epper@gmail.com COMMENT= Multimedia communication library written in C language WWW= https://www.pjsip.org/ LICENSE= GPLv2+ LICENSE_FILE= ${WRKSRC}/COPYING -LIB_DEPENDS= libportaudio.so:audio/portaudio \ - libuuid.so:misc/e2fsprogs-libuuid +LIB_DEPENDS= libportaudio.so:audio/portaudio -USES= cpe gmake localbase pathfix ssl tar:bz2 +USES= cpe gmake localbase ssl USE_LDCONFIG= yes USE_GITHUB= yes @@ -22,80 +21,36 @@ GH_PROJECT= pjproject CPE_VENDOR= teluu GNU_CONFIGURE= yes -CONFIGURE_ARGS= --with-external-pa \ - --disable-silk -PATHFIX_MAKEFILEIN= Makefile +CONFIGURE_ARGS= --with-external-pa + PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" -OPTIONS_DEFINE= AMR DEBUG EXTSRTP FFMPEG G711 G722 G7221 GSM ILBC IPV6 \ - L16 OPENH264 OPUS PJSUA PJSUA2 RESAMPLE RESAMPLEDLL \ - SAMPLERATE SDL SHARED SOUND SPEEX SPEEXAEC V4L VIDEO VPX WEBRTC -OPTIONS_DEFAULT=G711 G722 G7221 GSM ILBC L16 OPUS PJSUA2 SHARED SPEEX SPEEXAEC \ - VIDEO VPX WEBRTC - -EXTSRTP_DESC= Use libsrtp port (needed to get SRTP support in asterisk pjsip backend) -G711_DESC= G.711 codec support -G722_DESC= G.722 codec support -G7221_DESC= G.722.1 codec support -ILBC_DESC= iLBC codec support -L16_DESC= Linear/L16 codec support -OPENH264_DESC= OpenH264 support -PJSUA_DESC= Command line SIP agent -PJSUA2_DESC= SIP User agent 2 library -RESAMPLE_DESC= Enable resampling implementations -RESAMPLEDLL_DESC= Build libresample as shared library +OPTIONS_DEFINE= SHARED OPUS WEBRTC VIDEO KQUEUE UPNP PJSUA FFMPEG DEBUG + +OPTIONS_DEFAULT=SHARED OPUS WEBRTC VIDEO UPNP FFMPEG + SHARED_DESC= Build shared libraries (other ports may depend on this) -SPEEXAEC_DESC= Speex Acoustic Echo Canceller/AEC WEBRTC_DESC= Build libwebrtc +KQUEUE_DESC= Use kqueue ioqueue on macos/BSD (experimental) +UPNP_DESC= Disable UPnP (default: not disabled) +PJSUA_DESC= Command line SIP agent OPTIONS_SUB= yes -AMR_CONFIGURE_WITH= opencore-amr -AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ - libvo-amrwbenc.so:audio/vo-amrwbenc DEBUG_CFLAGS= -DNDEBUG=0 DEBUG_CFLAGS_OFF= -DNDEBUG=1 -EXTSRTP_CONFIGURE_WITH= external-srtp -EXTSRTP_CONFLICTS_OFF= libsrtp libsrtp2 -EXTSRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 -FFMPEG_CONFIGURE_ENABLE= ffmpeg -FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg -G711_CONFIGURE_ENABLE= g711-codec -G722_CONFIGURE_ENABLE= g722-codec -G7221_CONFIGURE_ENABLE= g7221-codec -GSM_CONFIGURE_ENABLE= gsm-codec -GSM_CONFIGURE_ON= --with-external-gsm -GSM_LIB_DEPENDS= libgsm.so:audio/gsm -ILBC_CONFIGURE_ENABLE= ilbc-codec -IPV6_CFLAGS= -DPJ_HAS_IPV6=1 -IPV6_CFLAGS_OFF= -DPJ_HAS_IPV6=0 -L16_CONFIGURE_ENABLE= l16-codec -OPENH264_CONFIGURE_ENABLE= openh264 -OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 -OPUS_CONFIGURE_ENABLE= opus -OPUS_LIB_DEPENDS= libopus.so:audio/opus -PJSUA2_CONFIGURE_ENABLE= pjsua2 -RESAMPLE_CONFIGURE_ENABLE= resample -RESAMPLEDLL_CONFIGURE_ENABLE= resample-dll -SAMPLERATE_CONFIGURE_ENABLE= libsamplerate -SAMPLERATE_LIB_DEPENDS= libsamplerate.so:audio/libsamplerate -SDL_CONFIGURE_ENABLE= sdl -SDL_USES= sdl -SDL_USE= SDL=sdl SHARED_CONFIGURE_ENABLE= shared -SOUND_CONFIGURE_ENABLE= sound -SPEEXAEC_CONFIGURE_ENABLE= speex-aec -SPEEX_CONFIGURE_ENABLE= speex-codec -SPEEX_CONFIGURE_ON= --with-external-speex -SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ - libspeexdsp.so:audio/speexdsp -V4L_BUILD_DEPENDS= v4l_compat>=0:multimedia/v4l_compat -V4L_CONFIGURE_ENABLE= v4l2 -V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l -VIDEO_CONFIGURE_ENABLE= video -VPX_CONFIGURE_ENABLE= vpx -VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx +OPUS_CONFIGURE_OFF= --disable-opus +OPUS_LIB_DEPENDS= libopus.so:audio/opus + WEBRTC_CONFIGURE_OFF= --disable-libwebrtc +VIDEO_CONFIGURE_ENABLE= video + +UPNP_CONFIGURE_OFF= --disable-upnp +UPNP_LIB_DEPENDS= libupnp.so:devel/upnp + +FFMPEG_CONFIGURE_OFF= --disable-ffmpeg +FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ @@ -103,6 +58,10 @@ post-patch: @${CP} ${FILESDIR}/config_site.h \ ${WRKSRC}/pjlib/include/pj/config_site.h +pre-build: + @${MAKE_CMD} -C ${WRKSRC} dep + @${MAKE_CMD} -C ${WRKSRC} clean + post-install-SHARED-on: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so @@ -115,3 +74,13 @@ post-install-PJSUA-on: ${STAGEDIR}${PREFIX}/bin/pjsystest .include + +.include + +.if ${PORT_OPTIONS:MKQUEUE} +CONFIGURE_ARGS+= --enable-kqueue +.else +# do nothing, because giving --disable-kqueue would enable kqueue +# fixed in: https://github.com/pjsip/pjproject/commit/c36802585ddefb3ca477d1f6d773d179510c5412 +# once this lands > 2.14 this can go away +.endif diff --git a/net/pjsip/distinfo b/net/pjsip/distinfo index bb2fe1cbc309..1f0187c7aa14 100644 --- a/net/pjsip/distinfo +++ b/net/pjsip/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1688848530 -SHA256 (pjsip-pjproject-2.13.1_GH0.tar.gz) = 32a5ab5bfbb9752cb6a46627e4c410e61939c8dbbd833ac858473cfbd9fb9d7d -SIZE (pjsip-pjproject-2.13.1_GH0.tar.gz) = 9746437 +TIMESTAMP = 1709547690 +SHA256 (pjsip-pjproject-2.14_GH0.tar.gz) = 5805c1171acab4af9684d7ad096dcb92f71fc42809852144e97e1413468c9981 +SIZE (pjsip-pjproject-2.14_GH0.tar.gz) = 10320713 diff --git a/net/pjsip/files/config_site.h b/net/pjsip/files/config_site.h index a712075f513f..8e6369f3f061 100644 --- a/net/pjsip/files/config_site.h +++ b/net/pjsip/files/config_site.h @@ -1,38 +1 @@ -/* - * Custom options imported from asterisk provided customizations. - */ - -#include - -#define PJ_MAX_HOSTNAME (256) -#define PJSIP_MAX_URL_SIZE (512) -#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE) - -#define PJ_SCANNER_USE_BITWISE 0 - -#define PJ_LOG_MAX_LEVEL 6 - -#define PJSIP_MAX_TSX_COUNT ((64*1024)-1) -#define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1) -#define PJSIP_UDP_SO_SNDBUF_SIZE (512*1024) -#define PJSIP_UDP_SO_RCVBUF_SIZE (512*1024) - -#define PJSIP_MAX_PKT_LEN 32000 - -/* Defaults too low for WebRTC */ -#define PJ_ICE_MAX_CAND 32 -#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND) - -/* Increase limits to allow more formats */ -#define PJMEDIA_MAX_SDP_FMT 64 -#define PJMEDIA_MAX_SDP_BANDW 4 -#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4) -#define PJMEDIA_MAX_SDP_MEDIA 16 - -/* - * Turn off the periodic sending of CRLNCRLN. Default is on (90 seconds), - * which conflicts with the global section's keep_alive_interval option in - * pjsip.conf in asterisk. - */ -#define PJSIP_TCP_KEEP_ALIVE_INTERVAL 0 -#define PJSIP_TLS_KEEP_ALIVE_INTERVAL 0 +#include diff --git a/net/pjsip/files/patch-aconfigure b/net/pjsip/files/patch-aconfigure index 06240c90982d..d2e6f97a8dca 100644 --- a/net/pjsip/files/patch-aconfigure +++ b/net/pjsip/files/patch-aconfigure @@ -1,15 +1,6 @@ ---- aconfigure.orig 2022-11-24 05:24:24 UTC +--- aconfigure.orig 2023-11-01 09:37:28 UTC +++ aconfigure -@@ -8059,7 +8059,7 @@ else $as_nop - FFMPEG_PREFIX=$with_ffmpeg - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using ffmpeg prefix... $FFMPEG_PREFIX" >&5 - printf "%s\n" "Using ffmpeg prefix... $FFMPEG_PREFIX" >&6; } -- export PKG_CONFIG_PATH=$FFMPEG_PREFIX/lib/pkgconfig -+ export PKG_CONFIG_PATH=$FFMPEG_PREFIX/libdata/pkgconfig - fi - - for ac_prog in pkg-config "python pkgconfig.py" -@@ -10129,7 +10129,7 @@ printf "%s\n" "Checking if libwebrtc is disabled...no" +@@ -10177,7 +10177,7 @@ printf "%s\n" "Checking if libwebrtc is disabled...no" ac_webrtc_instset=sse2 ac_webrtc_cflags="-msse2" ;; diff --git a/net/pjsip/files/patch-pjmedia_build_os-auto.mak.in b/net/pjsip/files/patch-pjmedia_build_os-auto.mak.in deleted file mode 100644 index 371f9b5a8d48..000000000000 --- a/net/pjsip/files/patch-pjmedia_build_os-auto.mak.in +++ /dev/null @@ -1,52 +0,0 @@ ---- pjmedia/build/os-auto.mak.in.orig 2022-11-24 05:24:24 UTC -+++ pjmedia/build/os-auto.mak.in -@@ -242,49 +242,7 @@ endif - endif - - --# --# MacOSX specific --# --ifneq ($(findstring coreaudio,$(AC_PJMEDIA_SND)),) --export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_COREAUDIO=1 \ -- -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 \ -- -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 --endif -- --# --# Unix specific --# --ifneq ($(findstring alsa,$(AC_PJMEDIA_SND)),) --export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_ALSA=1 \ -- -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 \ -- -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 --endif -- --# --# Windows specific --# --ifneq ($(findstring win32,$(AC_PJMEDIA_SND)),) --export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_WMME=1 \ -- -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 --else - export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 --endif -- --# --# Null sound device --# --ifeq ($(AC_PJMEDIA_SND),null) --export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 \ -- -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 --endif -- --# --# External sound device --# --ifeq ($(AC_PJMEDIA_SND),external) --export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_PORTAUDIO=0 \ -- -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 --endif - - # - # QT video device diff --git a/net/pjsip/files/patch-pkgconfig.py b/net/pjsip/files/patch-pkgconfig.py index 257688db2391..df4412c2b2db 100644 --- a/net/pjsip/files/patch-pkgconfig.py +++ b/net/pjsip/files/patch-pkgconfig.py @@ -1,4 +1,4 @@ ---- pkgconfig.py.orig 2012-10-04 07:36:39 UTC +--- pkgconfig.py.orig 2024-03-04 22:10:19 UTC +++ pkgconfig.py @@ -117,7 +117,7 @@ if __name__ == "__main__": # Fix search path diff --git a/net/pjsip/files/patch-third__party_build_os-auto.mak.in b/net/pjsip/files/patch-third__party_build_os-auto.mak.in index 6db8ff765d52..1264143fe321 100644 --- a/net/pjsip/files/patch-third__party_build_os-auto.mak.in +++ b/net/pjsip/files/patch-third__party_build_os-auto.mak.in @@ -1,6 +1,6 @@ ---- third_party/build/os-auto.mak.in.orig 2017-09-22 02:42:22 UTC +--- third_party/build/os-auto.mak.in.orig 2024-03-08 17:33:31 UTC +++ third_party/build/os-auto.mak.in -@@ -112,8 +112,7 @@ else ifneq ($(findstring mips,@ac_webrtc_instset@),) +@@ -118,8 +118,7 @@ else # Generic fixed point else # Generic fixed point WEBRTC_SRC = \ modules/audio_processing/aecm/aecm_core_c.o \ diff --git a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__core.c b/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__core.c deleted file mode 100644 index bf7210a54510..000000000000 --- a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__core.c +++ /dev/null @@ -1,11 +0,0 @@ ---- third_party/webrtc/src/webrtc/modules/audio_processing/aec/aec_core.c.orig 2016-08-29 08:44:54 UTC -+++ third_party/webrtc/src/webrtc/modules/audio_processing/aec/aec_core.c -@@ -1478,7 +1478,7 @@ AecCore* WebRtcAec_CreateAec() { - WebRtcAec_ComfortNoise = ComfortNoise; - WebRtcAec_SubbandCoherence = SubbandCoherence; - --#if defined(WEBRTC_ARCH_X86_FAMILY) -+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__) - if (WebRtc_GetCPUInfo(kSSE2)) { - WebRtcAec_InitAec_SSE2(); - } diff --git a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__rdft.c b/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__rdft.c deleted file mode 100644 index 1a3fd3e56331..000000000000 --- a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_modules_audio__processing_aec_aec__rdft.c +++ /dev/null @@ -1,11 +0,0 @@ ---- third_party/webrtc/src/webrtc/modules/audio_processing/aec/aec_rdft.c.orig 2016-08-25 01:36:33 UTC -+++ third_party/webrtc/src/webrtc/modules/audio_processing/aec/aec_rdft.c -@@ -571,7 +571,7 @@ void aec_rdft_init(void) { - cftfsub_128 = cftfsub_128_C; - cftbsub_128 = cftbsub_128_C; - bitrv2_128 = bitrv2_128_C; --#if defined(WEBRTC_ARCH_X86_FAMILY) -+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__) - if (WebRtc_GetCPUInfo(kSSE2)) { - aec_rdft_init_sse2(); - } diff --git a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_typedefs.h b/net/pjsip/files/patch-third__party_webrtc_src_webrtc_typedefs.h deleted file mode 100644 index 03e4a7fa921f..000000000000 --- a/net/pjsip/files/patch-third__party_webrtc_src_webrtc_typedefs.h +++ /dev/null @@ -1,23 +0,0 @@ ---- third_party/webrtc/src/webrtc/typedefs.h.orig 2017-01-07 23:05:15 UTC -+++ third_party/webrtc/src/webrtc/typedefs.h -@@ -48,7 +48,19 @@ - #define WEBRTC_ARCH_32_BITS - #define WEBRTC_ARCH_LITTLE_ENDIAN - #else --#error Please add support for your architecture in typedefs.h -+/* instead of failing, use typical unix defines... */ -+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -+#define WEBRTC_ARCH_LITTLE_ENDIAN -+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -+#define WEBRTC_ARCH_BIG_ENDIAN -+#else -+#error __BYTE_ORDER__ is not defined -+#endif -+#if defined(__LP64__) -+#define WEBRTC_ARCH_64_BITS -+#else -+#define WEBRTC_ARCH_32_BITS -+#endif - #endif - - #if !(defined(WEBRTC_ARCH_LITTLE_ENDIAN) ^ defined(WEBRTC_ARCH_BIG_ENDIAN)) diff --git a/net/pjsip/pkg-plist b/net/pjsip/pkg-plist index b52c395da3b4..8ecfca2ed806 100644 --- a/net/pjsip/pkg-plist +++ b/net/pjsip/pkg-plist @@ -19,6 +19,7 @@ include/pj/array.h include/pj/assert.h include/pj/compat/assert.h include/pj/compat/cc_armcc.h +include/pj/compat/cc_clang.h include/pj/compat/cc_codew.h include/pj/compat/cc_gcc.h include/pj/compat/cc_gcce.h @@ -152,13 +153,13 @@ include/pjmedia-codec/ipp_codecs.h include/pjmedia-codec/l16.h include/pjmedia-codec/opencore_amr.h include/pjmedia-codec/openh264.h -%%OPUS%%include/pjmedia-codec/opus.h +include/pjmedia-codec/opus.h include/pjmedia-codec/passthrough.h include/pjmedia-codec/silk.h include/pjmedia-codec/speex.h include/pjmedia-codec/types.h include/pjmedia-codec/vid_toolbox.h -%%VPX%%include/pjmedia-codec/vpx.h +include/pjmedia-codec/vpx.h include/pjmedia-codec/vpx_packetizer.h include/pjmedia-videodev/avi_dev.h include/pjmedia-videodev/config.h @@ -303,24 +304,27 @@ include/pjsip_ua.h include/pjsua-lib/pjsua.h include/pjsua-lib/pjsua_internal.h include/pjsua.h -%%PJSUA2%%include/pjsua2.hpp -%%PJSUA2%%include/pjsua2/account.hpp -%%PJSUA2%%include/pjsua2/call.hpp -%%PJSUA2%%include/pjsua2/config.hpp -%%PJSUA2%%include/pjsua2/doxygen.hpp -%%PJSUA2%%include/pjsua2/endpoint.hpp -%%PJSUA2%%include/pjsua2/json.hpp -%%PJSUA2%%include/pjsua2/media.hpp -%%PJSUA2%%include/pjsua2/persistent.hpp -%%PJSUA2%%include/pjsua2/presence.hpp -%%PJSUA2%%include/pjsua2/siptypes.hpp -%%PJSUA2%%include/pjsua2/types.hpp -%%G7221%%lib/libg7221codec-%%CONFIGURE_TARGET%%.a -%%SHARED%%%%G7221%%lib/libg7221codec.so -%%SHARED%%%%G7221%%lib/libg7221codec.so.2 -%%ILBC%%lib/libilbccodec-%%CONFIGURE_TARGET%%.a -%%SHARED%%%%ILBC%%lib/libilbccodec.so -%%SHARED%%%%ILBC%%lib/libilbccodec.so.2 +include/pjsua2.hpp +include/pjsua2/account.hpp +include/pjsua2/call.hpp +include/pjsua2/config.hpp +include/pjsua2/doxygen.hpp +include/pjsua2/endpoint.hpp +include/pjsua2/json.hpp +include/pjsua2/media.hpp +include/pjsua2/persistent.hpp +include/pjsua2/presence.hpp +include/pjsua2/siptypes.hpp +include/pjsua2/types.hpp +lib/libg7221codec-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libg7221codec.so +%%SHARED%%lib/libg7221codec.so.2 +lib/libgsmcodec-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libgsmcodec.so +%%SHARED%%lib/libgsmcodec.so.2 +lib/libilbccodec-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libilbccodec.so +%%SHARED%%lib/libilbccodec.so.2 lib/libpj-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpj.so %%SHARED%%lib/libpj.so.2 @@ -354,19 +358,22 @@ lib/libpjsip-ua-%%CONFIGURE_TARGET%%.a lib/libpjsua-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpjsua.so %%SHARED%%lib/libpjsua.so.2 -%%PJSUA2%%lib/libpjsua2-%%CONFIGURE_TARGET%%.a -%%PJSUA2%%%%SHARED%%lib/libpjsua2.so -%%PJSUA2%%%%SHARED%%lib/libpjsua2.so.2 -%%NO_SAMPLERATE%%%%RESAMPLE%%lib/libresample-%%CONFIGURE_TARGET%%.a -%%NO_SAMPLERATE%%%%RESAMPLE%%%%RESAMPLEDLL%%lib/libresample.so -%%NO_SAMPLERATE%%%%RESAMPLE%%%%RESAMPLEDLL%%lib/libresample.so.2 -%%NO_EXTSRTP%%lib/libsrtp-%%CONFIGURE_TARGET%%.a -%%NO_EXTSRTP%%%%SHARED%%lib/libsrtp.so -%%NO_EXTSRTP%%%%SHARED%%lib/libsrtp.so.2 +lib/libpjsua2-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libpjsua2.so +%%SHARED%%lib/libpjsua2.so.2 +lib/libresample-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libresample.so +%%SHARED%%lib/libresample.so.2 +lib/libspeex-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libspeex.so +%%SHARED%%lib/libspeex.so.2 +lib/libsrtp-%%CONFIGURE_TARGET%%.a +%%SHARED%%lib/libsrtp.so +%%SHARED%%lib/libsrtp.so.2 %%WEBRTC%%lib/libwebrtc-%%CONFIGURE_TARGET%%.a %%WEBRTC%%%%SHARED%%lib/libwebrtc.so %%WEBRTC%%%%SHARED%%lib/libwebrtc.so.2 -%%SHARED%%%%VIDEO%%lib/libyuv.so -%%SHARED%%%%VIDEO%%lib/libyuv.so.2 %%VIDEO%%lib/libyuv-%%CONFIGURE_TARGET%%.a +%%VIDEO%%%%SHARED%%lib/libyuv.so +%%VIDEO%%%%SHARED%%lib/libyuv.so.2 libdata/pkgconfig/libpjproject.pc -- 2.44.0 From c5a1611fbba30f9986e6999216273746cf34d0eb Mon Sep 17 00:00:00 2001 From: Oliver Epper Date: Tue, 12 Mar 2024 09:02:35 +0100 Subject: [PATCH 2/4] improvements as suggested by dizzy KQUEUE_CONFIGURE_ON GSM codec more codecs and unbundled speex AMR codec support G7221 and iLBC libsrtp less bundled libs libresample options sorted options sorted make amr default option fix for missing dependency resample and resample-dll as options --- net/pjsip/Makefile | 123 +++++++++++++++++++++++++++++--------------- net/pjsip/pkg-plist | 27 ++++------ 2 files changed, 91 insertions(+), 59 deletions(-) diff --git a/net/pjsip/Makefile b/net/pjsip/Makefile index 7ff2aef965aa..5ac0c58d940c 100644 --- a/net/pjsip/Makefile +++ b/net/pjsip/Makefile @@ -1,56 +1,107 @@ -PORTNAME= pjsip -DISTVERSION= 2.14 -PORTREVISION= 1 -CATEGORIES= net +PORTNAME= pjsip +DISTVERSION= 2.14 +PORTREVISION= 1 +CATEGORIES= net -MAINTAINER= oliver.epper@gmail.com -COMMENT= Multimedia communication library written in C language -WWW= https://www.pjsip.org/ +MAINTAINER= oliver.epper@gmail.com +COMMENT= Multimedia communication library written in C language +WWW= https://www.pjsip.org/ -LICENSE= GPLv2+ -LICENSE_FILE= ${WRKSRC}/COPYING +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING -LIB_DEPENDS= libportaudio.so:audio/portaudio +LIB_DEPENDS= libportaudio.so:audio/portaudio -USES= cpe gmake localbase ssl -USE_LDCONFIG= yes +USES= cpe gmake localbase ssl pkgconfig +USE_LDCONFIG= yes -USE_GITHUB= yes -GH_PROJECT= pjproject +USE_GITHUB= yes +GH_PROJECT= pjproject -CPE_VENDOR= teluu +CPE_VENDOR= teluu -GNU_CONFIGURE= yes -CONFIGURE_ARGS= --with-external-pa +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --with-external-pa -PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" +PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" -OPTIONS_DEFINE= SHARED OPUS WEBRTC VIDEO KQUEUE UPNP PJSUA FFMPEG DEBUG +OPTIONS_DEFINE= AMR DEBUG FFMPEG G711 G722 G7221 GSM ILBC KQUEUE L16 OPUS PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC -OPTIONS_DEFAULT=SHARED OPUS WEBRTC VIDEO UPNP FFMPEG +OPTIONS_DEFAULT= AMR FFMPEG G711 G722 G7221 GSM ILBC L16 OPUS RESAMPLE SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC -SHARED_DESC= Build shared libraries (other ports may depend on this) -WEBRTC_DESC= Build libwebrtc -KQUEUE_DESC= Use kqueue ioqueue on macos/BSD (experimental) -UPNP_DESC= Disable UPnP (default: not disabled) -PJSUA_DESC= Command line SIP agent +OPTIONS_SUB= yes -OPTIONS_SUB= yes +G711_DESC= G.711 codec support +G7221_DESC= G.722.1 codec support +G722_DESC= G.722 codec support +ILBC_DESC= iLBC codec support +KQUEUE_DESC= Use kqueue ioqueue on macos/BSD (experimental) +L16_DESC= Linear/L16 codec support +PJSUA_DESC= Command line SIP agent +RESAMPLE_DESC= Enable resampling implementations +RESAMPLEDLL_DESC= Build libresample as a shared library +SHARED_DESC= Build shared libraries (other ports may depend on this) +SPEEXAEC_DESC= Speex Acoustic Echo Canceller/AEC +SRTP_DESC= Secure Real-Time Transport Protocol – SRTP support +WEBRTC_DESC= Build libwebrtc + +AMR_CONFIGURE_WITH= opencore-amr +AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ + libvo-amrwbenc.so:audio/vo-amrwbenc DEBUG_CFLAGS= -DNDEBUG=0 DEBUG_CFLAGS_OFF= -DNDEBUG=1 -SHARED_CONFIGURE_ENABLE= shared + +FFMPEG_CONFIGURE_OFF= --disable-ffmpeg +FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg + +G711_CONFIGURE_ENABLE= g711-codec + +G7221_CONFIGURE_ENABLE= g7221-codec + +G722_CONFIGURE_ENABLE= g722-codec + +GSM_CONFIGURE_ENABLE= gsm-codec +GSM_CONFIGURE_ON= --with-external-gsm +GSM_LIB_DEPENDS= libgsm.so:audio/gsm + +ILBC_CONFIGURE_ENABLE= ilbc-codec + +# This can become KQUEUE_CONFIGURE_ENABLE once +# https://github.com/pjsip/pjproject/commit/c36802585ddefb3ca477d1f6d773d179510c5412 +# is included in the next release (> 2.14). +KQUEUE_CONFIGURE_ON= --enable-kqueue + +L16_CONFIGURE_ENABLE= l16-codec + OPUS_CONFIGURE_OFF= --disable-opus OPUS_LIB_DEPENDS= libopus.so:audio/opus -WEBRTC_CONFIGURE_OFF= --disable-libwebrtc -VIDEO_CONFIGURE_ENABLE= video +RESAMPLE_CONFIGURE_ENABLE= resample +RESAMPLEDLL_CONFIGURE_ENABLE= resample-dll + +SAMPLERATE_CONFIGURE_ENABLE= libsamplerate +SAMPLERATE_LIB_DEPENDS= libsamplerate.so:audio/libsamplerate + +SHARED_CONFIGURE_ENABLE= shared + +SPEEXAEC_CONFIGURE_ENABLE= speex-aec + +SPEEX_CONFIGURE_ENABLE= speex-codec +SPEEX_CONFIGURE_ON= --with-external-speex +SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ + libspeexdsp.so:audio/speexdsp + +SRTP_CONFIGURE_ENABLE= libsrtp +SRTP_CONFIGURE_ON= --with-external-srtp +SRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 UPNP_CONFIGURE_OFF= --disable-upnp UPNP_LIB_DEPENDS= libupnp.so:devel/upnp -FFMPEG_CONFIGURE_OFF= --disable-ffmpeg -FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg +VIDEO_CONFIGURE_ENABLE= video + +WEBRTC_CONFIGURE_OFF= --disable-libwebrtc post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ @@ -74,13 +125,3 @@ post-install-PJSUA-on: ${STAGEDIR}${PREFIX}/bin/pjsystest .include - -.include - -.if ${PORT_OPTIONS:MKQUEUE} -CONFIGURE_ARGS+= --enable-kqueue -.else -# do nothing, because giving --disable-kqueue would enable kqueue -# fixed in: https://github.com/pjsip/pjproject/commit/c36802585ddefb3ca477d1f6d773d179510c5412 -# once this lands > 2.14 this can go away -.endif diff --git a/net/pjsip/pkg-plist b/net/pjsip/pkg-plist index 8ecfca2ed806..9b9608463407 100644 --- a/net/pjsip/pkg-plist +++ b/net/pjsip/pkg-plist @@ -316,15 +316,12 @@ include/pjsua2/persistent.hpp include/pjsua2/presence.hpp include/pjsua2/siptypes.hpp include/pjsua2/types.hpp -lib/libg7221codec-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libg7221codec.so -%%SHARED%%lib/libg7221codec.so.2 -lib/libgsmcodec-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libgsmcodec.so -%%SHARED%%lib/libgsmcodec.so.2 -lib/libilbccodec-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libilbccodec.so -%%SHARED%%lib/libilbccodec.so.2 +%%G7221%%lib/libg7221codec-%%CONFIGURE_TARGET%%.a +%%G7221%%%%SHARED%%lib/libg7221codec.so +%%G7221%%%%SHARED%%lib/libg7221codec.so.2 +%%ILBC%%lib/libilbccodec-%%CONFIGURE_TARGET%%.a +%%ILBC%%%%SHARED%%lib/libilbccodec.so +%%ILBC%%%%SHARED%%lib/libilbccodec.so.2 lib/libpj-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpj.so %%SHARED%%lib/libpj.so.2 @@ -361,15 +358,9 @@ lib/libpjsua-%%CONFIGURE_TARGET%%.a lib/libpjsua2-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpjsua2.so %%SHARED%%lib/libpjsua2.so.2 -lib/libresample-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libresample.so -%%SHARED%%lib/libresample.so.2 -lib/libspeex-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libspeex.so -%%SHARED%%lib/libspeex.so.2 -lib/libsrtp-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libsrtp.so -%%SHARED%%lib/libsrtp.so.2 +%%NO_SAMPLERATE%%lib/libresample-%%CONFIGURE_TARGET%%.a +%%NO_SAMPLERATE%%%%SHARED%%lib/libresample.so +%%NO_SAMPLERATE%%%%SHARED%%lib/libresample.so.2 %%WEBRTC%%lib/libwebrtc-%%CONFIGURE_TARGET%%.a %%WEBRTC%%%%SHARED%%lib/libwebrtc.so %%WEBRTC%%%%SHARED%%lib/libwebrtc.so.2 -- 2.44.0 From c8a08c167eade9ef67b49facfacf0eb42aeddee4 Mon Sep 17 00:00:00 2001 From: Oliver Epper Date: Mon, 18 Mar 2024 22:26:43 +0100 Subject: [PATCH 3/4] Indentation corrected by Daniel (dizzy) --- net/pjsip/Makefile | 108 ++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/net/pjsip/Makefile b/net/pjsip/Makefile index 5ac0c58d940c..1cfea53578c7 100644 --- a/net/pjsip/Makefile +++ b/net/pjsip/Makefile @@ -1,35 +1,35 @@ -PORTNAME= pjsip -DISTVERSION= 2.14 -PORTREVISION= 1 -CATEGORIES= net +PORTNAME= pjsip +DISTVERSION= 2.14 +PORTREVISION= 1 +CATEGORIES= net -MAINTAINER= oliver.epper@gmail.com -COMMENT= Multimedia communication library written in C language -WWW= https://www.pjsip.org/ +MAINTAINER= oliver.epper@gmail.com +COMMENT= Multimedia communication library written in C language +WWW= https://www.pjsip.org/ -LICENSE= GPLv2+ -LICENSE_FILE= ${WRKSRC}/COPYING +LICENSE= GPLv2+ +LICENSE_FILE= ${WRKSRC}/COPYING -LIB_DEPENDS= libportaudio.so:audio/portaudio +LIB_DEPENDS= libportaudio.so:audio/portaudio -USES= cpe gmake localbase ssl pkgconfig -USE_LDCONFIG= yes +USES= cpe gmake localbase ssl pkgconfig +CPE_VENDOR= teluu +USE_LDCONFIG= yes -USE_GITHUB= yes -GH_PROJECT= pjproject +USE_GITHUB= yes +GH_PROJECT= pjproject -CPE_VENDOR= teluu +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --with-external-pa -GNU_CONFIGURE= yes -CONFIGURE_ARGS= --with-external-pa +PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" -PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" - -OPTIONS_DEFINE= AMR DEBUG FFMPEG G711 G722 G7221 GSM ILBC KQUEUE L16 OPUS PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC - -OPTIONS_DEFAULT= AMR FFMPEG G711 G722 G7221 GSM ILBC L16 OPUS RESAMPLE SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC - -OPTIONS_SUB= yes +OPTIONS_DEFINE= AMR DEBUG FFMPEG G711 G722 G7221 GSM ILBC KQUEUE L16 \ + OPUS PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SHARED \ + SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC +OPTIONS_DEFAULT=AMR FFMPEG G711 G722 G7221 GSM ILBC L16 OPUS RESAMPLE \ + SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC +OPTIONS_SUB= yes G711_DESC= G.711 codec support G7221_DESC= G.722.1 codec support @@ -45,63 +45,63 @@ SPEEXAEC_DESC= Speex Acoustic Echo Canceller/AEC SRTP_DESC= Secure Real-Time Transport Protocol – SRTP support WEBRTC_DESC= Build libwebrtc -AMR_CONFIGURE_WITH= opencore-amr -AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ - libvo-amrwbenc.so:audio/vo-amrwbenc +AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ + libvo-amrwbenc.so:audio/vo-amrwbenc +AMR_CONFIGURE_WITH= opencore-amr -DEBUG_CFLAGS= -DNDEBUG=0 -DEBUG_CFLAGS_OFF= -DNDEBUG=1 +DEBUG_CFLAGS= -DNDEBUG=0 +DEBUG_CFLAGS_OFF= -DNDEBUG=1 -FFMPEG_CONFIGURE_OFF= --disable-ffmpeg -FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg +FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg +FFMPEG_CONFIGURE_OFF= --disable-ffmpeg -G711_CONFIGURE_ENABLE= g711-codec +G711_CONFIGURE_ENABLE= g711-codec -G7221_CONFIGURE_ENABLE= g7221-codec +G7221_CONFIGURE_ENABLE= g7221-codec -G722_CONFIGURE_ENABLE= g722-codec +G722_CONFIGURE_ENABLE= g722-codec -GSM_CONFIGURE_ENABLE= gsm-codec -GSM_CONFIGURE_ON= --with-external-gsm -GSM_LIB_DEPENDS= libgsm.so:audio/gsm +GSM_CONFIGURE_ENABLE= gsm-codec +GSM_CONFIGURE_ON= --with-external-gsm +GSM_LIB_DEPENDS= libgsm.so:audio/gsm -ILBC_CONFIGURE_ENABLE= ilbc-codec +ILBC_CONFIGURE_ENABLE= ilbc-codec # This can become KQUEUE_CONFIGURE_ENABLE once # https://github.com/pjsip/pjproject/commit/c36802585ddefb3ca477d1f6d773d179510c5412 # is included in the next release (> 2.14). -KQUEUE_CONFIGURE_ON= --enable-kqueue +KQUEUE_CONFIGURE_ON= --enable-kqueue -L16_CONFIGURE_ENABLE= l16-codec +L16_CONFIGURE_ENABLE= l16-codec -OPUS_CONFIGURE_OFF= --disable-opus -OPUS_LIB_DEPENDS= libopus.so:audio/opus +OPUS_LIB_DEPENDS= libopus.so:audio/opus +OPUS_CONFIGURE_OFF= --disable-opus RESAMPLE_CONFIGURE_ENABLE= resample RESAMPLEDLL_CONFIGURE_ENABLE= resample-dll -SAMPLERATE_CONFIGURE_ENABLE= libsamplerate SAMPLERATE_LIB_DEPENDS= libsamplerate.so:audio/libsamplerate +SAMPLERATE_CONFIGURE_ENABLE= libsamplerate SHARED_CONFIGURE_ENABLE= shared SPEEXAEC_CONFIGURE_ENABLE= speex-aec -SPEEX_CONFIGURE_ENABLE= speex-codec -SPEEX_CONFIGURE_ON= --with-external-speex -SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ - libspeexdsp.so:audio/speexdsp +SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ + libspeexdsp.so:audio/speexdsp +SPEEX_CONFIGURE_ENABLE= speex-codec +SPEEX_CONFIGURE_ON= --with-external-speex -SRTP_CONFIGURE_ENABLE= libsrtp -SRTP_CONFIGURE_ON= --with-external-srtp -SRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 +SRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 +SRTP_CONFIGURE_ENABLE= libsrtp +SRTP_CONFIGURE_ON= --with-external-srtp -UPNP_CONFIGURE_OFF= --disable-upnp -UPNP_LIB_DEPENDS= libupnp.so:devel/upnp +UPNP_LIB_DEPENDS= libupnp.so:devel/upnp +UPNP_CONFIGURE_OFF= --disable-upnp -VIDEO_CONFIGURE_ENABLE= video +VIDEO_CONFIGURE_ENABLE= video -WEBRTC_CONFIGURE_OFF= --disable-libwebrtc +WEBRTC_CONFIGURE_OFF= --disable-libwebrtc post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ -- 2.44.0 From 2245bc4b1eb2e03671ef48d05ea534c0cea4ca87 Mon Sep 17 00:00:00 2001 From: Oliver Epper Date: Mon, 18 Mar 2024 23:03:11 +0100 Subject: [PATCH 4/4] more improvements added a group for codecs and additional speex settings introduced option dependencies and conflicts implemented a logic to reflect the chosen options in the pkg-plist added options for codecs and settings version 2.14.1 install binaries and samples --- net/pjsip/Makefile | 144 ++++++++++++++++++++++++---------- net/pjsip/distinfo | 6 +- net/pjsip/files/config_site.h | 1 - net/pjsip/pkg-plist | 63 +++++++++++---- 4 files changed, 152 insertions(+), 62 deletions(-) diff --git a/net/pjsip/Makefile b/net/pjsip/Makefile index 1cfea53578c7..879c978e79cc 100644 --- a/net/pjsip/Makefile +++ b/net/pjsip/Makefile @@ -1,5 +1,5 @@ PORTNAME= pjsip -DISTVERSION= 2.14 +DISTVERSION= 2.14.1 PORTREVISION= 1 CATEGORIES= net @@ -10,8 +10,6 @@ WWW= https://www.pjsip.org/ LICENSE= GPLv2+ LICENSE_FILE= ${WRKSRC}/COPYING -LIB_DEPENDS= libportaudio.so:audio/portaudio - USES= cpe gmake localbase ssl pkgconfig CPE_VENDOR= teluu USE_LDCONFIG= yes @@ -20,34 +18,44 @@ USE_GITHUB= yes GH_PROJECT= pjproject GNU_CONFIGURE= yes -CONFIGURE_ARGS= --with-external-pa PLIST_SUB= CONFIGURE_TARGET="${CONFIGURE_TARGET}" -OPTIONS_DEFINE= AMR DEBUG FFMPEG G711 G722 G7221 GSM ILBC KQUEUE L16 \ - OPUS PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SHARED \ - SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC -OPTIONS_DEFAULT=AMR FFMPEG G711 G722 G7221 GSM ILBC L16 OPUS RESAMPLE \ - SHARED SPEEX SPEEXAEC SRTP UPNP VIDEO WEBRTC +OPTIONS_DEFINE= APPS DEBUG FFMPEG KQUEUE PA PJSUA2 RESAMPLE RESAMPLEDLL \ + SAMPLERATE SHARED SOUND SRTP UPNP VIDEO WEBRTC YUV +OPTIONS_DEFAULT=G711 G722 KQUEUE OPUS PA PJSUA2 RESAMPLE SHARED \ + SOUND SPEEX SRTP VIDEO WEBRTC YUV +OPTIONS_GROUP= CODECS SPEEXG +OPTIONS_GROUP_CODECS= AMR BCG729 G711 G722 G7221 GSM ILBC L16 OPUS SILK \ + SPEEX +OPTIONS_GROUP_SPEEXG= SPEEXAEC SPEEXRESAMPLE OPTIONS_SUB= yes +BCG729_DESC= bcg729 codec support +CODECS_DESC= Codecs G711_DESC= G.711 codec support G7221_DESC= G.722.1 codec support G722_DESC= G.722 codec support ILBC_DESC= iLBC codec support KQUEUE_DESC= Use kqueue ioqueue on macos/BSD (experimental) L16_DESC= Linear/L16 codec support +PA_DESC= Use external PortAudio development files +PJSUA2_DESC= Enable pjsua2 library PJSUA_DESC= Command line SIP agent -RESAMPLE_DESC= Enable resampling implementations RESAMPLEDLL_DESC= Build libresample as a shared library +RESAMPLE_DESC= Enable resampling implementations +APPS_DESC= Install apps and samples from the pjsip-apps directory SHARED_DESC= Build shared libraries (other ports may depend on this) +SILK_DESC= Enable SILK support +SOUND_DESC= Include sound in the build SPEEXAEC_DESC= Speex Acoustic Echo Canceller/AEC +SPEEXG_DESC= Speex Echo Cancellation & Resampling +SPEEXRESAMPLE_DESC= Enable Speex resample SRTP_DESC= Secure Real-Time Transport Protocol – SRTP support -WEBRTC_DESC= Build libwebrtc +WEBRTC_DESC= Include libwebrtc in the build +YUV_DESC= Include libyuv in the build -AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ - libvo-amrwbenc.so:audio/vo-amrwbenc -AMR_CONFIGURE_WITH= opencore-amr +# general options DEBUG_CFLAGS= -DNDEBUG=0 DEBUG_CFLAGS_OFF= -DNDEBUG=1 @@ -55,42 +63,30 @@ DEBUG_CFLAGS_OFF= -DNDEBUG=1 FFMPEG_LIB_DEPENDS= libswresample.so:multimedia/ffmpeg FFMPEG_CONFIGURE_OFF= --disable-ffmpeg -G711_CONFIGURE_ENABLE= g711-codec - -G7221_CONFIGURE_ENABLE= g7221-codec - -G722_CONFIGURE_ENABLE= g722-codec - -GSM_CONFIGURE_ENABLE= gsm-codec -GSM_CONFIGURE_ON= --with-external-gsm -GSM_LIB_DEPENDS= libgsm.so:audio/gsm - -ILBC_CONFIGURE_ENABLE= ilbc-codec - # This can become KQUEUE_CONFIGURE_ENABLE once # https://github.com/pjsip/pjproject/commit/c36802585ddefb3ca477d1f6d773d179510c5412 -# is included in the next release (> 2.14). +# is included in the next release (> 2.14.1). KQUEUE_CONFIGURE_ON= --enable-kqueue -L16_CONFIGURE_ENABLE= l16-codec +PA_LIB_DEPENDS= libportaudio.so:audio/portaudio +PA_CONFIGURE_ON= --with-external-pa -OPUS_LIB_DEPENDS= libopus.so:audio/opus -OPUS_CONFIGURE_OFF= --disable-opus +PJSUA2_CONFIGURE_OFF= --disable-pjsua2 RESAMPLE_CONFIGURE_ENABLE= resample + RESAMPLEDLL_CONFIGURE_ENABLE= resample-dll +RESAMPLEDLL_IMPLIES= RESAMPLE -SAMPLERATE_LIB_DEPENDS= libsamplerate.so:audio/libsamplerate +SAMPLERATE_LIB_DEPENDS= libsamplerate.so:audio/libsamplerate SAMPLERATE_CONFIGURE_ENABLE= libsamplerate +SAMPLERATE_PREVENTS= RESAMPLE RESAMPLEDLL +SAMPLERATE_PREVENTS_MSG= SAMPLERATE will prevent RESAMPLE that is \ + implied by RESAMPLEDLL SHARED_CONFIGURE_ENABLE= shared -SPEEXAEC_CONFIGURE_ENABLE= speex-aec - -SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ - libspeexdsp.so:audio/speexdsp -SPEEX_CONFIGURE_ENABLE= speex-codec -SPEEX_CONFIGURE_ON= --with-external-speex +SOUND_CONFIGURE_ENABLE= sound SRTP_LIB_DEPENDS= libsrtp2.so:net/libsrtp2 SRTP_CONFIGURE_ENABLE= libsrtp @@ -103,6 +99,49 @@ VIDEO_CONFIGURE_ENABLE= video WEBRTC_CONFIGURE_OFF= --disable-libwebrtc +YUV_CONFIGURE_ENABLE= libyuv + +# Codecs +AMR_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr \ + libvo-amrwbenc.so:audio/vo-amrwbenc +AMR_CONFIGURE_WITH= opencore-amr + +BCG729_CONFIGURE_ENABLE=bcg729 + +G711_CONFIGURE_ENABLE= g711-codec + +G7221_CONFIGURE_ENABLE= g7221-codec + +G722_CONFIGURE_ENABLE= g722-codec + +GSM_LIB_DEPENDS= libgsm.so:audio/gsm +GSM_CONFIGURE_ENABLE= gsm-codec +GSM_CONFIGURE_ON= --with-external-gsm + +ILBC_CONFIGURE_ENABLE= ilbc-codec + +L16_CONFIGURE_ENABLE= l16-codec + +OPUS_LIB_DEPENDS= libopus.so:audio/opus +OPUS_CONFIGURE_OFF= --disable-opus + +SILK_CONFIGURE_ENABLE= silk + +SPEEX_LIB_DEPENDS= libspeex.so:audio/speex \ + libspeexdsp.so:audio/speexdsp +SPEEX_CONFIGURE_ENABLE= speex-codec +SPEEX_CONFIGURE_ON= --with-external-speex + +# Speex Echo Cancellation & Resampling +SPEEXAEC_CONFIGURE_ENABLE= speex-aec +SPEEXAEC_IMPLIES= SPEEX + +SPEEXRESAMPLE_CONFIGURE_ENABLE= speex-resample +SPEEXRESAMPLE_IMPLIES= SPEEX +SPEEXRESAMPLE_PREVENTS= RESAMPLE RESAMPLEDLL +SPEEXRESAMPLE_PREVENTS_MSG= SPEEXRESAMPLE will prevent RESAMPLE that is \ + implied by RESAMPLEDLL + post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${WRKSRC}/pkgconfig.py @@ -116,12 +155,33 @@ pre-build: post-install-SHARED-on: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so -post-install-PJSUA-on: +post-install-APPS-on: ${INSTALL_PROGRAM} \ - ${WRKSRC}/pjsip-apps/bin/pjsua-${ARCH}-portbld-${OPSYS:tl}${OSREL} \ - ${STAGEDIR}${PREFIX}/bin/pjsua + ${WRKSRC}/pjsip-apps/bin/pjsua-${ARCH}-portbld-${OPSYS:tl}${OSREL} \ + ${STAGEDIR}${PREFIX}/bin/pjsua ${INSTALL_PROGRAM} \ - ${WRKSRC}/pjsip-apps/bin/pjsystest-${ARCH}-portbld-${OPSYS:tl}${OSREL} \ - ${STAGEDIR}${PREFIX}/bin/pjsystest + ${WRKSRC}/pjsip-apps/bin/pjsystest-${ARCH}-portbld-${OPSYS:tl}${OSREL} \ + ${STAGEDIR}${PREFIX}/bin/pjsystest + ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/pjsip-apps/samples + ${INSTALL_PROGRAM} \ + ${WRKSRC}/pjsip-apps/bin/samples/${ARCH}-portbld-${OPSYS:tl}${OSREL}/* \ + ${STAGEDIR}${PREFIX}/libexec/pjsip-apps/samples/ + +.include + +# resample dso needs to be installed when either the dso is +# explicitely requested via RESAMPLEDLL which implies RESAMPLE, +# or when RESAMPLE is selected together with SHARED +RESAMPLE_DLL_OR_SHARED="@comment " + +.if ${PORT_OPTIONS:MRESAMPLEDLL} +RESAMPLE_DLL_OR_SHARED="" +.endif + +.if ${PORT_OPTIONS:MRESAMPLE} && ${PORT_OPTIONS:MSHARED} +RESAMPLE_DLL_OR_SHARED="" +.endif + +PLIST_SUB+= RESAMPLE_DLL_OR_SHARED=${RESAMPLE_DLL_OR_SHARED} .include diff --git a/net/pjsip/distinfo b/net/pjsip/distinfo index 1f0187c7aa14..53d4520930f9 100644 --- a/net/pjsip/distinfo +++ b/net/pjsip/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1709547690 -SHA256 (pjsip-pjproject-2.14_GH0.tar.gz) = 5805c1171acab4af9684d7ad096dcb92f71fc42809852144e97e1413468c9981 -SIZE (pjsip-pjproject-2.14_GH0.tar.gz) = 10320713 +TIMESTAMP = 1711489150 +SHA256 (pjsip-pjproject-2.14.1_GH0.tar.gz) = 6140f7a97e318caa89c17e8d5468599671c6eed12d64a7c160dac879ba004c68 +SIZE (pjsip-pjproject-2.14.1_GH0.tar.gz) = 10322231 diff --git a/net/pjsip/files/config_site.h b/net/pjsip/files/config_site.h index 8e6369f3f061..e69de29bb2d1 100644 --- a/net/pjsip/files/config_site.h +++ b/net/pjsip/files/config_site.h @@ -1 +0,0 @@ -#include diff --git a/net/pjsip/pkg-plist b/net/pjsip/pkg-plist index 9b9608463407..8f9c6021594e 100644 --- a/net/pjsip/pkg-plist +++ b/net/pjsip/pkg-plist @@ -1,5 +1,5 @@ -%%PJSUA%%bin/pjsua -%%PJSUA%%bin/pjsystest +%%APPS%%bin/pjsua +%%APPS%%bin/pjsystest include/pj++/file.hpp include/pj++/hash.hpp include/pj++/list.hpp @@ -317,11 +317,11 @@ include/pjsua2/presence.hpp include/pjsua2/siptypes.hpp include/pjsua2/types.hpp %%G7221%%lib/libg7221codec-%%CONFIGURE_TARGET%%.a -%%G7221%%%%SHARED%%lib/libg7221codec.so -%%G7221%%%%SHARED%%lib/libg7221codec.so.2 +%%SHARED%%%%G7221%%lib/libg7221codec.so +%%SHARED%%%%G7221%%lib/libg7221codec.so.2 %%ILBC%%lib/libilbccodec-%%CONFIGURE_TARGET%%.a -%%ILBC%%%%SHARED%%lib/libilbccodec.so -%%ILBC%%%%SHARED%%lib/libilbccodec.so.2 +%%SHARED%%%%ILBC%%lib/libilbccodec.so +%%SHARED%%%%ILBC%%lib/libilbccodec.so.2 lib/libpj-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpj.so %%SHARED%%lib/libpj.so.2 @@ -355,16 +355,47 @@ lib/libpjsip-ua-%%CONFIGURE_TARGET%%.a lib/libpjsua-%%CONFIGURE_TARGET%%.a %%SHARED%%lib/libpjsua.so %%SHARED%%lib/libpjsua.so.2 -lib/libpjsua2-%%CONFIGURE_TARGET%%.a -%%SHARED%%lib/libpjsua2.so -%%SHARED%%lib/libpjsua2.so.2 -%%NO_SAMPLERATE%%lib/libresample-%%CONFIGURE_TARGET%%.a -%%NO_SAMPLERATE%%%%SHARED%%lib/libresample.so -%%NO_SAMPLERATE%%%%SHARED%%lib/libresample.so.2 +%%PJSUA2%%lib/libpjsua2-%%CONFIGURE_TARGET%%.a +%%SHARED%%%%PJSUA2%%lib/libpjsua2.so +%%SHARED%%%%PJSUA2%%lib/libpjsua2.so.2 +%%RESAMPLE%%lib/libresample-%%CONFIGURE_TARGET%%.a +%%RESAMPLE_DLL_OR_SHARED%%lib/libresample.so +%%RESAMPLE_DLL_OR_SHARED%%lib/libresample.so.2 %%WEBRTC%%lib/libwebrtc-%%CONFIGURE_TARGET%%.a -%%WEBRTC%%%%SHARED%%lib/libwebrtc.so -%%WEBRTC%%%%SHARED%%lib/libwebrtc.so.2 +%%SHARED%%%%WEBRTC%%lib/libwebrtc.so +%%SHARED%%%%WEBRTC%%lib/libwebrtc.so.2 %%VIDEO%%lib/libyuv-%%CONFIGURE_TARGET%%.a -%%VIDEO%%%%SHARED%%lib/libyuv.so -%%VIDEO%%%%SHARED%%lib/libyuv.so.2 +%%SHARED%%%%VIDEO%%lib/libyuv.so +%%SHARED%%%%VIDEO%%lib/libyuv.so.2 libdata/pkgconfig/libpjproject.pc +%%APPS%%libexec/pjsip-apps/samples/aectest +%%APPS%%libexec/pjsip-apps/samples/auddemo +%%APPS%%libexec/pjsip-apps/samples/aviplay +%%APPS%%libexec/pjsip-apps/samples/clidemo +%%APPS%%libexec/pjsip-apps/samples/confsample +%%APPS%%libexec/pjsip-apps/samples/encdec +%%APPS%%libexec/pjsip-apps/samples/httpdemo +%%APPS%%libexec/pjsip-apps/samples/icedemo +%%APPS%%libexec/pjsip-apps/samples/jbsim +%%APPS%%libexec/pjsip-apps/samples/latency +%%APPS%%libexec/pjsip-apps/samples/level +%%APPS%%libexec/pjsip-apps/samples/mix +%%APPS%%libexec/pjsip-apps/samples/pcaputil +%%APPS%%libexec/pjsip-apps/samples/pjsip-perf +%%APPS%%libexec/pjsip-apps/samples/playfile +%%APPS%%libexec/pjsip-apps/samples/playsine +%%APPS%%libexec/pjsip-apps/samples/recfile +%%APPS%%libexec/pjsip-apps/samples/resampleplay +%%APPS%%libexec/pjsip-apps/samples/simple_pjsua +%%APPS%%libexec/pjsip-apps/samples/simpleua +%%APPS%%libexec/pjsip-apps/samples/sipecho +%%APPS%%libexec/pjsip-apps/samples/siprtp +%%APPS%%libexec/pjsip-apps/samples/sipstateless +%%APPS%%libexec/pjsip-apps/samples/stateful_proxy +%%APPS%%libexec/pjsip-apps/samples/stateless_proxy +%%APPS%%libexec/pjsip-apps/samples/stereotest +%%APPS%%libexec/pjsip-apps/samples/streamutil +%%APPS%%libexec/pjsip-apps/samples/strerror +%%APPS%%libexec/pjsip-apps/samples/tonegen +%%APPS%%libexec/pjsip-apps/samples/vid_codec_test +%%APPS%%libexec/pjsip-apps/samples/vid_streamutil -- 2.44.0