summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorJason Parker <jparker@digium.com>2013-02-12 14:00:13 -0600
committerJason Parker <jparker@digium.com>2013-03-11 15:43:24 -0500
commit3c3b8c6cf322ceacb451e0de8cac7b8338bbc297 (patch)
tree9a63bb6b422698f6cbf4a8bde776c7e457afb892 /pjmedia
parentd4da28c5fed0bc0726da1b7f4d4fe53295bbf14c (diff)
Add support for building and using shared libraries.
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/build/Makefile141
-rw-r--r--pjmedia/include/pjmedia-videodev/config.h6
-rw-r--r--pjmedia/src/pjmedia/format.c1
-rw-r--r--pjmedia/src/test/vid_dev_test.c1
4 files changed, 102 insertions, 47 deletions
diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile
index 7c362c2..aeb7f0b 100644
--- a/pjmedia/build/Makefile
+++ b/pjmedia/build/Makefile
@@ -9,17 +9,48 @@ SRTP_INC=$(CC_INC)$(THIRD_PARTY)/build/srtp \
include $(PJDIR)/build/common.mak
+export LIBDIR := ../lib
+export BINDIR := ../bin
+
RULES_MAK := $(PJDIR)/build/rules.mak
PJLIB_LIB:=$(PJDIR)/pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT)
PJLIB_UTIL_LIB:=$(PJDIR)/pjlib-util/lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT)
PJNATH_LIB:=$(PJDIR)/pjnath/lib/libpjnath-$(TARGET_NAME)$(LIBEXT)
-export PJMEDIA_LIB:=../lib/libpjmedia-$(TARGET_NAME)$(LIBEXT)
-export PJMEDIA_CODEC_LIB:=../lib/libpjmedia-codec-$(TARGET_NAME)$(LIBEXT)
-export PJSDP_LIB:=../lib/libpjsdp-$(TARGET_NAME)$(LIBEXT)
-export PJMEDIA_AUDIODEV_LIB:=../lib/libpjmedia-audiodev-$(TARGET_NAME)$(LIBEXT)
-export PJMEDIA_VIDEODEV_LIB:=../lib/libpjmedia-videodev-$(TARGET_NAME)$(LIBEXT)
+export PJMEDIA_LIB:=libpjmedia-$(TARGET_NAME)$(LIBEXT)
+export PJMEDIA_CODEC_LIB:=libpjmedia-codec-$(TARGET_NAME)$(LIBEXT)
+export PJSDP_LIB:=libpjsdp-$(TARGET_NAME)$(LIBEXT)
+export PJMEDIA_AUDIODEV_LIB:=libpjmedia-audiodev-$(TARGET_NAME)$(LIBEXT)
+export PJMEDIA_VIDEODEV_LIB:=libpjmedia-videodev-$(TARGET_NAME)$(LIBEXT)
+
+ifeq ($(PJ_SHARED_LIBRARIES),)
+PJMEDIA_LDLIB := -lpjmedia-$(TARGET_NAME)
+PJMEDIA_CODEC_LDLIB := -lpjmedia-codec-$(TARGET_NAME)
+PJMEDIA_AUDIODEV_LDLIB := -lpjmedia-audiodev-$(TARGET_NAME)
+PJMEDIA_VIDEODEV_LDLIB := -lpjmedia-videodev-$(TARGET_NAME)
+PJLIB_LDLIB := -lpj-$(TARGET_NAME)
+PJLIB_UTIL_LDLIB := -lpjlib-util-$(TARGET_NAME)
+PJNATH_LDLIB := -lpjnath-$(TARGET_NAME)
+else
+PJMEDIA_LDLIB := -lpjmedia
+PJMEDIA_CODEC_LDLIB := -lpjmedia-codec
+PJMEDIA_AUDIODEV_LDLIB := -lpjmedia-audiodev
+PJMEDIA_VIDEODEV_LDLIB := -lpjmedia-videodev
+PJLIB_LDLIB := -lpj
+PJLIB_UTIL_LDLIB := -lpjlib-util
+PJNATH_LDLIB := -lpjnath
+export PJMEDIA_SONAME:=libpjmedia.$(SHLIB_SUFFIX)
+export PJMEDIA_SHLIB:=$(PJMEDIA_SONAME).$(PJ_VERSION_MAJOR)
+export PJMEDIA_CODEC_SONAME:=libpjmedia-codec.$(SHLIB_SUFFIX)
+export PJMEDIA_CODEC_SHLIB:=$(PJMEDIA_CODEC_SONAME).$(PJ_VERSION_MAJOR)
+export PJSDP_SONAME:=libpjsdp.$(SHLIB_SUFFIX)
+export PJSDP_SHLIB:=$(PJSDP_SONAME).$(PJ_VERSION_MAJOR)
+export PJMEDIA_AUDIODEV_SONAME:=libpjmedia-audiodev.$(SHLIB_SUFFIX)
+export PJMEDIA_AUDIODEV_SHLIB:=$(PJMEDIA_AUDIODEV_SONAME).$(PJ_VERSION_MAJOR)
+export PJMEDIA_VIDEODEV_SONAME:=libpjmedia-videodev.$(SHLIB_SUFFIX)
+export PJMEDIA_VIDEODEV_SHLIB:=$(PJMEDIA_VIDEODEV_SONAME).$(PJ_VERSION_MAJOR)
+endif
###############################################################################
@@ -35,18 +66,11 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \
$(SRTP_INC)
export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \
$(HOST_CXXFLAGS) $(CXXFLAGS)
-export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJMEDIA_VIDEODEV_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJMEDIA_CODEC_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJMEDIA_AUDIODEV_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \
- $(subst /,$(HOST_PSEP),$(PJNATH_LIB)) \
- -L$(PJDIR)/third_party/lib \
- $(APP_THIRD_PARTY_LIBS) \
+
+export _LDFLAGS := $(APP_THIRD_PARTY_LIBS) \
$(APP_THIRD_PARTY_EXT) \
$(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \
- $(LDFLAGS)
+ $(APP_LDFLAGS) $(LDFLAGS)
###############################################################################
# Defines for building PJMEDIA library
@@ -128,8 +152,15 @@ export PJMEDIA_TEST_OBJS += codec_vectors.o jbuf_test.o main.o mips_test.o \
rtp_test.o test.o
export PJMEDIA_TEST_OBJS += sdp_neg_test.o
export PJMEDIA_TEST_CFLAGS += $(_CFLAGS)
-export PJMEDIA_TEST_LDFLAGS += $(_LDFLAGS)
-export PJMEDIA_TEST_EXE:=../bin/pjmedia-test-$(TARGET_NAME)$(HOST_EXE)
+export PJMEDIA_TEST_LDFLAGS += $(PJMEDIA_CODEC_LDLIB) \
+ $(PJMEDIA_VIDEODEV_LDLIB) \
+ $(PJMEDIA_LDLIB) \
+ $(PJMEDIA_AUDIODEV_LDLIB) \
+ $(PJLIB_LDLIB) \
+ $(PJLIB_UTIL_LDLIB) \
+ $(PJNATH_LDLIB) \
+ $(_LDFLAGS)
+export PJMEDIA_TEST_EXE:=pjmedia-test-$(TARGET_NAME)$(HOST_EXE)
export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT
@@ -138,7 +169,12 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT
#
# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory.
#
-TARGETS := pjmedia pjmedia-videodev pjmedia-audiodev pjmedia-codec pjsdp pjmedia-test
+TARGETS := $(PJMEDIA_LIB) $(PJMEDIA_SONAME) \
+ $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME)\
+ $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) \
+ $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) \
+ $(PJSDP_LIB) $(PJSDP_SONAME) \
+ $(PJMEDIA_TEST_EXE)
all: $(TARGETS)
@@ -156,47 +192,66 @@ doc:
dep: depend
distclean: realclean
-.PHONY: dep depend clean realclean distclean
+.PHONY: all dep depend clean realclean distclean
.PHONY: $(TARGETS)
-.PHONY: $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_AUDIODEV_LIB) $(PJSDP_LIB) $(PJMEDIA_TEST_EXE)
+.PHONY: $(PJMEDIA_LIB) $(PJMEDIA_SHLIB) $(PJMEDIA_SONAME)
+.PHONY: $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SHLIB) $(PJMEDIA_CODEC_SONAME)
+.PHONY: $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SHLIB) $(PJMEDIA_VIDEODEV_SONAME)
+.PHONY: $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SHLIB) $(PJMEDIA_AUDIODEV_SONAME)
+.PHONY: $(PJSDP_LIB) $(PJSDP_SHLIB) $(PJSDP_SONAME)
+.PHONY: $(PJMEDIA_TEST_EXE)
pjmedia: $(PJMEDIA_LIB)
-$(PJMEDIA_LIB):
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(PJMEDIA_LIB)
+$(PJMEDIA_SHLIB): $(PJMEDIA_SONAME)
+$(PJMEDIA_SONAME): $(PJMEDIA_LIB)
+$(PJMEDIA_LIB) $(PJMEDIA_SHLIB) $(PJMEDIA_SONAME):
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
pjmedia-codec: $(PJMEDIA_CODEC_LIB)
-$(PJMEDIA_CODEC_LIB):
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(PJMEDIA_CODEC_LIB)
+$(PJMEDIA_CODEC_SHLIB): $(PJMEDIA_CODEC_SONAME)
+$(PJMEDIA_CODEC_SONAME): $(PJMEDIA_CODEC_LIB)
+$(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SHLIB) $(PJMEDIA_CODEC_SONAME):
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
pjmedia-videodev: $(PJMEDIA_VIDEODEV_LIB)
-$(PJMEDIA_VIDEODEV_LIB):
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_VIDEODEV app=pjmedia-videodev $(PJMEDIA_VIDEODEV_LIB)
+$(PJMEDIA_VIDEODEV_SHLIB): $(PJMEDIA_VIDEODEV_SONAME)
+$(PJMEDIA_VIDEODEV_SONAME): $(PJMEDIA_VIDEODEV_LIB)
+$(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SHLIB) $(PJMEDIA_VIDEODEV_SONAME):
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_VIDEODEV app=pjmedia-videodev $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
pjmedia-audiodev: $(PJMEDIA_AUDIODEV_LIB)
-$(PJMEDIA_AUDIODEV_LIB):
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_AUDIODEV app=pjmedia-audiodev $(PJMEDIA_AUDIODEV_LIB)
+$(PJMEDIA_AUDIODEV_SHLIB): $(PJMEDIA_AUDIODEV_SONAME)
+$(PJMEDIA_AUDIODEV_SONAME): $(PJMEDIA_AUDIODEV_LIB)
+$(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SHLIB) $(PJMEDIA_AUDIODEV_SONAME):
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_AUDIODEV app=pjmedia-audiodev $(subst /,$(HOST_PSEP),$(LIBDIR)/$@)
pjsdp: $(PJSDP_LIB)
-$(PJSDP_LIB):
- $(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $(PJSDP_LIB)
+$(PJSDP_SHLIB): $(PJSDP_SONAME)
+$(PJSDP_SONAME): $(PJSDP_LIB)
+$(PJSDP_LIB) $(PJSDP_SHLIB) $(PJSDP_SONAME):
+ $(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $(LIBDIR)/$@
pjmedia-test: $(PJMEDIA_TEST_EXE)
-$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB)
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(PJMEDIA_TEST_EXE)
-
-.PHONY: ../lib/pjmedia.ko
-../lib/pjmedia.ko:
+$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_SONAME)
+$(PJMEDIA_TEST_EXE): $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME)
+$(PJMEDIA_TEST_EXE): $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME)
+$(PJMEDIA_TEST_EXE): $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME)
+$(PJMEDIA_TEST_EXE):
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(BINDIR)/$@
+
+.PHONY: pjmedia.ko
+pjmedia.ko:
echo Making $@
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(LIBDIR)/$@
-.PHONY: ../lib/pjmedia-codec.ko
-../lib/pjmedia-codec.ko:
+.PHONY: pjmedia-codec.ko
+pjmedia-codec.ko:
echo Making $@
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(LIBDIR)/$@
-.PHONY: ../lib/pjmedia-test.ko
-../lib/pjmedia-test.ko:
- $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@
+.PHONY: pjmedia-test.ko
+pjmedia-test.ko:
+ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(LIBDIR)/$@
clean:
$(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@
@@ -228,6 +283,6 @@ depend:
$(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@
$(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@
$(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $@
- echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend
+ echo '$(BINDIR)/$(PJMEDIA_TEST_EXE): $(LIBDIR)/$(PJMEDIA_LIB) $(LIBDIR)/$(PJMEDIA_CODEC_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend
diff --git a/pjmedia/include/pjmedia-videodev/config.h b/pjmedia/include/pjmedia-videodev/config.h
index ef161eb..2ce0ca5 100644
--- a/pjmedia/include/pjmedia-videodev/config.h
+++ b/pjmedia/include/pjmedia-videodev/config.h
@@ -26,7 +26,6 @@
#include <pjmedia/types.h>
#include <pj/pool.h>
-
PJ_BEGIN_DECL
/**
@@ -52,6 +51,8 @@ PJ_BEGIN_DECL
#endif
+#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
+
/**
* This setting controls whether SDL support should be included.
*
@@ -144,13 +145,14 @@ PJ_BEGIN_DECL
# undef PJMEDIA_SDL_LIB
#endif
+#endif /* defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) */
+
/**
* @}
*/
PJ_END_DECL
-
#endif /* __PJMEDIA_VIDEODEV_CONFIG_H__ */
/*
diff --git a/pjmedia/src/pjmedia/format.c b/pjmedia/src/pjmedia/format.c
index 5e1d253..1cf5ed1 100644
--- a/pjmedia/src/pjmedia/format.c
+++ b/pjmedia/src/pjmedia/format.c
@@ -72,7 +72,6 @@ PJ_DEF(pjmedia_format*) pjmedia_format_copy(pjmedia_format *dst,
#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
-
static pj_status_t apply_packed_fmt(const pjmedia_video_format_info *fi,
pjmedia_video_apply_fmt_param *aparam);
diff --git a/pjmedia/src/test/vid_dev_test.c b/pjmedia/src/test/vid_dev_test.c
index 82f3def..1c37e38 100644
--- a/pjmedia/src/test/vid_dev_test.c
+++ b/pjmedia/src/test/vid_dev_test.c
@@ -26,7 +26,6 @@
#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
-
#define THIS_FILE "vid_dev_test.c"
#define LOOP_DURATION 10