OpenSSL 0.9.7m for below Solaris 9

シェアードライブラリにします。SPARCでは32bit版と64bit版を両方コンパ イルしておきます。--prefixを指定することで、bin, lib, includeはその 配下になります。64bit版のバイナリとライブラリはsparcv9以下に移動して おきましょう。好みで--openssl-dir=/etc/sslとするのもいいでしょう。
make test時にbcがうまく動かないという文句が出るので、あらかじめ GNU bcをインストールしておきます。

OSの/dev/randomを使うようにするため、Solaris 8ではパッチ112438を 適用しておきます。

64bit版

% ./Configure --prefix=/usr/local solaris64-sparcv9-cc shared

できあがったMakefileを修正します。

% vi Makefile

@@ -339,7 +339,7 @@
                --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
                lib$$i.a $$libs -all_load -current_version
                ${SHLIB_MAJOR}.${SHLIB_MINOR} \
                -compatibility_version ${SHLIB_MAJOR}.`echo
                ${SHLIB_MINOR} | cut -d. -f1` \
-               -install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \
+               -install_name ${INSTALLTOP}/lib/64/lib$$i${SHLIB_EXT} ) || exit 1; \
        libs="-l`basename $$i${SHLIB_EXT} .dylib` $$libs"; \
        echo "" ; \
        done
@@ -414,7 +414,7 @@
                fi; \
                ( set -x; $${FIPSLD:-${CC}} ${SHARED_LDFLAGS} \
                        -shared -msym -o lib$$i.so \
-                       -rpath  ${INSTALLTOP}/lib \
+                       -rpath  ${INSTALLTOP}/lib/64 \
                        -set_version
                "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
                        -all lib$$i.a -none $$libs ${EX_LIBS} ) || exit
                1; \
                libs="-l$$i $$libs"; \
@@ -609,7 +609,7 @@
            echo 'Description: Secure Sockets Layer and cryptography
                libraries and tools'; \          echo 'Version:
                '$(VERSION); \
            echo 'Requires: '; \
-           echo 'Libs: -L$${libdir} -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
+           echo 'Libs: -L$${libdir}/64 -R$${libdir}/64 -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
            echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) >
                openssl.pc

 Makefile: Makefile.org
@@ -785,9 +785,9 @@
 install: all install_docs install_sw

 install_sw:
-       @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
-               $(INSTALL_PREFIX)$(INSTALLTOP)/lib \
-               $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
+       @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9 \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64 \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/pkgconfig \
                $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
@@ -808,14 +808,14 @@
        do \
                if [ -f "$$i" ]; then \
                (       echo installing $$i; \
-                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new; \
                        if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
                                : ; \
                        else \
-                               $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                               $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new; \
                        fi; \
-                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
+                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new; \
+                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i ); \
                fi; \
        done;
        @if [ -n "$(SHARED_LIBS)" ]; then \
