Provide partial support for fragmented DTLS ClientHellos
[openssl.git] / Makefile.shared
index 6e53c2de188865297defc69280c9945580bbd03c..70980ade0849aaef5249d19e469b147d4ee027ab 100644 (file)
@@ -170,16 +170,16 @@ link_a.gnu:
 link_app.gnu:
        @ $(DO_GNU_APP); $(LINK_APP)
 
-DO_BEOS_SO=    SHLIB=lib$(LIBNAME).so; \
+link_a.linux-shared:
+       @if [ $(LIBNAME) != "crypto" -a $(LIBNAME) != "ssl" ]; then $(DO_GNU_SO); else \
+       $(PERL) util/mkdef.pl $(LIBNAME) linux >$(LIBNAME).map; \
+       $(CALC_VERSIONS); \
+       SHLIB=lib$(LIBNAME).so; \
        SHLIB_SUFFIX=; \
-       ALLSYMSFLAGS='-Wl,--whole-archive'; \
+       ALLSYMSFLAGS='-Wl,--whole-archive,--version-script=$(LIBNAME).map'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
-       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SUFFIX"
-
-link_o.beos:
-       @ $(DO_BEOS_SO); $(LINK_SO_O)
-link_a.beos:
-       @ $(DO_BEOS_SO); $(LINK_SO_A)
+       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"; \
+       fi; $(LINK_SO_A)
 
 link_o.bsd:
        @if $(DETECT_GNU_LD); then $(DO_GNU_SO); else \
@@ -221,13 +221,15 @@ link_app.bsd:
 # order to provide compatibility with pre-10.4 dlopen, modules are
 # linked with -bundle flag, which makes .dylib extension misleading.
 # It works, because dlopen is [and always was] extension-agnostic.
+# Alternative to this heuristic approach is to develop specific
+# MacOS X dso module relying on whichever "native" dyld interface.
 link_o.darwin:
        @ $(CALC_VERSIONS); \
        SHLIB=lib$(LIBNAME); \
        SHLIB_SUFFIX=.dylib; \
        ALLSYMSFLAGS='-all_load'; \
        NOALLSYMSFLAGS=''; \
-       SHAREDFLAGS="$(CFLAGS) `echo $(SHARED_LDFLAGS) | sed s/dynamiclib/bundle/"; \
+       SHAREDFLAGS="$(CFLAGS) `echo $(SHARED_LDFLAGS) | sed s/dynamiclib/bundle/`"; \
        if [ -n "$(LIBVERSION)" ]; then \
                SHAREDFLAGS="$$SHAREDFLAGS -current_version $(LIBVERSION)"; \
        fi; \
@@ -270,7 +272,7 @@ link_o.cygwin:
        SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
        ALLSYMSFLAGS='-Wl,--whole-archive'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
-       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base $$deffile -Wl,-s,-Bsymbolic"; \
+       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base $$deffile -Wl,-Bsymbolic"; \
        $(LINK_SO_O)
 #for mingw target if def-file is in use dll-name should match library-name
 link_a.cygwin:
@@ -295,7 +297,7 @@ link_a.cygwin:
        extras="$$extras rc.o"; \
        ALLSYMSFLAGS='-Wl,--whole-archive'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
-       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-s,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \
+       SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base -Wl,-Bsymbolic -Wl,--out-implib,lib$(LIBNAME).dll.a $$extras"; \
        [ -f apps/$$dll_name ] && rm apps/$$dll_name; \
        [ -f test/$$dll_name ] && rm test/$$dll_name; \
        $(LINK_SO_A) || exit 1; \
@@ -382,7 +384,12 @@ link_a.solaris:
                ($(CC) -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
                SHLIB=lib$(LIBNAME).so; \
                SHLIB_SUFFIX=;\
-               ALLSYMSFLAGS="$${MINUSZ}allextract"; \
+               if [ $(LIBNAME) != "crypto" -a $(LIBNAME) != "ssl" ]; then \
+                       ALLSYMSFLAGS="$${MINUSZ}allextract"; \
+               else \
+                       $(PERL) util/mkdef.pl $(LIBNAME) linux >$(LIBNAME).map; \
+                       ALLSYMSFLAGS="$${MINUSZ}allextract,-M,$(LIBNAME).map"; \
+               fi; \
                NOALLSYMSFLAGS="$${MINUSZ}defaultextract"; \
                SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -h $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX -Wl,-Bsymbolic"; \
        fi; \
@@ -553,28 +560,10 @@ link_app.aix:
        LDFLAGS="$(CFLAGS) -Wl,-brtl,-blibpath:$(LIBRPATH):$${LIBPATH:-/usr/lib:/lib}"; \
        $(LINK_APP)
 
-link_o.reliantunix:
-       @ $(CALC_VERSIONS); \
-       SHLIB=lib$(LIBNAME).so; \
-       SHLIB_SUFFIX=; \
-       ALLSYMSFLAGS=; \
-       NOALLSYMSFLAGS=''; \
-       SHAREDFLAGS='$(CFLAGS) -G'; \
-       $(LINK_SO_O)
-link_a.reliantunix:
-       @ $(CALC_VERSIONS); \
-       SHLIB=lib$(LIBNAME).so; \
-       SHLIB_SUFFIX=; \
-       ALLSYMSFLAGS=; \
-       NOALLSYMSFLAGS=''; \
-       SHAREDFLAGS='$(CFLAGS) -G'; \
-       $(LINK_SO_A_UNPACKED)
-link_app.reliantunix:
-       $(LINK_APP)
 
 # Targets to build symbolic links when needed
 symlink.gnu symlink.solaris symlink.svr3 symlink.svr5 symlink.irix \
-symlink.aix symlink.reliantunix:
+symlink.aix:
        @ $(CALC_VERSIONS); \
        SHLIB=lib$(LIBNAME).so; \
        $(SYMLINK_SO)
@@ -589,11 +578,11 @@ symlink.hpux:
        expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
        $(SYMLINK_SO)
 # The following lines means those specific architectures do no symlinks
-symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
+symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath:
 
 # Compatibility targets
 link_o.bsd-gcc-shared link_o.linux-shared link_o.gnu-shared: link_o.gnu
-link_a.bsd-gcc-shared link_a.linux-shared link_a.gnu-shared: link_a.gnu
+link_a.bsd-gcc-shared link_a.gnu-shared: link_a.gnu
 link_app.bsd-gcc-shared link_app.linux-shared link_app.gnu-shared: link_app.gnu
 symlink.bsd-gcc-shared symlink.bsd-shared symlink.linux-shared symlink.gnu-shared: symlink.gnu
 link_o.bsd-shared: link_o.bsd
@@ -643,11 +632,3 @@ link_o.aix-shared: link_o.aix
 link_a.aix-shared: link_a.aix
 link_app.aix-shared: link_app.aix
 symlink.aix-shared: symlink.aix
-link_o.reliantunix-shared: link_o.reliantunix
-link_a.reliantunix-shared: link_a.reliantunix
-link_app.reliantunix-shared: link_app.reliantunix
-symlink.reliantunix-shared: symlink.reliantunix
-link_o.beos-shared: link_o.beos
-link_a.beos-shared: link_a.beos
-link_app.beos-shared: link_app.gnu
-symlink.beos-shared: symlink.beos