summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.org2
-rw-r--r--Makefile.shared8
-rw-r--r--engines/Makefile15
3 files changed, 18 insertions, 7 deletions
diff --git a/Makefile.org b/Makefile.org
index ec96428985..a28b469eaa 100644
--- a/Makefile.org
+++ b/Makefile.org
@@ -255,7 +255,7 @@ clean-shared:
link-shared:
@ set -e; for i in ${SHLIBDIRS}; do \
- $(MAKE) -f $(HERE)/Makefile.shared \
+ $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \
symlink.$(SHLIB_TARGET); \
diff --git a/Makefile.shared b/Makefile.shared
index 1b14dd1450..acee25cfea 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -196,10 +196,14 @@ link_app.bsd:
fi; $(LINK_APP)
# For Darwin AKA Mac OS/X (dyld)
+# link_o.darwin produces .so, because we let it use dso_dlfcn module,
+# which has .so extension hard-coded. One can argue that one should
+# develop special dso module for MacOS X. At least manual encourages
+# to use native NSModule(3) API and refers to dlfcn as termporary hack.
link_o.darwin:
@ $(CALC_VERSIONS); \
SHLIB=lib$(LIBNAME); \
- SHLIB_SUFFIX=.dylib; \
+ SHLIB_SUFFIX=.so; \
ALLSYMSFLAGS='-all_load'; \
NOALLSYMSFLAGS=''; \
SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS)"; \
@@ -450,7 +454,7 @@ link_o.hpux:
@if ${DETECT_GNU_LD}; then $(DO_GNU_SO); else \
$(CALC_VERSIONS); \
SHLIB=lib$(LIBNAME).sl; \
- expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
+ expr "$(CFLAGS)" : 'DSO_DLFCN' > /dev/null && SHLIB=lib$(LIBNAME).so; \
SHLIB_SUFFIX=; \
ALLSYMSFLAGS='-Wl,-Fl'; \
NOALLSYMSFLAGS=''; \
diff --git a/engines/Makefile b/engines/Makefile
index b8fb1e9a0a..2052b5f528 100644
--- a/engines/Makefile
+++ b/engines/Makefile
@@ -84,6 +84,7 @@ links:
# XXXXX This currently only works on systems that use .so as suffix
# for shared libraries as well as for Cygwin which uses the
# dlfcn_name_converter and therefore stores the engines with .so suffix, too.
+# XXXXX This was extended to HP-UX dl targets, which use .sl suffix.
install:
@[ -n "$(INSTALLTOP)" ] # should be set by top Makefile...
@if [ -n "$(SHARED_LIBS)" ]; then \
@@ -91,12 +92,18 @@ install:
for l in $(LIBNAMES); do \
( echo installing $$l; \
if [ "$(PLATFORM)" != "Cygwin" ]; then \
- cp lib$$l.so $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.so.new; \
+ case "$(CFLAGS)" in \
+ *DSO_DLFCN*) sfx="so";; \
+ *DSO_DL*) sfx="sl";; \
+ *) sfx="bad";; \
+ esac; \
+ cp lib$$l.$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
else \
- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.so.new; \
+ sfx="so"; \
+ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
fi; \
- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.so.new; \
- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.so.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.so ); \
+ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
+ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx ); \
done; \
fi