diff --git a/Makefile.org b/Makefile.org index ec96428985eb4a0632db508d8a361e3258a693dc..a28b469eaaaf7bd0a81487f8597ce2ee7c5c497f 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 1b14dd145027a0463296510a6f5f816315def3cf..acee25cfeac67a6c1d0f11efea82bf3a7700e3e5 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 b8fb1e9a0a386babd89299fa83e45192281f0aac..2052b5f528d82e75a6cae0475b4986ed8c0c5e7d 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