]> git.proxmox.com Git - mirror_corosync.git/commitdiff
Convert the common lib into a shared lib.
authorAngus Salkeld <asalkeld@redhat.com>
Tue, 21 Feb 2012 09:26:08 +0000 (20:26 +1100)
committerAngus Salkeld <asalkeld@redhat.com>
Tue, 21 Feb 2012 09:26:08 +0000 (20:26 +1100)
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
common_lib/Makefile.am
corosync.spec.in
cts/agents/Makefile.am
exec/Makefile.am
lib/Makefile.am
pkgconfig/Makefile.am
test/Makefile.am
tools/Makefile.am

index 1732019cef6b172bd9ccceebe7be1c3196381f0a..42fad2753a9d763a73657a12ff5efadf484ca47b 100644 (file)
 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 # THE POSSIBILITY OF SUCH DAMAGE.
 
+# Functions
+uc=$(shell echo $1 | tr a-z A-Z)
+get_soname=$(if $($(call uc,$1)_SONAME),$($(call uc,$1)_SONAME),$(SONAME))
+get_major=$(firstword $(subst ., ,$(call get_soname,$1)))
+get_sharedlibs=$(foreach lib,$(SHARED_LIBS_SO:lib%.so=%),lib$(lib).so.$(call get_soname,$(lib)))
+get_sharedlibs_two=$(foreach lib,$(SHARED_LIBS_SO:lib%.so=%),lib$(lib).so.$(call get_major,$(lib)))
+get_linker_add=$(if $($(call uc,$1)_LINKER_ADD),$($(call uc,$1)_LINKER_ADD))
+
 MAINTAINERCLEANFILES    = Makefile.in
 
 AM_CFLAGS              = -fPIC
 
 INCLUDES               = -I$(top_builddir)/include -I$(top_srcdir)/include
 
-noinst_LIBRARIES               = libcorosync_common.a
+lib_LIBRARIES          = libcorosync_common.a
+SHARED_LIBS_SO         = $(lib_LIBRARIES:%.a=%.so)
 
 libcorosync_common_a_SOURCES   = error_conversion.c
 
+if BUILD_DARWIN
+
+lib%.so: lib%.a $(LIBQB_LIBS)
+       $(CC) $(DARWIN_OPTS) $(call get_linker_add,$*) -Wl,-whole-archive $^ -Wl,-no-whole-archive -o $@
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
+
+else
+
+if BUILD_SOLARIS
+
+lib%.so.$(SONAME): lib%.a
+       $(LD) $(SOLARIS_OPTS) $(call get_linker_add,$*) -G -whole-archive $^ -no-whole-archive -o $@
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
+
+else
+
+lib%.so: lib%.a
+       $(CC) -shared -o $@.$(call get_soname,$*) \
+               -Wl,-soname=lib$*.so.$(call get_major,$*) \
+               -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) $(AM_LDFLAGS) $(call get_linker_add,$*)
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
+       ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
+
+endif
+
+endif
+
+all-local: $(get_explicit_sharedlibs) $(SHARED_LIBS_SO)
+       @echo Built shared libs
+
+install-exec-local:
+       $(INSTALL) -d $(DESTDIR)/$(libdir)
+       $(INSTALL) -m 755 $(get_sharedlibs) $(DESTDIR)/$(libdir)
+       $(CP) -a $(SHARED_LIBS_SO) $(get_sharedlibs_two) $(DESTDIR)/$(libdir)
+
+uninstall-local:
+       cd $(DESTDIR)/$(libdir)/ && \
+               rm -f $(get_sharedlibs) $(SHARED_LIBS_SO) $(get_sharedlibs_two)
+
 clean-local:
-       rm -f *.o *.a
+       rm -f *.o *.a *.so* *.da *.bb *.bbg
index e944f2f803fa4468ca6e5972e961c998126ff2fe..6757c3bd6aa1f7c2906fdf0ec3a54e776ab5899c 100644 (file)
@@ -241,6 +241,7 @@ This package contains corosync libraries.
 %{_libdir}/libvotequorum.so.*
 %{_libdir}/libpload.so.*
 %{_libdir}/libsam.so.*
