install shared libs with a new install-lib script, with variants for normal unix and macos - fixes #752 broken macos dylib support

Wed, 05 Nov 2025 19:40:06 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 05 Nov 2025 19:40:06 +0100
changeset 1471
2309b553c604
parent 1470
c1a144db699f
child 1472
c48cf649c10f

install shared libs with a new install-lib script, with variants for normal unix and macos - fixes #752 broken macos dylib support

configure file | annotate | diff | comparison | revisions
make/install-lib-macos.sh file | annotate | diff | comparison | revisions
make/install-lib.sh file | annotate | diff | comparison | revisions
make/project.xml file | annotate | diff | comparison | revisions
src/Makefile file | annotate | diff | comparison | revisions
--- a/configure	Tue Nov 04 22:38:34 2025 +0100
+++ b/configure	Wed Nov 05 19:40:06 2025 +0100
@@ -551,6 +551,9 @@
 ARFLAGS=r
 STLIB_EXT=.a
 SHLIB_EXT=.dylib
+
+SHLIB_LDFLAGS=-dynamiclib -current_version \$(LIBVERSION) -compatibility_version \$(LIBVERSION)
+INSTALL_LIB=\$(root_dir)/make/install-lib-macos.sh
 __EOF__
         break
     done
@@ -576,6 +579,7 @@
 ARFLAGS=cr
 STLIB_EXT=.a
 SHLIB_EXT=.so
+INSTALL_LIB=\$(root_dir)/make/install-lib.sh
 __EOF__
         break
     done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/install-lib-macos.sh	Wed Nov 05 19:40:06 2025 +0100
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] ; then
+  echo "Usage: $0 <src> <libdir> <version> <major_version>"
+  exit 1
+fi
+
+
+NAME=$(basename $1)
+LIBNAME=${NAME/.dylib/.$4.dylib}
+
+SRC="$1"
+DST="$2/$LIBNAME"
+LN_DST="$2/$NAME"
+
+cp -f "$SRC" "$DST"
+
+install_name_tool -id "$DST" "$DST"
+
+rm -f $LN_DST
+ln -s $LIBNAME $LN_DST
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/install-lib.sh	Wed Nov 05 19:40:06 2025 +0100
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] ; then
+  echo "Usage: $0 <src> <libdir> <version> <major_version>"
+  exit 1
+fi
+
+SRC=$1
+LIB=$(basename $1)
+LIBDIR=$2
+LIBVERSION=$3
+LIBVERSION_MAJOR=$4
+
+cp -f "$SRC" "$LIBDIR/$LIB.$(LIBVERSION)"
+
+rm -f "$(LIBDIR)/$LIB.$(LIBVERSION_MAJOR)"
+rm -f "$(LIBDIR)/$LIB"
+ln -s "$LIB.$(LIBVERSION)" "$(LIBDIR)/$LIB.$(LIBVERSION_MAJOR)"
+ln -s "$LIB.$(LIBVERSION_MAJOR)" "$(LIBDIR)/$LIB"
--- a/make/project.xml	Tue Nov 04 22:38:34 2025 +0100
+++ b/make/project.xml	Wed Nov 05 19:40:06 2025 +0100
@@ -38,6 +38,9 @@
             ARFLAGS=r
             STLIB_EXT=.a
             SHLIB_EXT=.dylib
+
+            SHLIB_LDFLAGS=-dynamiclib -current_version \$(LIBVERSION) -compatibility_version \$(LIBVERSION)
+            INSTALL_LIB=\$(root_dir)/make/install-lib-macos.sh
         </make>
     </dependency>
 
@@ -48,6 +51,7 @@
             ARFLAGS=cr
             STLIB_EXT=.a
             SHLIB_EXT=.so
+            INSTALL_LIB=\$(root_dir)/make/install-lib.sh
         </make>
     </dependency>
 
--- a/src/Makefile	Tue Nov 04 22:38:34 2025 +0100
+++ b/src/Makefile	Wed Nov 05 19:40:06 2025 +0100
@@ -62,10 +62,8 @@
 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR)
 	$(RMFILE) $(libdir)/libucx$(SHLIB_EXT)
 	$(COPYFILE) $(build_dir)/libucx_static$(STLIB_EXT) $(libdir)/libucx_static$(STLIB_EXT)
-	$(COPYFILE) $(build_dir)/libucx$(SHLIB_EXT) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION)
+	$(INSTALL_LIB) $(build_dir)/libucx$(SHLIB_EXT) $(libdir) $(LIBVERSION) $(LIBVERSION_MAJOR)
 	$(COPYALL) $(root_dir)/src/cx $(includedir)
-	$(SYMLINK) libucx$(SHLIB_EXT).$(LIBVERSION) $(libdir)/libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR)
-	$(SYMLINK) libucx$(SHLIB_EXT).$(LIBVERSION_MAJOR) $(libdir)/libucx$(SHLIB_EXT)
 	$(SHELL) $(root_dir)/make/install-pc-file.sh "$(VERSION)" "$(libdir)" "$(includedir)"
 
 FORCE:

mercurial