@@ -825,22 +825,22 @@
                        if [ -f "$$i" -o -f "$$i.a" ]; then \
                        (       echo installing $$i; \
                                if [ "$(PLATFORM)" != "Cygwin" ]; then \
-                                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-                                       chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+                                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new; \
+                                       chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new; \
+                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i; \
                                else \
                                        c=`echo $$i | sed 's/^lib\(.*\)\.dll/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
-                                       cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
-                                       chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
-                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
-                                       cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
-                                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
-                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
+                                       cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$c.new; \
+                                       chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$c.new; \
+                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$c; \
+                                       cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.a.new; \
+                                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.a.new; \
+                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/$$i.a; \
                                fi ); \
                        fi; \
                done; \
                (       here="`pwd`"; \
-                       cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
+                       cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64; \
                        set $(MAKE); \
                        $$1 -f $$here/Makefile link-shared ); \
                if [ "$(INSTALLTOP)" != "/usr" ]; then \
@@ -850,8 +850,8 @@
                        sed -e '1,/^$$/d' doc/openssl-shared.txt; \
                fi; \
        fi
-       cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
-       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
+       cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/pkgconfig
+       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/64/pkgconfig/openssl.pc

 install_docs:
        @$(PERL) $(TOP)/util/mkdir-p.pl \
% vi apps/Makefile

@@ -31,8 +31,8 @@

 DLIBCRYPTO=../libcrypto.a
 DLIBSSL=../libssl.a
-LIBCRYPTO=-L.. -lcrypto
-LIBSSL=-L.. -lssl
+LIBCRYPTO=-L.. -R/usr/local/lib/64 -lcrypto
+LIBSSL=-L.. -R/usr/local/lib/64 -lssl

 PROGRAM= openssl

@@ -99,10 +99,10 @@
        @for i in $(EXE); \
        do  \
        (echo installing $$i; \
-        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new \
-        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-        mv -f  $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new \
-               $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \
+        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new; \
+        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new; \
+        mv -f  $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i; \
        ) done;
        @for i in $(SCRIPTS); \
        do  \
% vi fips-1.0/Makefile

@@ -171,9 +171,9 @@
        @for i in $(EXE) ; \
        do \
                echo "installing $$i"; \
-               cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-               chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-               mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \
+               cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new; \
+               chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new; \
+               mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv9/$$i; \
        done
        @cp -p -f fipscanister.o fipscanister.o.sha1 fip
% gmake
% gmake test
# gmake install

32bit版

% ./Configure --prefix=/usr/local solaris-sparcv8-cc shared

できあがったMakefileを修正します。

% vi Makefile

@@ -609,7 +609,7 @@
            echo 'Description: Secure Sockets Layer and cryptography
                libraries and tools'; \          echo 'Version:
                '$(VERSION); \
            echo 'Requires: '; \
-           echo 'Libs: -L$${libdir} -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
+           echo 'Libs: -L$${libdir} -R$${libdir} -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
            echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) >
                openssl.pc

 Makefile: Makefile.org
@@ -785,9 +785,9 @@
 install: all install_docs install_sw

 install_sw:
-       @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
                $(INSTALL_PREFIX)$(INSTALLTOP)/lib \
                $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
+       @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus \
                $(INSTALL_PREFIX)$(INSTALLTOP)/lib \
                $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
                $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
@@ -825,22 +825,22 @@
                        if [ -f "$$i" -o -f "$$i.a" ]; then \
                        (       echo installing $$i; \
                                if [ "$(PLATFORM)" != "Cygwin" ]; then \
                                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
                                        chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
                                else \
                                        c=`echo $$i | sed 's/^lib\(.*\)\.dll/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
-                                       cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
-                                       chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
                                        cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
                                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
+                                       cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$c.new; \
+                                       chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$c.new; \
+                                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$c; \
                                        cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
                                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
                                fi ); \
                        fi; \
                done; \
                (       here="`pwd`"; \
                        cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
                        set $(MAKE); \
                        $$1 -f $$here/Makefile link-shared ); \
                if [ "$(INSTALLTOP)" != "/usr" ]; then \
% vi apps/Makefile

@@ -31,8 +31,8 @@

 DLIBCRYPTO=../libcrypto.a
 DLIBSSL=../libssl.a
-LIBCRYPTO=-L.. -lcrypto
-LIBSSL=-L.. -lssl
+LIBCRYPTO=-L.. -R/usr/local/lib -lcrypto
+LIBSSL=-L.. -R/usr/local/lib -lssl

 PROGRAM= openssl

@@ -99,10 +99,10 @@
        @for i in $(EXE); \
        do  \
        (echo installing $$i; \
-        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new \
-        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-        mv -f  $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new \
-               $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \
+        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new; \
+        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new; \
+        mv -f  $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i; \
        ) done;
        @for i in $(SCRIPTS); \
        do  \
% vi fips-1.0/Makefile

@@ -171,9 +171,9 @@
        @for i in $(EXE) ; \
        do \
                echo "installing $$i"; \
-               cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-               chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
-               mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \
+               cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new; \
+               chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new; \
+               mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/sparcv8plus/$$i; \
        done
        @cp -p -f fipscanister.o fipscanister.o.sha1 fip
% gmake
% gmake test
# gmake install

hiraga@next-hop.net
Last modified: $Date: 2008/11/11 04:20:09 $
Apache