summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2022-07-06 05:30:16 +0000
committerPeter Eisentraut2022-07-06 05:41:33 +0000
commitb55f62abb2c2e07dfae99e19a2b3d7ca9e58dc1a (patch)
tree61a0cf4b7e5b54204f463cfdd4a5416d59542548
parent4b8ee4e9d37bb12969aeaf4225b001b11da6de0c (diff)
Unify DLSUFFIX on Darwin
macOS has traditionally used extension .dylib for shared libraries (used at build time) and .so for dynamically loaded modules (used by dlopen()). This complicates the build system a bit. Also, Meson uses .dylib for both, so it would be worth unifying this in order to be able to get equal build output. There doesn't appear to be any reason to use any particular extension for dlopened modules, since dlopen() will accept anything and PostgreSQL is well-factored to be able to deal with any extension. Other software packages that I have handy appear to be about 50/50 split on which extension they use for their plugins. So it seems possible to change this safely. Discussion: https://www.postgresql.org/message-id/flat/bcc45f78-e3c3-8fb3-7c42-5371b48b5266%40enterprisedb.com
-rw-r--r--config/python.m415
-rwxr-xr-xconfigure15
-rw-r--r--src/Makefile.shlib2
-rw-r--r--src/makefiles/Makefile.darwin2
-rw-r--r--src/template/darwin2
5 files changed, 13 insertions, 23 deletions
diff --git a/config/python.m4 b/config/python.m4
index e500873ff3..b295ad3d3a 100644
--- a/config/python.m4
+++ b/config/python.m4
@@ -120,16 +120,11 @@ else
found_shlib=0
for d in "${python_libdir}" "${python_configdir}" /usr/lib64 /usr/lib
do
- # Note: DLSUFFIX is for loadable modules, not shared
- # libraries, so cannot be used here portably. Just
- # check all known possibilities.
- for e in .so .dll .dylib .sl; do
- if test -e "$d/lib${ldlibrary}$e"; then
- python_libdir="$d"
- found_shlib=1
- break 2
- fi
- done
+ if test -e "$d/lib${ldlibrary}${DLSUFFIX}"; then
+ python_libdir="$d"
+ found_shlib=1
+ break 2
+ fi
done
# Some platforms (OpenBSD) require us to accept a bare versioned shlib
# (".so.n.n") as well. However, check this only after failing to find
diff --git a/configure b/configure
index fb07cd27d9..da177403ef 100755
--- a/configure
+++ b/configure
@@ -10570,16 +10570,11 @@ else
found_shlib=0
for d in "${python_libdir}" "${python_configdir}" /usr/lib64 /usr/lib
do
- # Note: DLSUFFIX is for loadable modules, not shared
- # libraries, so cannot be used here portably. Just
- # check all known possibilities.
- for e in .so .dll .dylib .sl; do
- if test -e "$d/lib${ldlibrary}$e"; then
- python_libdir="$d"
- found_shlib=1
- break 2
- fi
- done
+ if test -e "$d/lib${ldlibrary}${DLSUFFIX}"; then
+ python_libdir="$d"
+ found_shlib=1
+ break 2
+ fi
done
# Some platforms (OpenBSD) require us to accept a bare versioned shlib
# (".so.n.n") as well. However, check this only after failing to find
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 551023c6fb..d0ec325bf1 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -118,7 +118,6 @@ endif
ifeq ($(PORTNAME), darwin)
ifdef soname
# linkable library
- DLSUFFIX = .dylib
ifneq ($(SO_MAJOR_VERSION), 0)
version_link = -compatibility_version $(SO_MAJOR_VERSION) -current_version $(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
endif
@@ -127,7 +126,6 @@ ifeq ($(PORTNAME), darwin)
shlib_major = lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX)
else
# loadable module
- DLSUFFIX = .so
LINK.shared = $(COMPILER) -bundle -multiply_defined suppress
endif
BUILD.exports = $(AWK) '/^[^\#]/ {printf "_%s\n",$$1}' $< >$@
diff --git a/src/makefiles/Makefile.darwin b/src/makefiles/Makefile.darwin
index 4fc81c1584..45f253a5b4 100644
--- a/src/makefiles/Makefile.darwin
+++ b/src/makefiles/Makefile.darwin
@@ -10,5 +10,5 @@ else
endif
# Rule for building a shared library from a single .o file
-%.so: %.o
+%$(DLSUFFIX): %.o
$(CC) $(CFLAGS) $< $(LDFLAGS) $(LDFLAGS_SL) -bundle $(BE_DLLLIBS) -o $@
diff --git a/src/template/darwin b/src/template/darwin
index e14d53b601..fd30e19b6a 100644
--- a/src/template/darwin
+++ b/src/template/darwin
@@ -55,3 +55,5 @@ case $host_os in
USE_SYSV_SEMAPHORES=1
;;
esac
+
+DLSUFFIX=".dylib"