Skip to content

Commit

Permalink
Add SOVERSION and properly name library filename
Browse files Browse the repository at this point in the history
We should be a good citizen, and properly name our libraries on-disk and
within the shared library, where appropriate
  • Loading branch information
staticfloat committed Jan 29, 2022
1 parent d0e1a21 commit 39d859e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
16 changes: 16 additions & 0 deletions src/Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,32 @@ ifneq (,$(findstring MINGW,$(OS))$(findstring MSYS,$(OS))$(findstring CYGWIN,$(O
OS := WINNT
endif

LBT_SOVERSION_MAJOR := 4
LBT_SOVERSION_MINOR := 1
LBT_SOVERSION_PATCH := 0

ifeq ($(OS), WINNT)
SHLIB_EXT := dll
EXE := .exe
binlib := bin

LIB_FULL_VERSION := libblastrampoline-$(LBT_SOVERSION_MAJOR)-$(LBT_SOVERSION_MINOR)-$(LBT_SOVERSION_PATCH).dll
LIB_MAJOR_VERSION := libblastrampoline-$(LBT_SOVERSION_MAJOR).dll
SONAME_FLAG :=
else ifeq ($(OS), Darwin)
SHLIB_EXT := dylib
binlib := lib

LIB_FULL_VERSION := libblastrampoline.$(LBT_SOVERSION_MAJOR).$(LBT_SOVERSION_MINOR).$(LBT_SOVERSION_PATCH).dylib
LIB_MAJOR_VERSION := libblastrampoline.$(LBT_SOVERSION_MAJOR).dylib
SONAME_FLAG := -Wl,-install_name=@rpath/$(LIB_FULL_VERSION)
else
SHLIB_EXT := so
binlib := lib

LIB_FULL_VERSION := libblastrampoline.so.$(LBT_SOVERSION_MAJOR).$(LBT_SOVERSION_MINOR).$(LBT_SOVERSION_PATCH)
LIB_MAJOR_VERSION := libblastrampoline.so.$(LBT_SOVERSION_MAJOR)
SONAME_FLAG := -Wl,-soname=$(LIB_FULL_VERSION)
endif

LBT_CFLAGS := -g -O2 -std=c99 -fPIC -DLIBRARY_EXPORTS -D_GNU_SOURCE $(CFLAGS)
Expand Down
15 changes: 11 additions & 4 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,26 @@ $(builddir)/trampolines/%.o: trampolines/%.S exported_funcs.inc | $(builddir)/tr
dump-trampolines: trampolines/trampolines_$(ARCH).S
$(CC) $< -S | sed -E 's/ ((%%)|;) /\n/g' | sed -E 's/.global/\n.global/g'

$(builddir)/libblastrampoline.$(SHLIB_EXT): $(MAIN_OBJS)
@$(call PRINT_CC,$(CC) -o $@ $(call IMPLIB_FLAGS,$@) $(LBT_CFLAGS) $^ -shared $(LBT_LDFLAGS))

$(builddir)/$(LIB_FULL_VERSION): $(MAIN_OBJS)
@$(call PRINT_CC,$(CC) -o "$@" $(call IMPLIB_FLAGS,$@) $(LBT_CFLAGS) $^ -shared $(LBT_LDFLAGS))

$(builddir)/$(LIB_MAJOR_VERSION): | $(builddir)/$(LIB_FULL_VERSION)
ln -sf "$(LIB_FULL_VERSION)" "$@"

$(builddir)/libblastrampoline.$(SHLIB_EXT): | $(builddir)/$(LIB_MAJOR_VERSION)
ln -sf "$(LIB_MAJOR_VERSION)" "$@"

# Install both libraries and our headers
install: $(builddir)/libblastrampoline.$(SHLIB_EXT)
@mkdir -p $(prefix)/include/libblastrampoline
-@cp -Ra $(LBT_ROOT)/include/* $(prefix)/include/libblastrampoline
@cp -a $(LBT_ROOT)/src/libblastrampoline.h $(prefix)/include/
@mkdir -p $(prefix)/$(binlib)
@cp -a $(builddir)/libblastrampoline.$(SHLIB_EXT) $(prefix)/$(binlib)
@cp -a $(builddir)/libblastrampoline*$(SHLIB_EXT)* $(prefix)/$(binlib)/
ifeq ($(OS),WINNT)
@mkdir -p $(prefix)/lib
@cp -a $(builddir)/libblastrampoline.$(SHLIB_EXT).a $(prefix)/lib
@cp -a $(builddir)/$(LIB_FULL_VERSION).a $(prefix)/lib
endif

clean:
Expand Down

0 comments on commit 39d859e

Please sign in to comment.