mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-07-27 01:22:10 +00:00
Support for specific libraries version
Patch adds support for changing version number of library simply by edit lib$(LIB).verso file. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2752 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
parent
efccdcf140
commit
4b18364c61
52
configure.ac
52
configure.ac
@ -135,6 +135,35 @@ AC_CONFIG_FILES([Makefile
|
||||
|
||||
### Local business
|
||||
|
||||
dnl ===============================================
|
||||
dnl Functions / global M4 variables
|
||||
dnl ===============================================
|
||||
dnl Global list of LIB names
|
||||
m4_define([local_soname_list], [])dnl
|
||||
|
||||
dnl Upcase parameter
|
||||
m4_define([local_upcase], [translit([$*], [a-z], [A-Z])])dnl
|
||||
|
||||
dnl M4 macro for include lib/lib$1.soname and subst that
|
||||
m4_define([LIB_SONAME_IMPORT],[dnl
|
||||
m4_define([local_libname], local_upcase($1)[_SONAME])dnl
|
||||
m4_define([local_soname], translit(m4_sinclude(lib/lib$1.verso), [
|
||||
], []))dnl
|
||||
local_libname="local_soname"dnl
|
||||
m4_define([local_soname_list], m4_defn([local_soname_list])[,]local_libname[,]local_upcase($1))dnl
|
||||
AC_SUBST(local_libname)dnl
|
||||
])dnl
|
||||
|
||||
dnl M4 macro for print padspaces (used in LIB_MSG_RESULT). It takes 2 arguments, length of string to pad and desired
|
||||
dnl (padded) length
|
||||
m4_define([m4_printpadspace],[ifelse(m4_eval([$2 - $1 < 1]),[1],,[ ][m4_printpadspace([$1],m4_eval([$2 - 1]))])])dnl
|
||||
|
||||
dnl Show AC_MSG_RESULT for specific libraries
|
||||
m4_define([LIB_MSG_RESULT], [ifelse([$#], [1], ,[dnl
|
||||
AC_MSG_RESULT([ $2 Library SONAME m4_printpadspace(len($2),8) = ${$1}])
|
||||
LIB_MSG_RESULT(m4_shift(m4_shift($@)))dnl
|
||||
])])dnl
|
||||
|
||||
# ===============================================
|
||||
# Helpers
|
||||
# ===============================================
|
||||
@ -168,17 +197,21 @@ PACKAGE_FEATURES=""
|
||||
LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \
|
||||
-badflag -D__gnuc_va_list=va_list -D__attribute\(x\)="
|
||||
|
||||
# libraries SONAME
|
||||
# default libraries SONAME
|
||||
SOMAJOR="4"
|
||||
SOMINOR="0"
|
||||
SOMICRO="0"
|
||||
SONAME="${SOMAJOR}.${SOMINOR}.${SOMICRO}"
|
||||
# Special for libcpg & libconfdb
|
||||
CPG_SOMICRO="1"
|
||||
CPG_SONAME="${SOMAJOR}.${SOMINOR}.${CPG_SOMICRO}"
|
||||
CONFDB_SOMICRO="0"
|
||||
CONFDB_SOMINOR="1"
|
||||
CONFDB_SONAME="${SOMAJOR}.${CONFDB_SOMINOR}.${CONFDB_SOMICRO}"
|
||||
|
||||
# specific libraries SONAME
|
||||
LIB_SONAME_IMPORT([cfg])
|
||||
LIB_SONAME_IMPORT([confdb])
|
||||
LIB_SONAME_IMPORT([cpg])
|
||||
LIB_SONAME_IMPORT([evs])
|
||||
LIB_SONAME_IMPORT([pload])
|
||||
LIB_SONAME_IMPORT([quorum])
|
||||
LIB_SONAME_IMPORT([sam])
|
||||
LIB_SONAME_IMPORT([votequorum])
|
||||
|
||||
# local options
|
||||
AC_ARG_ENABLE([ansi],
|
||||
@ -437,8 +470,6 @@ AC_SUBST([SOMAJOR])
|
||||
AC_SUBST([SOMINOR])
|
||||
AC_SUBST([SOMICRO])
|
||||
AC_SUBST([SONAME])
|
||||
AC_SUBST([CPG_SONAME])
|
||||
AC_SUBST([CONFDB_SONAME])
|
||||
AC_SUBST([COVERAGE_LCRSO_EXTRA_LDFLAGS])
|
||||
AC_SUBST([OS_DYFLAGS])
|
||||
|
||||
@ -488,8 +519,7 @@ AC_MSG_RESULT([ Features =${PACKAGE_FEATURES}])
|
||||
AC_MSG_RESULT([])
|
||||
AC_MSG_RESULT([$PACKAGE build info:])
|
||||
AC_MSG_RESULT([ Library SONAME = ${SONAME}])
|
||||
AC_MSG_RESULT([ CPG Library SONAME = ${CPG_SONAME}])
|
||||
AC_MSG_RESULT([ CONFDB Library SONAME = ${CONFDB_SONAME}])
|
||||
LIB_MSG_RESULT(m4_shift(local_soname_list))dnl
|
||||
AC_MSG_RESULT([ Default optimization = ${OPT_CFLAGS}])
|
||||
AC_MSG_RESULT([ Default debug options = ${GDB_CFLAGS}])
|
||||
AC_MSG_RESULT([ Extra compiler warnings = ${EXTRA_WARNING}])
|
||||
|
@ -30,6 +30,13 @@
|
||||
# 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)))
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
AM_CFLAGS = -fPIC
|
||||
@ -40,10 +47,7 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
|
||||
|
||||
lib_LIBRARIES = libcpg.a libconfdb.a libevs.a libcfg.a libquorum.a \
|
||||
libvotequorum.a libpload.a libcoroipcc.a libsam.a
|
||||
SHARED_LIBS = $(filter-out libcpg.so.$(SONAME) libconfdb.so.$(SONAME), $(lib_LIBRARIES:%.a=%.so.$(SONAME))) \
|
||||
libcpg.so.$(CPG_SONAME) libconfdb.so.$(CONFDB_SONAME)
|
||||
SHARED_LIBS_SO = $(lib_LIBRARIES:%.a=%.so)
|
||||
SHARED_LIBS_SO_TWO = $(lib_LIBRARIES:%.a=%.so.$(SOMAJOR))
|
||||
|
||||
libcpg_a_SOURCES = cpg.c
|
||||
libcfg_a_SOURCES = cfg.c
|
||||
@ -52,6 +56,7 @@ libpload_a_SOURCES = pload.c
|
||||
libquorum_a_SOURCES = quorum.c
|
||||
libvotequorum_a_SOURCES = votequorum.c
|
||||
libconfdb_a_SOURCES = confdb.c sa-confdb.c
|
||||
libconfdb_a_LIBADD = ../lcr/lcr_ifact.o
|
||||
libcoroipcc_a_SOURCES = coroipcc.c
|
||||
libsam_a_SOURCES = sam.c
|
||||
|
||||
@ -72,21 +77,10 @@ libcoroipcc.so.$(SONAME): coroipcc.o
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so.$(SOMAJOR)
|
||||
|
||||
libconfdb.so.$(CONFDB_SONAME): confdb.o sa-confdb.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) $(LDFLAGS) $(DARWIN_OPTS) coroipcc.o confdb.o \
|
||||
sa-confdb.o ../lcr/lcr_ifact.o -o $@ -ldl $(AM_LDFLAGS)
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so.$(SOMAJOR)
|
||||
|
||||
libcpg.so.$(CPG_SONAME): cpg.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) $(DARWIN_OPTS) $^ -o $@
|
||||
ln -sf $@ libcpg.so
|
||||
ln -sf $@ libcpg.so.$(SOMAJOR)
|
||||
|
||||
lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) $(DARWIN_OPTS) $^ -o $@
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so.$(SOMAJOR)
|
||||
lib%.so: lib%.a libcoroipcc.so.$(SONAME)
|
||||
$(CC) $(DARWIN_OPTS) -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
|
||||
|
||||
@ -97,21 +91,10 @@ libcoroipcc.so.$(SONAME): coroipcc.o
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so.$(SOMAJOR)
|
||||
|
||||
libconfdb.so.$(CONFDB_SONAME): confdb.o sa-confdb.o libcoroipcc.so.$(SONAME)
|
||||
$(LD) $(LDFLAGS) $(SOLARIS_OPTS) -G coroipcc.o confdb.o \
|
||||
sa-confdb.o ../lcr/lcr_ifact.o -o $@ -ldl $(AM_LDFLAGS)
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so.$(SOMAJOR)
|
||||
|
||||
libcpg.so.$(CPG_SONAME): cpg.o libcoroipcc.so.$(SONAME)
|
||||
$(LD) $(SOLARIS_OPTS) -G $^ -o $@
|
||||
ln -sf $@ libcpg.so
|
||||
ln -sf $@ libcpg.so.$(SOMAJOR)
|
||||
|
||||
lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME)
|
||||
$(LD) $(SOLARIS_OPTS) -G $^ -o $@
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so.$(SOMAJOR)
|
||||
lib%.so.$(SONAME): lib%.a libcoroipcc.so.$(SONAME)
|
||||
$(LD) $(SOLARIS_OPTS) -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
|
||||
|
||||
@ -123,45 +106,29 @@ libcoroipcc.so.$(SONAME): coroipcc.o
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so
|
||||
ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so.$(SOMAJOR)
|
||||
|
||||
libconfdb.so.$(CONFDB_SONAME): confdb.o sa-confdb.o ../lcr/lcr_ifact.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) -shared -o $@ \
|
||||
-Wl,-soname=libconfdb.so.$(SOMAJOR) \
|
||||
-Wl,-version-script=$(srcdir)/libconfdb.versions \
|
||||
$^ $(LDFLAGS) $(OS_DYFLAGS) $(OS_LDL) $(AM_LDFLAGS)
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so
|
||||
ln -sf libconfdb.so.$(CONFDB_SONAME) libconfdb.so.$(SOMAJOR)
|
||||
|
||||
libcpg.so.$(CPG_SONAME): cpg.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) -shared -o $@ \
|
||||
-Wl,-soname=libcpg.so.$(SOMAJOR) \
|
||||
-Wl,-version-script=$(srcdir)/libcpg.versions \
|
||||
$^ $(LDFLAGS) $(AM_LDFLAGS)
|
||||
ln -sf $@ libcpg.so
|
||||
ln -sf $@ libcpg.so.$(SOMAJOR)
|
||||
|
||||
lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME)
|
||||
$(CC) -shared -o $@ \
|
||||
-Wl,-soname=lib$*.so.$(SOMAJOR) \
|
||||
lib%.so: lib%.a libcoroipcc.so.$(SONAME)
|
||||
$(CC) -shared -o $@.$(call get_soname,$*) \
|
||||
-Wl,-soname=lib$*.so.$(call get_major,$*) \
|
||||
-Wl,-version-script=$(srcdir)/lib$*.versions \
|
||||
$^ $(LDFLAGS) $(AM_LDFLAGS)
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so
|
||||
ln -sf lib$*.so.$(SONAME) lib$*.so.$(SOMAJOR)
|
||||
-Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(AM_LDFLAGS)
|
||||
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: $(SHARED_LIBS)
|
||||
all-local: $(SHARED_LIBS_SO)
|
||||
@echo Built shared libs
|
||||
|
||||
install-exec-local:
|
||||
$(INSTALL) -d $(DESTDIR)/$(libdir)
|
||||
$(INSTALL) -m 755 $(SHARED_LIBS) $(DESTDIR)/$(libdir)
|
||||
$(CP) -a $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO) $(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 $(SHARED_LIBS) $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO)
|
||||
rm -f $(get_sharedlibs) $(SHARED_LIBS_SO) $(get_sharedlibs_two)
|
||||
|
||||
clean-local:
|
||||
rm -f *.o *.a *.so* *.da *.bb *.bbg
|
||||
|
1
lib/libcfg.verso
Normal file
1
lib/libcfg.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
1
lib/libconfdb.verso
Normal file
1
lib/libconfdb.verso
Normal file
@ -0,0 +1 @@
|
||||
4.1.0
|
1
lib/libcpg.verso
Normal file
1
lib/libcpg.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.1
|
1
lib/libevs.verso
Normal file
1
lib/libevs.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
1
lib/libpload.verso
Normal file
1
lib/libpload.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
1
lib/libquorum.verso
Normal file
1
lib/libquorum.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
1
lib/libsam.verso
Normal file
1
lib/libsam.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
1
lib/libvotequorum.verso
Normal file
1
lib/libvotequorum.verso
Normal file
@ -0,0 +1 @@
|
||||
4.0.0
|
Loading…
Reference in New Issue
Block a user