+%{_libdir}/libcorosync_common.so.*
 
 %post -n corosynclib -p /sbin/ldconfig
 
@@ -285,6 +286,7 @@ The Corosync Cluster Engine APIs.
 %{_libdir}/libvotequorum.so
 %{_libdir}/libpload.so
 %{_libdir}/libsam.so
+%{_libdir}/libcorosync_common.so
 %{_libdir}/pkgconfig/*.pc
 %{_mandir}/man3/cpg_*3*
 %{_mandir}/man3/evs_*3*
index 5848b02275d2867ab24309db89308ba5e6d741c4..d9aaa84661e05afec2f39ebd1f9e4bebb26d3770 100644 (file)
@@ -49,16 +49,16 @@ endif
 noinst_HEADERS          = common_test_agent.h
 
 cpg_test_agent_SOURCES = cpg_test_agent.c common_test_agent.c
-cpg_test_agent_LDADD =  -lcpg -lcfg ../../exec/crypto.o $(LIBQB_LIBS)
-cpg_test_agent_LDFLAGS =  -L../../lib -L.
+cpg_test_agent_LDADD =  -lcpg -lcfg ../../exec/crypto.o -lcorosync_common $(LIBQB_LIBS)
+cpg_test_agent_LDFLAGS =  -L../../lib -L. -L../../common_lib
 
 sam_test_agent_SOURCES = sam_test_agent.c common_test_agent.c
-sam_test_agent_LDADD =  -lsam -lquorum -lcmap $(LIBQB_LIBS)
-sam_test_agent_LDFLAGS =  -L../../lib 
+sam_test_agent_LDADD =  -lsam -lquorum -lcmap -lcorosync_common $(LIBQB_LIBS)
+sam_test_agent_LDFLAGS =  -L../../lib -L../../common_lib
 
 votequorum_test_agent_SOURCES = votequorum_test_agent.c common_test_agent.c
-votequorum_test_agent_LDADD =  -lvotequorum -lquorum $(LIBQB_LIBS)
-votequorum_test_agent_LDFLAGS =  -L../../lib 
+votequorum_test_agent_LDADD =  -lvotequorum -lquorum -lcorosync_common $(LIBQB_LIBS)
+votequorum_test_agent_LDFLAGS =  -L../../lib -L../../common_lib
 
 clean-local:
        rm -f *.o *.a *.so* *.da *.bb *.bbg
index d4d83ebd6911950031ae8aa1cb5498139e568a13..07a77c5319d3c0b185adc5f134697ed2eb9aead3 100644 (file)
@@ -52,9 +52,9 @@ corosync_SOURCES      = evil.c vsf_ykd.c coroparse.c vsf_quorum.c syncv2.c \
                          votequorum.c wd.c util.c schedwrk.c main.c \
                          apidef.c quorum.c sync.c icmap.c timer.c \
                          ipc_glue.c service.c mainconfig.c totemconfig.c
-corosync_LDADD         = -ltotem_pg ../common_lib/libcorosync_common.a $(LIBQB_LIBS) $(statgrab_LIBS)
-corosync_DEPENDENCIES  = libtotem_pg.so.$(SONAME) ../common_lib/libcorosync_common.a
-corosync_LDFLAGS       = $(OS_DYFLAGS) -L./
+corosync_LDADD         = -ltotem_pg -lcorosync_common $(LIBQB_LIBS) $(statgrab_LIBS)
+corosync_DEPENDENCIES  = libtotem_pg.so.$(SONAME) ../common_lib/libcorosync_common.so
+corosync_LDFLAGS       = $(OS_DYFLAGS) -L./ -L../common_lib
 
 TOTEM_OBJS             = $(TOTEM_SRC:%.c=%.o)
 LOGSYS_OBJS            = $(LOGSYS_SRC:%.c=%.o)
index 67442332ad493aa0c6eede06b07f3b58c093a3a1..6ded3306c13d2a7bdbdbaa5c30c2bea9d4902f30 100644 (file)
@@ -42,7 +42,7 @@ MAINTAINERCLEANFILES    = Makefile.in
 
 AM_CFLAGS              = -fPIC
 
-AM_LDFLAGS             = -lpthread
+AM_LDFLAGS             = -lpthread -L../common_lib -lcorosync_common
 
 INCLUDES               = -I$(top_builddir)/include -I$(top_srcdir)/include
 
@@ -89,7 +89,7 @@ lib%.so: lib%.a
        $(CC) -shared -o $@.$(call get_soname,$*) \
                -Wl,-soname=lib$*.so.$(call get_major,$*) \
                -Wl,-version-script=$(srcdir)/lib$*.versions \
-               -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) ../common_lib/libcorosync_common.a $(AM_LDFLAGS) $(call get_linker_add,$*)
+               -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) $(AM_LDFLAGS) $(call get_linker_add,$*)
        ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
        ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
 
index 238fd0def601e6f743e9fff96b46bdde47c81858..50691bafe24bfc434d36e1e91c8d3528d0ac1eef 100644 (file)
@@ -33,7 +33,7 @@ MAINTAINERCLEANFILES  = Makefile.in
 EXTRA_DIST             = libtemplate.pc.in corosync.pc.in
 
 LIBS   = cfg cpg evs pload quorum \
-         totem_pg votequorum sam cmap
+         totem_pg votequorum sam cmap corosync_common
 
 target_LIBS = $(LIBS:%=lib%.pc)
 
index 178e7112f7c3eb85549471c852da7b50222c645c..ee64b9e1aaa794defd46ed74aba59e13c5ea0c61 100644 (file)
@@ -38,6 +38,7 @@ noinst_PROGRAMS               = testevs evsbench evsverify cpgverify testcpg testcpg2 cpgbenc
                        stress_cpgfdget stress_cpgcontext cpgbound testsam \
                        testcpgzc cpgbenchzc testzcgc stress_cpgzc
 
+
 testevs_LDADD          = -levs $(LIBQB_LIBS)
 testevs_LDFLAGS                = -L../lib
 testcpg_LDADD          = -lcpg $(LIBQB_LIBS)
@@ -70,8 +71,8 @@ evsbench_LDADD                = -levs $(LIBQB_LIBS)
 evsbench_LDFLAGS       = -L../lib
 cpgbench_LDADD         = -lcpg $(LIBQB_LIBS)
 cpgbench_LDFLAGS       = -L../lib
-cpgbenchzc_LDADD       = -lcpg $(LIBQB_LIBS)
-cpgbenchzc_LDFLAGS     = -L../lib
+cpgbenchzc_LDADD       = -lcpg -lcorosync_common $(LIBQB_LIBS)
+cpgbenchzc_LDFLAGS     = -L../lib -L../common_lib
 testsam_LDADD          = -lsam -lcmap -lquorum $(LIBQB_LIBS)
 testsam_LDFLAGS                = -L../lib
 
index 921cd2608e952beacfd085dd2e1da498c7e3b8c0..7021845df7025d5b007d9af52225ca3d76f06a15 100644 (file)
@@ -49,11 +49,11 @@ corosync-xmlproc: corosync-xmlproc.sh
 
 EXTRA_DIST             = $(bin_SCRIPTS) corosync-xmlproc.sh corosync-notifyd.sysconfig.example
 
+corosync_cmapctl_LDADD = -lcorosync_common -lcmap $(LIBQB_LIBS)
+corosync_cmapctl_LDFLAGS= -L../lib -L../common_lib
 corosync_fplay_LDADD   = $(LIBQB_LIBS)
 corosync_pload_LDADD   = -lpload $(LIBQB_LIBS)
 corosync_pload_LDFLAGS = -L../lib
-corosync_cmapctl_LDADD = -lcmap $(LIBQB_LIBS)
-corosync_cmapctl_LDFLAGS= -L../lib
 corosync_cfgtool_LDADD = -lcfg $(LIBQB_LIBS)
 corosync_cfgtool_LDFLAGS= -L../lib
 corosync_cpgtool_LDADD = -lcfg -lcpg $(LIBQB_LIBS)