---
 Makefile     | 29 ++++++++++++++++++++++-------
 README.macos |  3 ---
 configure    |  9 ++++++---
 3 files changed, 28 insertions(+), 13 deletions(-)
 delete mode 100644 README.macos
diff --git a/Makefile b/Makefile
index eda3dda..bb0c5a5 100644
--- a/Makefile
+++ b/Makefile
_at__at_ -83,7 +83,22 _at__at_ endif
 install: install-sysconf install-sysdeps install-dynlib install-lib install-include install-pkgconfig
 install-sysconf: $(ALL_DATA:src/etc/%=$(DESTDIR)$(sysconfdir)/%)
 install-sysdeps: $(ALL_SYSDEPS:$(sysdeps)/%=$(DESTDIR)$(sysdepdir)/%)
-install-dynlib: $(SHARED_LIBS:lib%.so.xyzzy=$(DESTDIR)$(dynlibdir)/lib%.so)
+install-dynlib:
+ifeq ($(SHLIB_EXT),dylib)
+	$(INSTALL) -D -m 755 libskarnet.dylib.xyzzy $(DESTDIR)$(dynlibdir)/libskarnet.$(version).dylib
+	$(INSTALL) -l libskarnet.$(version).dylib $(DESTDIR)$(dynlibdir)/libskarnet.$(version_M).dylib
+	$(INSTALL) -l libskarnet.$(version_M).dylib $(DESTDIR)$(dynlibdir)/libskarnet.dylib
+
+	# Mach-O expects a filename containing a major version number
+	$(INSTALL) -l libskarnet.$(version_M).dylib $(DESTDIR)$(dynlibdir)/libskarnet.$(version_l).dylib
+else
+	$(INSTALL) -D -m 755 libskarnet.so.xyzzy $(DESTDIR)$(dynlibdir)/libskarnet.so.$(version)
+	$(INSTALL) -l libskarnet.so.$(version) $(DESTDIR)$(dynlibdir)/libskarnet.so.$(version_M)
+	$(INSTALL) -l libskarnet.so.$(version_M) $(DESTDIR)$(dynlibdir)/libskarnet.so
+
+	# ELF probably wants *not* to have this link, but for now let's be kinda like Mach-O
+	$(INSTALL) -l libskarnet.so.$(version_M) $(DESTDIR)$(dynlibdir)/libskarnet.so.$(version_l)
+endif
 install-lib: $(STATIC_LIBS:lib%.a.xyzzy=$(DESTDIR)$(libdir)/lib%.a)
 install-include: $(ALL_INCLUDES:src/include/$(package)/%.h=$(DESTDIR)$(includedir)/$(package)/%.h)
 install-pkgconfig: $(PC_TARGETS:%=$(DESTDIR)$(pkgconfdir)/%)
_at__at_ -110,11 +125,6 _at__at_ $(DESTDIR)$(sysconfdir)/%: src/etc/%
 $(DESTDIR)$(sysdepdir)/%: $(sysdeps)/%
 	exec $(INSTALL) -D -m 644 $< $_at_
 
-$(DESTDIR)$(dynlibdir)/lib%.so $(DESTDIR)$(dynlibdir)/lib%.so.$(version_M): lib%.so.xyzzy
-	$(INSTALL) -D -m 755 $< $_at_.$(version) && \
-	$(INSTALL) -l $(_at_F).$(version) $_at_.$(version_M) && \
-	exec $(INSTALL) -l $(_at_F).$(version_M) $_at_
-
 $(DESTDIR)$(libdir)/lib%.a: lib%.a.xyzzy
 	exec $(INSTALL) -D -m 644 $< $_at_
 
_at__at_ -134,8 +144,13 _at__at_ libskarnet.a.xyzzy: $(ALL_SOBJS)
 	exec $(AR) rc $_at_ $^
 	exec $(RANLIB) $_at_
 
+LDFLAGS_SHARED_SO=-Wl,-soname,libskarnet.so.$(version_M) -Wl,-rpath=$(dynlibdir)
 libskarnet.so.xyzzy: $(ALL_DOBJS)
