It seems like OpenUnix's ld uses LD_LIBRARY_PATH to search for
[openssl.git] / Makefile.shared
index 9178b829a26a7f51d02b424b1ca21fbf3435e654..c39c8424e6aba5c8ec0a9e734fb7eafb46a1facb 100644 (file)
@@ -88,11 +88,17 @@ CALC_VERSIONS=      \
 
 LINK_APP=      \
   ( $(DEBUG);   \
+    LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq | while read d; do echo -n $${d}:; done'`; \
+    LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`
+    LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
     $$LDCMD $(LDFLAGS) $$LDFLAGS -o $$APPNAME $(OBJECTS) $$LIBDEPS )
 
 LINK_SO=       \
   ( $(DEBUG);   \
     nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
+    LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq | while read d; do echo -n $${d}:; done'`; \
+    LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`
+    LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
     $$SHAREDCMD $(SHARED_LDFLAGS) $$SHAREDFLAGS -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
        $$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS ) && \
   $(SYMLINK_SO); ( $(DEBUG); rm -f lib$(LIBNAME).exp )
@@ -122,7 +128,8 @@ LINK_SO_A_VIA_O=    \
   $(LINK_SO) && rm -f $(LIBNAME).o
 LINK_SO_A_UNPACKED=    \
   UNPACKDIR=link_tmp.$$$$; rm -rf $$UNPACKDIR; mkdir $$UNPACKDIR; \
-  (cd $$UNPACKDIR; ar x ../lib$(LIBNAME).a) && cp $(LIBEXTRAS) $$UNPACKDIR && \
+  (cd $$UNPACKDIR; ar x ../lib$(LIBNAME).a) && \
+  ([ -z "$(LIBEXTRAS)" ] || cp $(LIBEXTRAS) $$UNPACKDIR) && \
   SHOBJECTS=$$UNPACKDIR/*.o; \
   $(LINK_SO) && rm -rf $$UNPACKDIR
 
@@ -141,6 +148,18 @@ DO_GNU_APP=LDCMD=$(CC);\
        LIBDEPS="$(LIBDEPS) -lc"; \
        APPNAME=$(APPNAME)
 
+#This is rather special.  It's a special target with which one can link
+#applications without bothering with any features that have anything to
+#do with shared libraries, for example when linking against static
+#libraries.  It's mostly here to avoid a lot of conditionals everywhere
+#else...
+link_app.:
+       LDCMD=$(CC); \
+       LDFLAGS=""; \
+       LIBDEPS="$(LIBDEPS)"; \
+       APPNAME="$(APPNAME)"; \
+       $(LINK_APP)
+
 link_o.gnu:
        @ $(DO_GNU_SO); $(LINK_SO_O)
 link_a.gnu:
@@ -444,12 +463,14 @@ link_o.svr3:
                $(DO_GNU_SO); \
        else \
                $(CALC_VERSIONS); \
+               SHARE_FLAG='-G'; \
+               (${CC} -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
                SHLIB=lib$(LIBNAME).so; \
                SHLIB_SUFFIX=; \
                LIBDEPS="$(LIBDEPS) -lc"; \
-               ALLSYMSFLAGS='-z allextract'; \
+               ALLSYMSFLAGS=''; \
                NOALLSYMSFLAGS=''; \
-               SHAREDFLAGS="-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
+               SHAREDFLAGS="$${SHARE_FLAG} -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
                SHAREDCMD='$(CC)'; \
        fi; \
        $(LINK_SO_O)
@@ -458,12 +479,14 @@ link_a.svr3:
                $(DO_GNU_SO); \
        else \
                $(CALC_VERSIONS); \
+               SHARE_FLAG='-G'; \
+               (${CC} -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
                SHLIB=lib$(LIBNAME).so; \
                SHLIB_SUFFIX=; \
                LIBDEPS="$(LIBDEPS) -lc"; \
-               ALLSYMSFLAGS='-z allextract'; \
+               ALLSYMSFLAGS=''; \
                NOALLSYMSFLAGS=''; \
-               SHAREDFLAGS="-G -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
+               SHAREDFLAGS="$${SHARE_FLAG} -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
                SHAREDCMD='$(CC)'; \
        fi; \
        $(LINK_SO_A_UNPACKED)