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
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
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
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
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}' $< >$@
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 $@
USE_SYSV_SEMAPHORES=1
;;
esac
+
+DLSUFFIX=".dylib"