From 9e5b6c43b13a561b09908d2a57edb6c96e4fedaf Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Tue, 12 Feb 2013 14:00:13 -0600 Subject: Add support for building and using shared libraries. --- build/rules.mak | 79 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 23 deletions(-) (limited to 'build') diff --git a/build/rules.mak b/build/rules.mak index 0d35c56..b816643 100644 --- a/build/rules.mak +++ b/build/rules.mak @@ -6,17 +6,20 @@ BINDIR = ../bin endif # -# The full path of output lib file (e.g. ../lib/libapp.a). -# -LIB = $($(APP)_LIB) - -# -# The full path of output lib file (e.g. ../lib/libapp.a). +# The name(s) of output lib file(s) (e.g. libapp.a). # +LIB := $($(APP)_LIB) SHLIB = $($(APP)_SHLIB) +SONAME = $($(APP)_SONAME) + +ifeq ($(SHLIB_SUFFIX),so) +SHLIB_OPT := -shared -Wl,-soname,$(SONAME) +else +SHLIB_OPT := +endif # -# The full path of output executable file (e.g. ../bin/app.exe). +# The name of output executable file (e.g. app.exe). # EXE = $($(APP)_EXE) @@ -75,27 +78,46 @@ print_common: @echo RANLIB=$(RANLIB) print_bin: print_common - @echo EXE=$(EXE) - @echo BINDIR=$(BINDIR) - + @echo EXE=$(BINDIR)/$(EXE) + @echo BINDIR=$(BINDIR) + print_lib: print_common - @echo LIB=$(LIB) +ifneq ($(LIB),) + @echo LIB=$(LIBDIR)/$(LIB) +endif +ifneq ($(SHLIB),) + @echo SHLIB=$(LIBDIR)/$(SHLIB) +endif +ifneq ($(SONAME),) + @echo SONAME=$(LIBDIR)/$(SONAME) +endif @echo LIBDIR=$(LIBDIR) -$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(LIB),) +$(LIBDIR)/$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi - $(AR) $(LIB) $(OBJS) - $(RANLIB) $(LIB) + $(AR) $(AR_FLAGS) $@ $(OBJS) + $(RANLIB) $@ +endif -$(SHLIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(SHLIB),) +$(LIBDIR)/$(SHLIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi - $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(SHLIB)) \ - $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) + $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$@) \ + $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) $(SHLIB_OPT) +endif + +ifneq ($(SONAME),) +$(LIBDIR)/$(SONAME): $(LIBDIR)/$(SHLIB) + ln -sf $(SHLIB) $@ +endif -$(EXE): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(EXE),) +$(BINDIR)/$(EXE): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(BINDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR)); fi - $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(EXE)) \ + $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)) \ $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) +endif $(OBJDIR)/$(app).o: $(OBJDIRS) $(OBJS) $(CROSS_COMPILE)ld -r -o $@ $(OBJS) @@ -146,13 +168,13 @@ $(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp $(subst /,$(HOST_PSEP),$<) $(OBJDIRS): - $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) $(LIBDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) $(BINDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) clean: $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)/*),$(HOST_RMR)) @@ -167,7 +189,18 @@ gcov-report: done realclean: clean - $(subst @@,$(subst /,$(HOST_PSEP),$(LIB)) $(subst /,$(HOST_PSEP),$(EXE)),$(HOST_RM)) +ifneq ($(LIB),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)),$(HOST_RM)) +endif +ifneq ($(SHLIB),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)),$(HOST_RM)) +endif +ifneq ($(SONAME),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)),$(HOST_RM)) +endif +ifneq ($(EXE),) + $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)),$(HOST_RM)) +endif $(subst @@,$(DEP_FILE),$(HOST_RM)) ifeq ($(OS_NAME),linux-kernel) rm -f ../lib/$(app).ko -- cgit v1.2.3 From f3d98ed4613b4832ea37cbeacb0f710b72107fa1 Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Wed, 13 Feb 2013 11:04:23 -0600 Subject: Fix (my) review feedback from GitHub. --- build/rules.mak | 16 ++++++++-------- pjlib/build/os-auto.mak.in | 5 +---- pjmedia/build/Makefile | 2 +- pjmedia/include/pjmedia-videodev/config.h | 2 ++ pjmedia/src/pjmedia/format.c | 1 + pjmedia/src/test/vid_dev_test.c | 1 + 6 files changed, 14 insertions(+), 13 deletions(-) (limited to 'build') diff --git a/build/rules.mak b/build/rules.mak index b816643..fcc07f7 100644 --- a/build/rules.mak +++ b/build/rules.mak @@ -78,42 +78,42 @@ print_common: @echo RANLIB=$(RANLIB) print_bin: print_common - @echo EXE=$(BINDIR)/$(EXE) + @echo EXE=$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)) @echo BINDIR=$(BINDIR) print_lib: print_common ifneq ($(LIB),) - @echo LIB=$(LIBDIR)/$(LIB) + @echo LIB=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)) endif ifneq ($(SHLIB),) - @echo SHLIB=$(LIBDIR)/$(SHLIB) + @echo SHLIB=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)) endif ifneq ($(SONAME),) - @echo SONAME=$(LIBDIR)/$(SONAME) + @echo SONAME=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)) endif @echo LIBDIR=$(LIBDIR) ifneq ($(LIB),) -$(LIBDIR)/$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi $(AR) $(AR_FLAGS) $@ $(OBJS) $(RANLIB) $@ endif ifneq ($(SHLIB),) -$(LIBDIR)/$(SHLIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$@) \ $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) $(SHLIB_OPT) endif ifneq ($(SONAME),) -$(LIBDIR)/$(SONAME): $(LIBDIR)/$(SHLIB) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)): $(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)) ln -sf $(SHLIB) $@ endif ifneq ($(EXE),) -$(BINDIR)/$(EXE): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(BINDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR)); fi $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)) \ $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) diff --git a/pjlib/build/os-auto.mak.in b/pjlib/build/os-auto.mak.in index 8640255..3f35dce 100644 --- a/pjlib/build/os-auto.mak.in +++ b/pjlib/build/os-auto.mak.in @@ -29,10 +29,7 @@ export TEST_LDFLAGS += @LDFLAGS@ @LIBS@ # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = $(PJLIB_LIB) $(TEST_EXE) -ifneq ($(PJ_SHARED_LIBRARIES),) -export TARGETS += $(PJLIB_SONAME) -endif +export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE) diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile index aeb7f0b..73a1315 100644 --- a/pjmedia/build/Makefile +++ b/pjmedia/build/Makefile @@ -172,7 +172,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT TARGETS := $(PJMEDIA_LIB) $(PJMEDIA_SONAME) \ $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME)\ $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) \ - $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) \ + $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) \ $(PJSDP_LIB) $(PJSDP_SONAME) \ $(PJMEDIA_TEST_EXE) diff --git a/pjmedia/include/pjmedia-videodev/config.h b/pjmedia/include/pjmedia-videodev/config.h index 2ce0ca5..84042dc 100644 --- a/pjmedia/include/pjmedia-videodev/config.h +++ b/pjmedia/include/pjmedia-videodev/config.h @@ -26,6 +26,7 @@ #include #include + PJ_BEGIN_DECL /** @@ -153,6 +154,7 @@ PJ_BEGIN_DECL PJ_END_DECL + #endif /* __PJMEDIA_VIDEODEV_CONFIG_H__ */ /* diff --git a/pjmedia/src/pjmedia/format.c b/pjmedia/src/pjmedia/format.c index 1cf5ed1..5e1d253 100644 --- a/pjmedia/src/pjmedia/format.c +++ b/pjmedia/src/pjmedia/format.c @@ -72,6 +72,7 @@ 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 1c37e38..82f3def 100644 --- a/pjmedia/src/test/vid_dev_test.c +++ b/pjmedia/src/test/vid_dev_test.c @@ -26,6 +26,7 @@ #if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + #define THIS_FILE "vid_dev_test.c" #define LOOP_DURATION 10 -- cgit v1.2.3