-# WARNING: Until DSO is fixed to support a search path, we support SHLIB_PATH
-# by temporarily specifying "+s"!
-#
-link_o.hpux32:
- @ $(CALC_VERSIONS); \
- SHLIB=lib$(LIBNAME).sl \
- LIBDEPS="$(LIBDEPS) -lc" \
- ALLSYMSFLAGS='-Fl' \
- NOALLSYMSFLAGS='' \
- SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER' \
- SHAREDCMD='/usr/ccs/bin/ld'; \
- $(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER
-link_a.hpux32:
- @ $(CALC_VERSIONS); \
- SHLIB=lib$(LIBNAME).sl \
- LIBDEPS="$(LIBDEPS) -lc" \
- ALLSYMSFLAGS='-Fl' \
- NOALLSYMSFLAGS='' \
- SHAREDFLAGS='+vnocompatwarnings -b -z +s +h $$SHLIB$$SHLIB_SOVER' \
- SHAREDCMD='/usr/ccs/bin/ld'; \
- $(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER
-
-# HP-UX includes the full pathname of libs we depend on, so we would get
-# ./libcrypto (with ./ as path information) compiled into libssl, hence
-# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
-# anyway.
-#
-# HP-UX in 64bit mode has "+s" enabled by default; it will search for
-# shared libraries along LD_LIBRARY_PATH _and_ SHLIB_PATH.
-#
-link_o.hpux64:
- @ $(CALC_VERSIONS); \
- SHLIB=lib$(LIBNAME).sl \
- LIBDEPS="$(LIBDEPS) -lc" \
- ALLSYMSFLAGS='+forceload' \
- NOALLSYMSFLAGS='' \
- SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER' \
- SHAREDCMD='/usr/ccs/bin/ld'; \
- $(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER
-link_a.hpux64:
- @ $(CALC_VERSIONS); \
- SHLIB=lib$(LIBNAME).sl \
- LIBDEPS="$(LIBDEPS) -lc" \
- ALLSYMSFLAGS='+forceload' \
- NOALLSYMSFLAGS='' \
- SHAREDFLAGS='-b -z +h $$SHLIB$$SHLIB_SOVER' \
- SHAREDCMD='/usr/ccs/bin/ld'; \
- $(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER
+link_o.hpux:
+ @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
+ $(CALC_VERSIONS); \
+ SHLIB=lib$(LIBNAME).sl; \
+ expr "$(CFLAGS)" : '.*DSO_DLFCN' > /dev/null && SHLIB=lib$(LIBNAME).so; \
+ SHLIB_SUFFIX=; \
+ ALLSYMSFLAGS='-Wl,-Fl'; \
+ NOALLSYMSFLAGS=''; \
+ expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
+ fi; \
+ rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
+ $(LINK_SO_O) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
+link_a.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; \
+ SHLIB_SUFFIX=; \
+ ALLSYMSFLAGS='-Wl,-Fl'; \
+ NOALLSYMSFLAGS=''; \
+ expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+h,$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX,+cdp,../:,+cdp,./:"; \
+ fi; \
+ rm -f $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX || :; \
+ $(LINK_SO_A) && chmod a=rx $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX
+link_app.hpux:
+ @if $(DETECT_GNU_LD); then $(DO_GNU_APP); else \
+ LDFLAGS="$(CFLAGS) -Wl,+s,+cdp,../:,+cdp,./:,+b,$(LIBRPATH)"; \
+ fi; \
+ $(LINK_APP)