| On Darwin, create dylibs with a versioning scheme like Linux/ELF, not |
| like BSD/ELF. |
| This patch uses intentionally ELF_* vars to make it easier to diff |
| against the ELF Makefile. |
| |
| http://sourceforge.net/tracker/index.php?func=detail&aid=2555389&group_id=2406&atid=302406 |
| |
| --- lib/Makefile.darwin-lib |
| +++ lib/Makefile.darwin-lib |
| @@ -1,14 +1,15 @@ |
| # |
| -# This is a Makefile stub which handles the creation of Darwin BSD shared |
| -# libraries. |
| +# This is a Makefile stub which handles the creation of Darwin shared |
| +# libraries based on the ELF scheme. |
| # |
| # In order to use this stub, the following makefile variables must be defined. |
| -# |
| -# BSDLIB_VERSION = 1.0 |
| -# BSDLIB_IMAGE = libce |
| -# BSDLIB_MYDIR = et |
| -# BSDLIB_INSTALL_DIR = $(SHLIBDIR) |
| -# |
| +# |
| +# ELF_VERSION = 1.0 |
| +# ELF_SO_VERSION = 1 |
| +# ELF_IMAGE = libce |
| +# ELF_MYDIR = et |
| +# ELF_INSTALL_DIR = $(SHLIBDIR) |
| +# ELF_OTHER_LIBS = -lc |
| |
| all:: image |
| |
| @@ -16,36 +17,58 @@ |
| $(E) " MKDIR pic" |
| $(Q) mkdir -p pic |
| |
| -BSD_LIB = $(BSDLIB_IMAGE).$(BSDLIB_VERSION).dylib |
| -BSDLIB_PIC_FLAG = -fPIC |
| +ELF_LIB = $(ELF_IMAGE).$(ELF_VERSION).dylib |
| +ELF_SONAME = $(ELF_IMAGE).$(ELF_SO_VERSION).dylib |
| |
| -image: $(BSD_LIB) |
| +image: $(ELF_LIB) |
| |
| -$(BSD_LIB): $(OBJS) |
| - $(E) " GEN_BSD_SOLIB $(BSD_LIB)" |
| - $(Q) (cd pic; $(CC) -dynamiclib -compatibility_version 1.0 -current_version $(BSDLIB_VERSION) \ |
| - -flat_namespace -undefined warning -o $(BSD_LIB) $(OBJS)) |
| - $(Q) $(MV) pic/$(BSD_LIB) . |
| - $(Q) $(RM) -f ../$(BSD_LIB) |
| +$(ELF_LIB): $(OBJS) |
| + $(E) " GEN_ELF_SOLIB $(ELF_LIB)" |
| + $(Q) (cd pic; $(CC) -dynamiclib -o $(ELF_LIB) $(LDFLAGS) \ |
| + -Wl,-install_name,$(libdir)/$(ELF_SONAME) $(OBJS) $(ELF_OTHER_LIBS)) |
| + $(Q) $(MV) pic/$(ELF_LIB) . |
| + $(Q) $(RM) -f ../$(ELF_LIB) ../$(ELF_IMAGE).dylib ../$(ELF_SONAME) |
| $(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) \ |
| - `echo $(my_dir) | sed -e 's;lib/;;'`/$(BSD_LIB) $(BSD_LIB)) |
| - $(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) $(BSD_LIB) $(BSDLIB_IMAGE).dylib) |
| - |
| -install-shlibs install:: $(BSD_LIB) |
| - $(E) " INSTALL_PROGRAM $(BSDLIB_INSTALL_DIR)/$(BSD_LIB)" |
| - $(Q) $(INSTALL_PROGRAM) $(BSD_LIB) \ |
| - $(DESTDIR)$(BSDLIB_INSTALL_DIR)/$(BSD_LIB) |
| - -$(Q) $(LDCONFIG) |
| + `echo $(my_dir) | sed -e 's;lib/;;'`/$(ELF_LIB) $(ELF_LIB)) |
| + $(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) $(ELF_LIB) $(ELF_IMAGE).dylib) |
| + $(Q) (cd ..; $(LN) $(LINK_BUILD_FLAGS) $(ELF_LIB) $(ELF_SONAME)) |
| + |
| +installdirs-elf-lib:: |
| + $(E) " MKINSTALLDIRS $(ELF_INSTALL_DIR) $(libdir)" |
| + $(Q) $(MKINSTALLDIRS) $(DESTDIR)$(ELF_INSTALL_DIR) \ |
| + $(DESTDIR)$(libdir) |
| + |
| +installdirs:: installdirs-elf-lib |
| + |
| +install-shlibs install:: $(ELF_LIB) installdirs-elf-lib |
| + $(E) " INSTALL-ELF-LIB $(ELF_INSTALL_DIR)/$(ELF_LIB)" |
| + $(Q) $(INSTALL_PROGRAM) $(ELF_LIB) $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_LIB) |
| + $(E) " SYMLINK $(ELF_INSTALL_DIR)/$(ELF_SONAME)" |
| + $(Q) $(LN_S) -f $(ELF_LIB) $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_SONAME) |
| + $(E) " SYMLINK $(libdir)/$(ELF_IMAGE).dylib" |
| + $(Q) if test "$(ELF_INSTALL_DIR)" = "$(libdir)"; then \ |
| + $(LN_S) -f $(ELF_SONAME) $(DESTDIR)$(libdir)/$(ELF_IMAGE).dylib ; \ |
| + else \ |
| + $(LN_S) -f $(ELF_INSTALL_DIR)/$(ELF_SONAME) \ |
| + $(DESTDIR)$(libdir)/$(ELF_IMAGE).dylib; \ |
| + fi |
| |
| install-strip: install |
| + $(E) " STRIP-LIB $(ELF_INSTALL_DIR)/$(ELF_LIB)" |
| + $(Q) $(STRIP) --strip-unneeded --remove-section=.comment \ |
| + --remove-section=.note $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_LIB) |
| |
| install-shlibs-strip: install-shlibs |
| + $(E) " STRIP-LIB $(ELF_INSTALL_DIR)/$(ELF_LIB)" |
| + $(Q) $(STRIP) --strip-unneeded --remove-section=.comment \ |
| + --remove-section=.note $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_LIB) |
| |
| uninstall-shlibs uninstall:: |
| - $(RM) -f $(DESTDIR)$(BSDLIB_INSTALL_DIR)/$(BSD_LIB) |
| + $(RM) -f $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_LIB) \ |
| + $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_SONAME) \ |
| + $(DESTDIR)$(libdir)/$(ELF_IMAGE).dylib |
| |
| clean:: |
| $(RM) -rf pic |
| - $(RM) -f $(BSD_LIB) |
| - $(RM) -f ../$(BSD_LIB) |
| - $(RM) -f ../$(BSDLIB_IMAGE).dylib |
| + $(RM) -f $(ELF_LIB) |
| + $(RM) -f ../$(ELF_LIB) ../$(ELF_IMAGE).dylib ../$(ELF_SONAME) |