| # Global rules for building shared libraries -*-Makefile-*- |
| # |
| # Each individual makefile should define the following variables: |
| # LIBRARY : name of the library being built (without the lib prefix) |
| # SOVERSION : the .so file version |
| # |
| # plus all variables required by the global Make.rules.in |
| # |
| |
| DEFS = $(EXTRADEFS) |
| DLLFLAGS = @DLLFLAGS@ |
| LIBEXT = @LIBEXT@ |
| LIBNAME = lib$(LIBRARY) |
| DEFNAME = $(LIBRARY).def |
| SONAME = $(LIBNAME).so.$(SOVERSION) |
| MODULE = $(LIBNAME).$(LIBEXT) |
| |
| all: $(MODULE) $(MODULE:.dll=.a) |
| |
| @MAKE_RULES@ |
| |
| $(LIBNAME).so.$(SOVERSION): $(OBJS) $(VERSCRIPT) Makefile.in |
| $(LDSHARED) $(OBJS) $(EXTRALIBS) $(LDFLAGS) $(LIBS) -o $@ |
| |
| $(LIBNAME).so: $(LIBNAME).so.$(SOVERSION) |
| $(RM) $@ && $(LN_S) $(LIBNAME).so.$(SOVERSION) $@ |
| |
| $(LIBNAME).a: $(DEFNAME) |
| $(DLLTOOL) -l $@ -d $(SRCDIR)/$(DEFNAME) |
| |
| $(LIBNAME).dll: $(OBJS) $(DEFNAME) Makefile.in |
| $(DLLWRAP) --def $(SRCDIR)/$(DEFNAME) -o $@ $(OBJS) $(EXTRALIBS) |
| |
| $(LIBNAME).$(SOVERSION).dylib: $(OBJS) Makefile.in |
| $(LDSHARED) -install_name $(libdir)/$(LIBNAME).$(SOVERSION).dylib $(OBJS) $(EXTRALIBS) $(LDFLAGS) $(LIBS) -o $@ |
| |
| $(LIBNAME).dylib: $(LIBNAME).$(SOVERSION).dylib |
| $(RM) $@ && $(LN_S) $(LIBNAME).$(SOVERSION).dylib $@ |
| |
| .PHONY: install-lib-so install-lib-dll install-lib-dylib install-dev-so install-dev-dll install-dev-dylib |
| |
| install-lib-so: $(LIBNAME).so.$(SOVERSION) dummy |
| $(MKINSTALLDIRS) $(libdir) |
| $(INSTALL_PROGRAM) $(LIBNAME).so.$(SOVERSION) $(libdir)/$(LIBNAME).so.$(SOVERSION) |
| |
| install-lib-dll: $(LIBNAME).dll dummy |
| $(MKINSTALLDIRS) $(libdir) |
| $(INSTALL_DATA) $(LIBNAME).dll $(libdir)/$(LIBNAME).dll |
| |
| install-lib-dylib: $(LIBNAME).$(SOVERSION).dylib dummy |
| $(MKINSTALLDIRS) $(libdir) |
| $(INSTALL_PROGRAM) $(LIBNAME).$(SOVERSION).dylib $(libdir)/$(LIBNAME).$(SOVERSION).dylib |
| |
| install-dev-so: dummy |
| $(MKINSTALLDIRS) $(libdir) |
| cd $(libdir) && $(RM) $(LIBNAME).so && $(LN_S) $(LIBNAME).so.$(SOVERSION) $(LIBNAME).so |
| |
| install-dev-dll: $(LIBNAME).a dummy |
| $(MKINSTALLDIRS) $(libdir) |
| $(INSTALL_DATA) $(LIBNAME).a $(libdir)/$(LIBNAME).a |
| |
| install-dev-dylib: dummy |
| $(MKINSTALLDIRS) $(libdir) |
| cd $(libdir) && $(RM) $(LIBNAME).dylib && $(LN_S) $(LIBNAME).$(SOVERSION).dylib $(LIBNAME).dylib |
| |
| install install-lib:: $(LIBEXT:%=install-lib-%) |
| install install-dev:: $(LIBEXT:%=install-dev-%) |
| |
| uninstall:: |
| $(RM) $(libdir)/$(LIBNAME).a $(libdir)/$(LIBNAME).dll $(libdir)/$(LIBNAME).so $(libdir)/$(LIBNAME).so.$(SOVERSION) $(libdir)/$(LIBNAME).dylib $(libdir)/$(LIBNAME).$(SOVERSION).dylib |
| |
| clean:: |
| $(RM) $(LIBNAME).so.$(SOVERSION) $(LIBNAME).dll $(LIBNAME).$(SOVERSION).dylib |