Make shared library version numbers use 3 components

This commit is contained in:
Andrew Johnson
2014-11-11 12:57:00 -06:00
parent 69daab81d5
commit 5554dfd66d
4 changed files with 29 additions and 22 deletions

View File

@@ -14,8 +14,8 @@
EPICS_BASE_HOST_BIN = $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)
EPICS_BASE_HOST_LIB = $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)
ifdef T_A
EPICS_BASE_LIB = $(EPICS_BASE)/lib/$(T_A)
EPICS_BASE_BIN = $(EPICS_BASE)/bin/$(T_A)
EPICS_BASE_LIB = $(EPICS_BASE)/lib/$(T_A)
EPICS_BASE_BIN = $(EPICS_BASE)/bin/$(T_A)
endif
#---------------------------------------------------------------
@@ -33,8 +33,10 @@ EPICS_BASE_HOST_LIBS += ca Com
# Version number for base shared libraries (and win32 products)
ifdef BASE_TOP
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION)
PROD_VERSION = $(EPICS_VERSION).$(EPICS_REVISION)
# Unix lib.so.<v.r.m> Darwin lib.<v.r.m>.dylib
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
# Windows only allows 2 levels of version numbering
PROD_VERSION = $(EPICS_VERSION).$(EPICS_REVISION)
endif # BASE_TOP
#---------------------------------------------------------------
@@ -84,12 +86,15 @@ ELEX = $(call PATH_FILTER, $(TOOLS)/e_flex$(HOSTEXE)) -S$(EPICS_BASE)/include/fl
YACC = $(EYACC)
LEX = $(ELEX)
#---------------------------------------------------------------
# msi used to be an external tool
MSI ?= $(EPICS_BASE_HOST_BIN)/msi
#---------------------------------------------------------------
# External tools and tool flags - must be in path or defined in application
ifndef ADL2DL
ADL2DL = adl2dl
endif
ADL2DL ?= adl2dl
# sch2edif compiler and flags
SCH2EDIF = sch2edif
@@ -99,18 +104,11 @@ SCH2EDIF_FLAGS =
# e2db and flags
# - again there is an assumption where edb.def is installed.
ifndef E2DB
E2DB = e2db
endif
E2DB ?= e2db
E2DB_SYSFLAGS = -ate -d $(CAPFAST_TEMPLATES)/edb.def
E2DB_FLAGS =
ifndef DBST
DBST = dbst
endif
ifndef MSI
MSI = $(EPICS_BASE_HOST_BIN)/msi
endif
DBST ?= dbst

View File

@@ -68,13 +68,12 @@ GNU = NO
#
# Darwin shared libraries
#
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
-install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
-current_version $(SHRLIB_VERSION)
-install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \
$(addprefix -compatibility_version , $(SHRLIB_VERSION)) \
$(addprefix -current_version , $(SHRLIB_VERSION))
SHRLIB_SUFFIX_BASE = .dylib
SHRLIB_SUFFIX = .$(SHRLIB_VERSION)$(SHRLIB_SUFFIX_BASE)
SHRLIB_SUFFIX = $(addprefix ., $(SHRLIB_VERSION))$(SHRLIB_SUFFIX_BASE)
LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress

View File

@@ -130,6 +130,7 @@ RANLIB=
# -LTCG whole program optimization
# -incremental:no full linking
# -fixed:no generate relocatable code
# -version:<major>.<minor> - only 2 components allowed, 0-65535 each
# -debug generate debugging info
LINK_OPT_FLAGS_YES = -LTCG -incremental:no -opt:ref \
-release $(PROD_VERSION:%=-version:%)

View File

@@ -14,6 +14,15 @@
<h2 align="center">Changes between 3.15.0.2 and 3.15.1</h2>
<!-- Insert new items immediately below here ... -->
<h3>Shared Library Versions</h3>
<p>On architectures that can support it, the shared library version number for
libraries provided with Base has had the third component of the EPICS version
number added to it, thus libCom.so.3.15.1 instead of libCom.so.3.15. Windows
can only support two components to its internal product version number, and the
Darwin bug that external shared libraries were being built using the EPICS
version number has been fixed.</p>
<h3>Hooking into dbLoadRecords</h3>
<p>A function pointer hook has been added to the dbLoadRecords() routine, to