[Asterisk-code-review] pjproject bundled: Fix compile of pjsua so it handles audio (asterisk[master])

Anonymous Coward asteriskteam at digium.com
Tue Nov 1 21:15:08 CDT 2016


Anonymous Coward #1000019 has submitted this change and it was merged. ( https://gerrit.asterisk.org/4247 )

Change subject: pjproject_bundled:  Fix compile of pjsua so it handles audio
......................................................................


pjproject_bundled:  Fix compile of pjsua so it handles audio

In order for pjsua and its python binding to actually negotiate
audio for the testsuite tests, it needs g711 and resample.  The
pj* libraries themselves do not.  Unfortunately, pjproject relies
on a brand new libresample that most distros don't ship so we need
to use the libresample already bundled with pjproject.  Only the pjsua
executable and the _pjsua.so python library are linked with it so it
shouldn't interfere with asterisk itself.

Also it was pointed out that apply_patches couldn't handle multiple
patches that depended on each other during the dry-run, so the
dry-run was removed.

Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098
---
M third-party/pjproject/Makefile
M third-party/pjproject/Makefile.rules
M third-party/pjproject/apply_patches
M third-party/pjproject/patches/0000-remove-third-party.patch
4 files changed, 21 insertions(+), 36 deletions(-)

Approvals:
  Mark Michelson: Looks good to me, approved
  Anonymous Coward #1000019: Verified
  Joshua Colp: Looks good to me, but someone else must approve



diff --git a/third-party/pjproject/Makefile b/third-party/pjproject/Makefile
index 07a6c9c..209e681 100644
--- a/third-party/pjproject/Makefile
+++ b/third-party/pjproject/Makefile
@@ -125,11 +125,17 @@
 	$(CMD_PREFIX) $(MAKE) -C $(dir $(shell dirname $@))/build $(@F) $(REALLY_QUIET)
 	- at rm -rf .rebuild_needed
 
+# pjsua needs resample and g711 to successfully run the testsuite
+libresample%.a: .rebuild_needed source/build.mak
+	$(ECHO_PREFIX) Compiling lib $(@F)
+	$(CMD_PREFIX) $(MAKE) -C $(dir $(shell dirname $@))/build/resample all $(REALLY_QUIET)
+	- at rm -rf .rebuild_needed
+
 # We need to compile pjlib, then pjlib-util, then the rest
 # so we separate them out and create the dependencies
 PJLIB_LIB_FILES = $(foreach lib,$(PJ_LIB_FILES),$(if $(findstring libpj-,$(lib)),$(lib),))
 PJLIB_UTIL_LIB_FILES = $(foreach lib,$(PJ_LIB_FILES),$(if $(findstring libpjlib-util,$(lib)),$(lib),))
-PJSIP_LIB_FILES = $(filter-out $(PJLIB_LIB_FILES) $(PJLIB_UTIL_LIB_FILES),$(PJ_LIB_FILES))
+PJSIP_LIB_FILES = $(filter-out $(PJLIB_LIB_FILES) $(PJLIB_UTIL_LIB_FILES) $(APP_THIRD_PARTY_LIB_FILES),$(PJ_LIB_FILES))
 ALL_LIB_FILES = $(PJLIB_LIB_FILES) $(PJLIB_UTIL_LIB_FILES) $(PJSIP_LIB_FILES)
 
 $(PJLIB_UTIL_LIB_FILES): $(PJLIB_LIB_FILES)
@@ -152,7 +158,7 @@
 	$(CMD_PREFIX) ar qs $@ $< >/dev/null 2>&1
 
 $(apps): APP = $(filter pj%,$(subst -, ,$(notdir $@)))
-$(apps): pjproject.symbols
+$(apps): pjproject.symbols $(APP_THIRD_PARTY_LIB_FILES)
 	$(ECHO_PREFIX) Compiling $(APP)
 	$(CMD_PREFIX) +$(MAKE) -C source/pjsip-apps/build $(filter pj%,$(subst -, ,$(notdir $@))) $(REALLY_QUIET)
 
diff --git a/third-party/pjproject/Makefile.rules b/third-party/pjproject/Makefile.rules
index 62d5a46..531a259 100644
--- a/third-party/pjproject/Makefile.rules
+++ b/third-party/pjproject/Makefile.rules
@@ -9,7 +9,6 @@
 	--disable-gsm-codec \
 	--disable-ilbc-codec \
 	--disable-l16-codec \
-	--disable-g711-codec \
 	--disable-g722-codec \
 	--disable-g7221-codec \
 	--disable-opencore-amr \
@@ -23,7 +22,6 @@
 	--disable-oss \
 	--disable-sdl \
 	--disable-libyuv \
-	--disable-resample \
 	--disable-ffmpeg \
 	--disable-openh264 \
 	--disable-ipp \
