pjproject_bundled: Fix compile of pjsua so it handles audio
authorGeorge Joseph <gjoseph@digium.com>
Mon, 31 Oct 2016 21:12:57 +0000 (15:12 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 31 Oct 2016 21:15:09 +0000 (16:15 -0500)
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

third-party/pjproject/Makefile
third-party/pjproject/Makefile.rules
third-party/pjproject/apply_patches
third-party/pjproject/patches/0000-remove-third-party.patch

index 07a6c9c..209e681 100644 (file)
@@ -125,11 +125,17 @@ libpj%.a: .rebuild_needed source/build.mak
        $(CMD_PREFIX) $(MAKE) -C $(dir $(shell dirname $@))/build $(@F) $(REALLY_QUIET)
        -@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)
+       -@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 @@ source/pjsip-apps/lib/libasterisk_malloc_debug.a: source/pjsip-apps/lib/asterisk
        $(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)
 
index 62d5a46..531a259 100644 (file)
@@ -9,7 +9,6 @@ PJPROJECT_CONFIG_OPTS = --prefix=/opt/pjproject \
        --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 @@ PJPROJECT_CONFIG_OPTS = --prefix=/opt/pjproject \
        --disable-oss \
        --disable-sdl \
        --disable-libyuv \
-       --disable-resample \
        --disable-ffmpeg \
        --disable-openh264 \
        --disable-ipp \
@@ -31,5 +29,5 @@ PJPROJECT_CONFIG_OPTS = --prefix=/opt/pjproject \
        --without-external-srtp
 
 ifeq ($(shell uname -s),Linux)
-   PJPROJECT_CONFIG_OPTS +=  --enable-epoll
+    PJPROJECT_CONFIG_OPTS +=  --enable-epoll
 endif
index 69a0ad0..5f9fde2 100755 (executable)
@@ -28,16 +28,6 @@ if [ ! "$(ls -A $patchdir/*.patch 2>/dev/null)" ] ; then
        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
index aca7f01..2e3bb5f 100644 (file)
@@ -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 @@ index 802211c..006d887 100644
  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 @@ index 802211c..006d887 100644
  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 @@ index 802211c..006d887 100644
 -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 @@ index 802211c..006d887 100644
  # 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 @@ index 802211c..006d887 100644
  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