The below diff to the OpenSSL 0.9.4 Makefile.org adds rules for building
shared library versions of OpenSSL on Solaris and Digital UNIX (formerly
OSF/1, now Compaq Tru64 UNIX).  When linked against these shared
libraries the test suite passes all tests and I am successfully using
the shared libraries in production.

solaris-gcc-shared: builds Solaris ELF shared library with gcc

solaris-cc-shared: builds Solaris ELF shared library with Sun Workshop cc

osf-cc-shared: builds COFF shared library with Digital UNIX C compiler
(includes appropriate options for COFF shared library version
information)

Linkers other than GNU ld don't appear to have equivalents to the
--with-whole-archive option, so these rules extract the .o files from
the .a files created by the usual build process into openssl-0.9.4/tmp,
and link those to create the shared libraries.

--- openssl-0.9.4/Makefile.org~ Sun Aug  8 03:29:52 1999
+++ openssl-0.9.4/Makefile.org  Wed Feb 23 13:52:35 2000
@@ -206,6 +206,55 @@
        ln -s lib$$i.so.${MAJOR} lib$$i.so; \
        done;
 
+solaris-gcc-shared:
+       for i in ${SHLIBDIRS}; do \
+       rm -f lib$$i.a lib$$i.so \
+               lib$$i.so.${MAJOR} lib$$i.so.${MAJOR}.${MINOR}; \
+       ${MAKE} CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='-fPIC ${CFLAG}' 
+SDIRS='${SDIRS}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' 
+EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' 
+CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' 
+SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' 
+RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' DIRS=$$i clean all || exit 1; \
+       ( set -x; rm -f tmp/*.o; cd tmp; ar x ../lib$$i.a; cd ..; \
+               ${CC}  -shared -o lib$$i.so.${MAJOR}.${MINOR} \
+               -Wl,-h,lib$$i.so.${MAJOR} tmp/*.o ;\
+               rm -f tmp/*.o ) || exit 1; \
+       rm -f lib$$i.a; make -C $$i clean || exit 1 ;\
+       done;
+       @set -x; \
+       for i in ${SHLIBDIRS}; do \
+       ln -s lib$$i.so.${MAJOR}.${MINOR} lib$$i.so.${MAJOR}; \
+       ln -s lib$$i.so.${MAJOR} lib$$i.so; \
+       done;
+
+solaris-cc-shared:
+       for i in ${SHLIBDIRS}; do \
+       rm -f lib$$i.a lib$$i.so \
+               lib$$i.so.${MAJOR} lib$$i.so.${MAJOR}.${MINOR}; \
+       ${MAKE} CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='-KPIC ${CFLAG}' 
+SDIRS='${SDIRS}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' 
+EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' 
+CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' 
+SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' 
+RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' DIRS=$$i clean all || exit 1; \
+       ( set -x; rm -f tmp/*.o; cd tmp; ar x ../lib$$i.a; cd ..; \
+               ${CC} -G -KPIC ${CFLAG} -o lib$$i.so.${MAJOR}.${MINOR} \
+               -h lib$$i.so.${MAJOR} tmp/*.o \
+               -lc; rm -f tmp/*.o ) || exit 1; \
+       rm -f lib$$i.a; make -C $$i clean || exit 1 ;\
+       done;
+       @set -x; \
+       for i in ${SHLIBDIRS}; do \
+       ln -s lib$$i.so.${MAJOR}.${MINOR} lib$$i.so.${MAJOR}; \
+       ln -s lib$$i.so.${MAJOR} lib$$i.so; \
+       done;
+
+osf-cc-shared:
+       for i in ${SHLIBDIRS}; do \
+       rm -f lib$$i.so lib$$i.so.${MAJOR} lib$$i.so.${MAJOR}.${MINOR}; \
+       ${MAKE} CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='${SDIRS}' 
+INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' 
+BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' 
+RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' 
+MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' DIRS=$$i 
+all || exit 1; \
+       ( set -x; rm -f tmp/*.o; cd tmp; ar x ../lib$$i.a; cd ..;\
+               ${CC}  -shared -o lib$$i.so.${MAJOR}.${MINOR} \
+               -soname lib$$i.so -set_version ${MAJOR}.${MINOR} tmp/*.o ;\
+               rm -f tmp/*.o ) || exit 1;\
+       done;
+       @set -x; \
+       for i in ${SHLIBDIRS}; do \
+       ln -s lib$$i.so.${MAJOR}.${MINOR} lib$$i.so.${MAJOR}; \
+       ln -s lib$$i.so.${MAJOR} lib$$i.so; \
+       done;
+
 Makefile.ssl: Makefile.org
        @echo "Makefile.ssl is older than Makefile.org."
        @echo "Reconfigure the source tree (via './config' or 'perl Configure'), 
please."
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to