-	exec $(CC) -o $_at_ $(CFLAGS_ALL) $(CFLAGS_SHARED) $(LDFLAGS_ALL) $(LDFLAGS_SHARED) -Wl,-soname,libskarnet.so.$(version_M) -Wl,-rpath=$(dynlibdir) $^ $(SOCKET_LIB) $(SPAWN_LIB) $(SYSCLOCK_LIB) $(TAINNOW_LIB) $(TIMER_LIB) $(UTIL_LIB)
+	exec $(CC) -o $_at_ $(CFLAGS_ALL) $(CFLAGS_SHARED) $(LDFLAGS_ALL) $(LDFLAGS_SHARED) $(LDFLAGS_SHARED_SO) $^ $(SOCKET_LIB) $(SPAWN_LIB) $(SYSCLOCK_LIB) $(TAINNOW_LIB) $(TIMER_LIB) $(UTIL_LIB)
+
+LDFLAGS_SHARED_DYLIB=-Wl,-dylib_install_name,$(DESTDIR)$(dynlibdir)/libskarnet.$(version_l).dylib -Wl,-dylib_compatibility_version,$(version_l) -Wl,-dylib_current_version,$(version)
+libskarnet.dylib.xyzzy: $(ALL_DOBJS)
+	exec $(CC) -o $_at_ $(CFLAGS_ALL) $(CFLAGS_SHARED) $(LDFLAGS_ALL) $(LDFLAGS_SHARED) $(LDFLAGS_SHARED_DYLIB) $^ $(SOCKET_LIB) $(SPAWN_LIB) $(SYSCLOCK_LIB) $(TAINNOW_LIB) $(TIMER_LIB) $(UTIL_LIB)
 
 libskarnet.pc:
 	exec env \
diff --git a/README.macos b/README.macos
deleted file mode 100644
index 8b01f7a..0000000
--- a/README.macos
+++ /dev/null
_at__at_ -1,3 +0,0 _at__at_
- This package will compile on Darwin (MacOS), but the building of
-shared libraries is not supported.
- Make sure you use the --disable-shared option to configure.
diff --git a/configure b/configure
index 5bc0b41..8a8b8a7 100755
--- a/configure
+++ b/configure
_at__at_ -400,6 +400,7 _at__at_ pkgconfdir='$prefix/lib/pkgconfig'
 sysdepdir='$prefix/lib/$package/sysdeps'
 sysdeplist=
 shared=true
+shlibext=so; if [ "$(uname -s)" = Darwin ]; then shlibext=dylib; fi
 static=true
 allpic=true
 slashpackage=false
_at__at_ -499,7 +500,7 _at__at_ if $slashpackage ; then
   sysdepdir=${home}/sysdeps
   binprefix=${home}/command
   extbinprefix=${exthome}/command
-  dynlibdir=${home}/library.so
+  dynlibdir=${home}/library.${shlibext}
   libdir=${home}/library
   includedir=${home}/include
   pkgconfdir=${home}/pkgconfig
_at__at_ -763,7 +764,7 _at__at_ if test -n "$vpaths" ; then
   echo "vpath lib%a$vpaths"
 fi
 if test -n "$vpathd" ; then
-  echo "vpath lib%.so$vpathd"
+  echo "vpath lib%.${shlibext}$vpathd"
 fi
 
 if $static ; then
_at__at_ -772,9 +773,11 _at__at_ else
   echo "STATIC_LIBS :="
 fi
 if $shared ; then
-  echo "SHARED_LIBS := libskarnet.so.xyzzy"
+  echo "SHARED_LIBS := libskarnet.${shlibext}.xyzzy"
+  echo "SHLIB_EXT := ${shlibext}"
 else
   echo "SHARED_LIBS :="
+  echo "SHLIB_EXT :="
 fi
 if $pcw ; then
   echo "DO_PKGCONFIG := 1"
-- 
2.49.0
Received on Tue May 20 2025 - 02:18:25 CEST
This archive was generated by hypermail 2.4.0 : Tue May 20 2025 - 02:18:59 CEST