@@ -31,5 +29,5 @@
 	--without-external-srtp
 
 ifeq ($(shell uname -s),Linux)
-   PJPROJECT_CONFIG_OPTS +=  --enable-epoll
+    PJPROJECT_CONFIG_OPTS +=  --enable-epoll
 endif
diff --git a/third-party/pjproject/apply_patches b/third-party/pjproject/apply_patches
index 69a0ad0..5f9fde2 100755
--- a/third-party/pjproject/apply_patches
+++ b/third-party/pjproject/apply_patches
@@ -28,16 +28,6 @@
 	exit 0
 fi
 
-if patch --dry-run </dev/null >/dev/null 2>&1 ; then
-	DRY_RUN=--dry-run
-else
-	DRY_RUN=-C
-fi
-
-for patchfile in $patchdir/*.patch ; do
-	${PATCH} -d $sourcedir -p1 -s -r- -f -N $DRY_RUN -i "$patchfile" || (echo "Patchfile $(basename $patchfile) failed to apply" >&2 ; exit 1) || exit 1
-done
-
 for patchfile in "$patchdir"/*.patch ; do
 	[ -z $quiet ] && echo "Applying patch $(basename $patchfile)"
 	${PATCH} -d "$sourcedir" -p1 -s -i "$patchfile" || exit 1
diff --git a/third-party/pjproject/patches/0000-remove-third-party.patch b/third-party/pjproject/patches/0000-remove-third-party.patch
index aca7f01..2e3bb5f 100644
--- a/third-party/pjproject/patches/0000-remove-third-party.patch
+++ b/third-party/pjproject/patches/0000-remove-third-party.patch
@@ -1,5 +1,5 @@
 diff --git a/build.mak.in b/build.mak.in
-index 802211c..006d887 100644
+index 802211c..25fd05e 100644
 --- a/build.mak.in
 +++ b/build.mak.in
 @@ -1,4 +1,3 @@
@@ -7,7 +7,7 @@
  include $(PJDIR)/version.mak
  export PJ_DIR := $(PJDIR)
  
-@@ -9,7 +9,7 @@ export HOST_NAME := unix
+@@ -9,7 +8,7 @@ export HOST_NAME := unix
  export CC_NAME := gcc
  export TARGET_NAME := @target@
  export CROSS_COMPILE := @ac_cross_compile@
@@ -16,7 +16,7 @@
  export SHLIB_SUFFIX := @ac_shlib_suffix@
  
  export prefix := @prefix@
-@@ -28,114 +28,6 @@ export APP_THIRD_PARTY_EXT :=
+@@ -28,19 +27,6 @@ export APP_THIRD_PARTY_EXT :=
  export APP_THIRD_PARTY_LIBS :=
  export APP_THIRD_PARTY_LIB_FILES :=
  
@@ -33,22 +33,13 @@
 -endif
 -endif
 -
--ifeq (@ac_pjmedia_resample@,libresample)
--APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX)
--ifeq ($(PJ_SHARED_LIBRARIES),)
--ifeq (@ac_resample_dll@,1)
--export PJ_RESAMPLE_DLL := 1
--APP_THIRD_PARTY_LIBS += -lresample
--APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX)
--else
--APP_THIRD_PARTY_LIBS += -lresample-$(TARGET_NAME)
--endif
--else
--APP_THIRD_PARTY_LIBS += -lresample
--APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX)
--endif
--endif
--
+ ifeq (@ac_pjmedia_resample@,libresample)
+ APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX)
+ ifeq ($(PJ_SHARED_LIBRARIES),)
+@@ -57,85 +43,6 @@ APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFI
+ endif
+ endif
+ 
 -ifneq (@ac_no_gsm_codec@,1)
 -ifeq (@ac_external_gsm@,1)
 -# External GSM library
@@ -131,7 +122,7 @@
  # Additional flags
  @ac_build_mak_vars@
  
-@@ -149,7 +41,7 @@ SDL_CFLAGS = @ac_sdl_cflags@
+@@ -149,7 +56,7 @@ SDL_CFLAGS = @ac_sdl_cflags@
  SDL_LDFLAGS = @ac_sdl_ldflags@
  
  # FFMPEG flags
@@ -140,7 +131,7 @@
  FFMPEG_LDFLAGS =  @ac_ffmpeg_ldflags@
  
  # Video4Linux2
-@@ -157,7 +49,7 @@ V4L2_CFLAGS = @ac_v4l2_cflags@
+@@ -157,7 +64,7 @@ V4L2_CFLAGS = @ac_v4l2_cflags@
  V4L2_LDFLAGS = @ac_v4l2_ldflags@
  
  # OPENH264 flags

-- 
To view, visit https://gerrit.asterisk.org/4247
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>



More information about the asterisk-code-review mailing list