Add soname to chibi shared library

Including a soname with a public shared library is a good practice and
is required by the policy of many distributions such as Debian.  The
major version of the soname distinguishes incompatible versions of the
shared library.
This commit is contained in:
Travis Cross 2014-04-05 22:04:31 +00:00
parent 04589e163d
commit d778af2a3b
3 changed files with 18 additions and 3 deletions

View file

@ -4,6 +4,7 @@ syntax: glob
*.s *.s
*.o *.o
*.so *.so
*.so.*
*.pc *.pc
*.sch *.sch
*.sps *.sps

View file

@ -4,6 +4,8 @@
.DEFAULT_GOAL := all .DEFAULT_GOAL := all
VERSION ?= $(shell cat VERSION) VERSION ?= $(shell cat VERSION)
SOVERSION ?= $(shell echo "$(VERSION)" | sed "s/^\(\(\.\?[0-9]\+\)*\).*$$/\1/")
SOVERSION_MAJOR ?= $(shell echo "$(SOVERSION)" | sed "s/\..*//")
CHIBI_FFI ?= $(CHIBI) -q tools/chibi-ffi CHIBI_FFI ?= $(CHIBI) -q tools/chibi-ffi
CHIBI_FFI_DEPENDENCIES ?= $(CHIBI_DEPENDENCIES) tools/chibi-ffi CHIBI_FFI_DEPENDENCIES ?= $(CHIBI_DEPENDENCIES) tools/chibi-ffi
@ -98,8 +100,14 @@ EVAL_OBJS = opcodes.o vm.o eval.o simplify.o
libchibi-sexp$(SO): $(SEXP_OBJS) libchibi-sexp$(SO): $(SEXP_OBJS)
$(CC) $(CLIBFLAGS) $(CLINKFLAGS) -o $@ $^ $(XLDFLAGS) $(CC) $(CLIBFLAGS) $(CLINKFLAGS) -o $@ $^ $(XLDFLAGS)
libchibi-scheme$(SO): $(SEXP_OBJS) $(EVAL_OBJS) libchibi-scheme$(SO).$(SOVERSION): $(SEXP_OBJS) $(EVAL_OBJS)
$(CC) $(CLIBFLAGS) $(CLINKFLAGS) -o $@ $^ $(XLDFLAGS) $(CC) $(CLIBFLAGS) $(CLINKFLAGS) -Wl,-soname,libchibi-scheme$(SO).$(SOVERSION_MAJOR) -o $@ $^ $(XLDFLAGS)
libchibi-scheme$(SO).$(SOVERSION_MAJOR): libchibi-scheme$(SO).$(SOVERSION)
$(LN) -sf $< $@
libchibi-scheme$(SO): libchibi-scheme$(SO).$(SOVERSION_MAJOR)
$(LN) -sf $< $@
libchibi-scheme.a: $(SEXP_OBJS) $(EVAL_OBJS) libchibi-scheme.a: $(SEXP_OBJS) $(EVAL_OBJS)
$(AR) rcs $@ $^ $(AR) rcs $@ $^
@ -317,7 +325,9 @@ install: all
$(INSTALL) -m0644 $(INCLUDES) $(DESTDIR)$(INCDIR)/ $(INSTALL) -m0644 $(INCLUDES) $(DESTDIR)$(INCDIR)/
$(MKDIR) $(DESTDIR)$(LIBDIR) $(MKDIR) $(DESTDIR)$(LIBDIR)
$(MKDIR) $(DESTDIR)$(SOLIBDIR) $(MKDIR) $(DESTDIR)$(SOLIBDIR)
$(INSTALL) -m0644 libchibi-scheme$(SO) $(DESTDIR)$(SOLIBDIR)/ $(INSTALL) -m0644 libchibi-scheme$(SO).$(SOVERSION) $(DESTDIR)$(SOLIBDIR)/
$(CP) -d libchibi-scheme$(SO).$(SOVERSION_MAJOR) $(DESTDIR)$(SOLIBDIR)/
$(CP) -d libchibi-scheme$(SO) $(DESTDIR)$(SOLIBDIR)/
-$(INSTALL) -m0644 libchibi-scheme.a $(DESTDIR)$(SOLIBDIR)/ -$(INSTALL) -m0644 libchibi-scheme.a $(DESTDIR)$(SOLIBDIR)/
$(MKDIR) $(DESTDIR)$(SOLIBDIR)/pkgconfig $(MKDIR) $(DESTDIR)$(SOLIBDIR)/pkgconfig
$(INSTALL) -m0644 chibi-scheme.pc $(DESTDIR)$(SOLIBDIR)/pkgconfig/ $(INSTALL) -m0644 chibi-scheme.pc $(DESTDIR)$(SOLIBDIR)/pkgconfig/
@ -333,6 +343,8 @@ uninstall:
-$(RM) $(DESTDIR)$(BINDIR)/chibi-ffi -$(RM) $(DESTDIR)$(BINDIR)/chibi-ffi
-$(RM) $(DESTDIR)$(BINDIR)/chibi-doc -$(RM) $(DESTDIR)$(BINDIR)/chibi-doc
-$(RM) $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO) -$(RM) $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO)
-$(RM) $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO).$(SOVERSION)
-$(RM) $(DESTDIR)$(SOLIBDIR)/libchibi-scheme$(SO).$(SOVERSION_MAJOR)
-$(RM) $(DESTDIR)$(LIBDIR)/libchibi-scheme$(SO).a -$(RM) $(DESTDIR)$(LIBDIR)/libchibi-scheme$(SO).a
-$(RM) $(DESTDIR)$(SOLIBDIR)/pkgconfig/chibi-scheme.pc -$(RM) $(DESTDIR)$(SOLIBDIR)/pkgconfig/chibi-scheme.pc
-$(CD) $(DESTDIR)$(INCDIR) && $(RM) $(INCLUDES) -$(CD) $(DESTDIR)$(INCDIR) && $(RM) $(INCLUDES)

View file

@ -13,6 +13,8 @@ AR ?= ar
CD ?= cd CD ?= cd
RM ?= rm -f RM ?= rm -f
LS ?= ls LS ?= ls
CP ?= cp
LN ?= ln
INSTALL ?= install INSTALL ?= install
MKDIR ?= $(INSTALL) -d MKDIR ?= $(INSTALL) -d
RMDIR ?= rmdir RMDIR ?= rmdir