Advertisement
darkxst

soname versioning

Feb 1st, 2013
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.96 KB | None | 0 0
  1. From cc7b4a6c6e106efc96447bb250755e86997fe205 Mon Sep 17 00:00:00 2001
  2. From: Tim Lunn <tim@feathertop.org>
  3. Date: Sat, 2 Feb 2013 10:25:58 +1100
  4. Subject: [PATCH] Correct versioning of installed shared library.
  5.  
  6. To be distro-friendly shared libraries should have a version suffix
  7. that indicates ABI/API compatibility.
  8.  
  9. This was lifted from previous libname patches from the js185 release,
  10. with only minor changes.
  11. ---
  12. js/src/Makefile.in | 42 ++++++++++++++++++++++++++++++++++++++++--
  13.  1 file changed, 40 insertions(+), 2 deletions(-)
  14.  
  15. diff --git a/js/src/Makefile.in b/js/src/Makefile.in
  16. index 100f6d5..45f9a91 100644
  17. --- a/js/src/Makefile.in
  18. +++ b/js/src/Makefile.in
  19. @@ -33,8 +33,15 @@ endif
  20.  
  21.  TEST_DIRS += tests
  22.  
  23. +SRCREL_VERSION      = 0.0.0
  24. +SRCREL_ABI_VERSION  := $(word 1,$(subst ., ,$(SRCREL_VERSION)))
  25. +
  26.  MODULE         = js
  27. +ifeq (,$(HOST_BIN_SUFFIX))
  28.  LIBRARY_NAME       = mozjs-@MOZJS_MAJOR_VERSION@.@MOZJS_MINOR_VERSION@@MOZJS_ALPHA@
  29. +else
  30. +LIBRARY_NAME       = mozjs
  31. +endif
  32.  STATIC_LIBRARY_NAME = js_static
  33.  GRE_MODULE     = 1
  34.  
  35. @@ -736,6 +743,7 @@ endif
  36.  # - OS_LIBS includes libraries selected by the configure script.
  37.  # - EXTRA_LIBS includes libraries selected by this Makefile.
  38.  JS_CONFIG_LIBS=$(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS)
  39. +JS_CONFIG_MOZ_JS_LIBS=-L$(libdir) -l$(LIBRARY_NAME)
  40.  
  41.  # The configure script invokes this rule explicitly at configure time!
  42.  # It's important that js-config be ready by the time we're done
  43. @@ -760,7 +768,7 @@ JS_CONFIG_SUBSTITUTIONS=\
  44.     -DMOZILLA_VERSION="$(MOZILLA_VERSION)" \
  45.     -DLIBRARY_NAME="$(LIBRARY_NAME)" \
  46.     -DJS_CONFIG_LIBS="$(JS_CONFIG_LIBS)" \
  47. -   -DMOZ_JS_LIBS="$(MOZ_JS_LIBS)" \
  48. +   -DMOZ_JS_LIBS="$(JS_CONFIG_MOZ_JS_LIBS)" \
  49.     -DMOZJS_MAJOR_VERSION="$(MOZJS_MAJOR_VERSION)" \
  50.     -DMOZJS_MINOR_VERSION="$(MOZJS_MINOR_VERSION)" \
  51.     -DMOZJS_PATCH_VERSION="$(MOZJS_PATCH_VERSION)" \
  52. @@ -780,7 +788,6 @@ SDK_BINARY = js-config
  53.  $(LIBRARY_NAME).pc: js.pc.in js-config
  54.     $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(JS_CONFIG_SUBSTITUTIONS) $< > $@
  55.  
  56. -
  57.  install:: $(INSTALLED_HEADERS)
  58.     $(SYSINSTALL) $^ $(DESTDIR)$(includedir)/$(LIBRARY_NAME)
  59.  
  60. @@ -799,12 +806,43 @@ install:: $(EXPORTS_mozilla)
  61.  install:: $(SCRIPTS)
  62.     $(SYSINSTALL) $^ $(DESTDIR)$(bindir)
  63.  
  64. +ifeq (,$(HOST_BIN_SUFFIX))
  65. +ifeq (.dylib,$(DLL_SUFFIX))
  66. +# Mac OS X
  67. +SHLIB_ANY_VER   := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
  68. +SHLIB_ABI_VER   := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY:$(DLL_SUFFIX)=.$(SRCREL_ABI_VERSION)$(DLL_SUFFIX))
  69. +SHLIB_EXACT_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY:$(DLL_SUFFIX)=.$(SRCREL_VERSION)$(DLL_SUFFIX))
  70. +$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -install_name $(SHLIB_ABI_VER)
  71. +$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -current_version $(SRCREL_VERSION)
  72. +$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -compatibility_version $(SRCREL_ABI_VERSION)
  73. +else
  74. +# Generic Unix / Linux
  75. +SHLIB_ANY_VER   := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
  76. +SHLIB_ABI_VER   := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY).$(SRCREL_ABI_VERSION)
  77. +SHLIB_EXACT_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY).$(SRCREL_VERSION)
  78. +$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -Wl,-soname,$(notdir $(SHLIB_ABI_VER))
  79. +endif
  80. +endif
  81. +
  82. +
  83.  install:: $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
  84.  ifneq (,$(LIBRARY))
  85.     $(SYSINSTALL) $(LIBRARY) $(DESTDIR)$(libdir)
  86. +ifeq (,$(HOST_BIN_SUFFIX))
  87. +   mv -f $(DESTDIR)$(libdir)/$(LIBRARY) $(subst $(STATIC_LIBRARY_NAME),$(LIBRARY_NAME)-$(SRCREL_ABI_VERSION),$(DESTDIR)$(libdir)/$(LIBRARY))
  88. +endif
  89.  endif
  90.  ifneq (,$(SHARED_LIBRARY))
  91. +ifeq (,$(HOST_BIN_SUFFIX))
  92. +   @[ ! -h $(SHLIB_ANY_VER) ] || rm -f $(SHLIB_ANY_VER)
  93. +endif
  94.     $(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
  95. +ifeq (,$(HOST_BIN_SUFFIX))
  96. +   mv -f $(SHLIB_ANY_VER) $(SHLIB_EXACT_VER)
  97. +   @[ ! -h $(SHLIB_ABI_VER) ] || rm -f $(SHLIB_ABI_VER)
  98. +   ln -s $(notdir $(SHLIB_EXACT_VER)) $(SHLIB_ABI_VER)
  99. +   ln -s $(notdir $(SHLIB_ABI_VER)) $(SHLIB_ANY_VER)
  100. +endif
  101.  endif
  102.  ifneq (,$(IMPORT_LIBRARY))
  103.     $(SYSINSTALL) $(IMPORT_LIBRARY) $(DESTDIR)$(libdir)
  104. --
  105. 1.8.0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement