Skip to content

Commit 020ea40

Browse files
committed
Makefile: enable symbol versioning by default
This enables symbol versioning by default, with the version string `JL_LIBJULIA_1.10` (the version suffix is the SOMAJOR in general). As part of this change, the SOMAJOR has also been changed to be MAJOR.MINOR instead of just MAJOR. This is required to allow multiple minor releases of libjulia to live side-by-side in the same process. `SYMBOL_VERSION_SUFFIX` is provided to allow appending an additional unique "salt" to SOMAJOR, which can be helpful for creating template binaries that will be "version-stamped" after distribution.
1 parent 070a7ab commit 020ea40

File tree

3 files changed

+9
-13
lines changed

3 files changed

+9
-13
lines changed

Make.inc

+7-11
Original file line numberDiff line numberDiff line change
@@ -188,21 +188,17 @@ JULIA_MINOR_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'.
188188
JULIA_PATCH_VERSION := $(shell echo $(JULIA_VERSION) | cut -d'-' -f 1 | cut -d'+' -f 1 | cut -d'.' -f 3)
189189

190190
# libjulia's SONAME will follow the format libjulia.so.$(SOMAJOR). Before v1.0.0,
191-
# SOMAJOR will be a two-decimal value, e.g. libjulia.so.0.5, whereas at and beyond
192-
# v1.0.0, SOMAJOR will be simply the major version number, e.g. libjulia.so.1
191+
# somajor was a two-decimal value (e.g. libjulia.so.0.5). During v1.0.x - v1.9.x,
192+
# somajor was simply the major version number (e.g. libjulia.so.1). Starting in
193+
# v1.10.0, somajor is major.minor again (e.g. libjulia.so.1.10)
193194
# The file itself will ultimately symlink to libjulia.so.$(SOMAJOR).$(SOMINOR)
194-
ifeq ($(JULIA_MAJOR_VERSION),0)
195195
SOMAJOR := $(JULIA_MAJOR_VERSION).$(JULIA_MINOR_VERSION)
196196
SOMINOR := $(JULIA_PATCH_VERSION)
197-
else
198-
SOMAJOR := $(JULIA_MAJOR_VERSION)
199-
SOMINOR := $(JULIA_MINOR_VERSION)
200-
endif
201197

202-
# In order to load multiple libjulia's with different DEFAULT_SYMBOL_VERSION
203-
# each must have a unique SONAME
204-
ifdef DEFAULT_SYMBOL_VERSION
205-
SOMAJOR := "$(SOMAJOR)-$(DEFAULT_SYMBOL_VERSION)"
198+
# This suffix affects libjulia's SONAME and the symbol version associated with
199+
# all of its exported symbols.
200+
ifdef SYMBOL_VERSION_SUFFIX
201+
SOMAJOR := $(SOMAJOR)_$(SYMBOL_VERSION_SUFFIX)
206202
endif
207203

208204
ifneq ($(NO_GIT), 1)

cli/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ $(build_bindir)/julia-debug$(EXE): $(EXE_DOBJS) $(build_shlibdir)/libjulia-debug
149149
@$(call PRINT_LINK, $(CC) $(LOADER_CFLAGS) $(DEBUGFLAGS) $(EXE_DOBJS) -o $@ $(LOADER_LDFLAGS) $(RPATH) -ljulia-debug)
150150

151151
$(BUILDDIR)/julia.expmap: $(SRCDIR)/julia.expmap.in
152-
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/$(DEFAULT_SYMBOL_VERSION)/'
152+
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/JL_LIBJULIA_$(SOMAJOR)/'
153153

154154
clean: | $(CLEAN_TARGETS)
155155
rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.dbg.obj

src/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ $(BUILDDIR)/julia_version.h: $(JULIAHOME)/VERSION
364364
CXXLD = $(CXX) -shared
365365

366366
$(BUILDDIR)/julia.expmap: $(SRCDIR)/julia.expmap.in
367-
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/$(DEFAULT_SYMBOL_VERSION)/'
367+
sed <'$<' >'$@' -e 's/@JULIA_SHLIB_SYMBOL_VERSION@/JL_LIBJULIA_$(SOMAJOR)/'
368368

369369
$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(BUILDDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
370370
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JL_CXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ \

0 commit comments

Comments
 (0)