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. --- pjlib-util/build/Makefile | 58 +++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 22 deletions(-) (limited to 'pjlib-util') diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile index 6c37979..aef1e8e 100644 --- a/pjlib-util/build/Makefile +++ b/pjlib-util/build/Makefile @@ -6,10 +6,24 @@ include ../../build.mak include ../../version.mak 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) -export PJLIB_UTIL_LIB:=../lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT) + +export PJLIB_UTIL_LIB := libpjlib-util-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +PJLIB_LDLIB := -lpj-$(TARGET_NAME) +PJLIB_UTIL_LDLIB := -lpjlib-util-$(TARGET_NAME) +else +export PJLIB_UTIL_SONAME := libpjlib-util.$(SHLIB_SUFFIX) +export PJLIB_UTIL_SHLIB := $(PJLIB_UTIL_SONAME).$(PJ_VERSION_MAJOR) +PJLIB_LDLIB := -lpj +PJLIB_UTIL_LDLIB := -lpjlib-util +endif ############################################################################### # Gather all flags. @@ -18,10 +32,8 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CFLAGS) $(CC_INC)../include $(CC_INC)../../pjlib/include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) -export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \ - $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ - $(LDFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(LDFLAGS) ############################################################################### # Defines for building PJLIB-UTIL library @@ -41,8 +53,8 @@ export UTIL_TEST_SRCDIR = ../src/pjlib-util-test export UTIL_TEST_OBJS += xml.o encryption.o stun.o resolver_test.o test.o \ http_client.o export UTIL_TEST_CFLAGS += $(_CFLAGS) -export UTIL_TEST_LDFLAGS += $(_LDFLAGS) -export UTIL_TEST_EXE:=../bin/pjlib-util-test-$(TARGET_NAME)$(HOST_EXE) +export UTIL_TEST_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) +export UTIL_TEST_EXE:=pjlib-util-test-$(TARGET_NAME)$(HOST_EXE) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -51,7 +63,7 @@ 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 := pjlib-util pjlib-util-test +TARGETS := $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) $(UTIL_TEST_EXE) all: $(TARGETS) @@ -69,26 +81,29 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJLIB_UTIL_LIB) $(UTIL_TEST_EXE) +.PHONY: $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SHLIB) $(PJLIB_UTIL_SONAME) +.PHONY: $(UTIL_TEST_EXE) pjlib-util: $(PJLIB_UTIL_LIB) -$(PJLIB_UTIL_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(PJLIB_UTIL_LIB) +$(PJLIB_UTIL_SHLIB): $(PJLIB_UTIL_SONAME) +$(PJLIB_UTIL_SONAME): $(PJLIB_UTIL_LIB) +$(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SHLIB) $(PJLIB_UTIL_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjlib-util-test: $(UTIL_TEST_EXE) -$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) - $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(UTIL_TEST_EXE) +$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@) -.PHONY: ../lib/pjlib-util.ko -../lib/pjlib-util.ko: +.PHONY: pjlib-util.ko +pjlib-util.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjlib-util-test.ko -../lib/pjlib-util-test.ko: - $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ +.PHONY: pjlib-util-test.ko +pjlib-util-test.ko: + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ @@ -103,6 +118,5 @@ realclean: depend: $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ - echo '$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ - + echo '$(BINDIR)/$(UTIL_TEST_EXE): $(LIBDIR)/$(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ -- cgit v1.2.3