Fixes so alerts are sent properly in s3_pkt.c
[oweals/openssl.git] / Makefile.org
index 72a8abfcf78d9525c6de100927786741c92b9361..1527ca45e23c426e7c1907b092a0ab07d3f96901 100644 (file)
@@ -72,6 +72,14 @@ TAR= tar
 TARFLAGS= --no-recursion
 MAKEDEPPROG=makedepend
 
+# We let the C compiler driver to take care of .s files. This is done in
+# order to be excused from maintaining a separate set of architecture
+# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
+# gcc, then the driver will automatically translate it to -xarch=v8plus
+# and pass it down to assembler.
+AS=$(CC) -c
+ASFLAG=$(CFLAG)
+
 # Set BN_ASM to bn_asm.o if you want to use the C version
 BN_ASM= bn_asm.o
 #BN_ASM= bn_asm.o
@@ -93,6 +101,7 @@ PROCESSOR=
 
 # Set DES_ENC to des_enc.o if you want to use the C version
 #There are 4 x86 assember options.
+FIPS_DES_ENC= des_enc.o fcrypt_b.o
 DES_ENC= asm/dx86-out.o asm/yx86-out.o
 #DES_ENC= des_enc.o fcrypt_b.o          # C
 #DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf
@@ -145,6 +154,7 @@ MD5_ASM_OBJ= asm/mx86-out.o
 
 # Also need SHA1_ASM defined
 SHA1_ASM_OBJ= asm/sx86-out.o
+FIPS_SHA1_ASM_OBJ= asm/sx86-out.o
 #SHA1_ASM_OBJ= asm/sx86-elf.o       # elf
 #SHA1_ASM_OBJ= asm/sx86-sol.o       # solaris
 #SHA1_ASM_OBJ= asm/sx86-out.o       # a.out, FreeBSD
@@ -165,27 +175,29 @@ LIBKRB5=
 # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
 SHLIB_MARK=
 
-DIRS=   crypto ssl $(SHLIB_MARK) apps test tools
-SHLIBDIRS= crypto ssl
+DIRS=   crypto fips ssl $(SHLIB_MARK) sigs apps test tools
+SHLIBDIRS= fips crypto ssl
 
 # dirs in crypto to build
-SDIRS=  \
+SDIRS=  objects \
        md2 md4 md5 sha mdc2 hmac ripemd \
        des rc2 rc4 rc5 idea bf cast \
        bn ec rsa dsa dh dso engine aes \
-       buffer bio stack lhash rand err objects \
+       buffer bio stack lhash rand err \
        evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
 
+FDIRS= sha1 rand des aes dsa rsa
+
 # tests to perform.  "alltests" is a special word indicating that all tests
 # should be performed.
 TESTS = alltests
 
-MAKEFILE= Makefile.ssl
-MAKE=     make -f Makefile.ssl
+MAKEFILE= Makefile
 
 MANDIR=$(OPENSSLDIR)/man
 MAN1=1
 MAN3=3
+MANSUFFIX=
 SHELL=/bin/sh
 
 TOP=    .
@@ -193,6 +205,7 @@ ONEDIRS=out tmp
 EDIRS=  times doc bugs util include certs ms shlib mt demos perl sf dep VMS
 WDIRS=  windows
 LIBS=   libcrypto.a libssl.a
+SIGS=  libcrypto.sha1
 SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
 SHARED_SSL=libssl$(SHLIB_EXT)
 SHARED_LIBS=
@@ -210,14 +223,32 @@ HEADER=         e_os.h
 # When we're prepared to use shared libraries in the programs we link here
 # we might remove 'clean-shared' from the targets to perform at this stage
 
-all: Makefile.ssl sub_all openssl.pc
+all: Makefile sub_all openssl.pc
+
+sigs:  $(SIGS)
+libcrypto.sha1: libcrypto.a
+       if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
+               $(RANLIB) libcrypto.a; \
+               fips/sha1/fips_standalone_sha1 libcrypto.a > libcrypto.sha1; \
+       fi
 
 sub_all:
        @for i in $(DIRS); \
        do \
        if [ -d "$$i" ]; then \
                (cd $$i && echo "making all in $$i..." && \
-               $(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}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' all ) || exit 1; \
+               $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' all ) || exit 1; \
+       else \
+               $(MAKE) $$i; \
+       fi; \
+       done;
+
+sub_target:
+       @for i in $(DIRS); \
+       do \
+       if [ -d "$$i" ]; then \
+               (cd $$i && echo "making $(TARGET) in $$i..." && \
+               $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TARGET='$(TARGET)' sub_target ) || exit 1; \
        else \
                $(MAKE) $$i; \
        fi; \
@@ -270,13 +301,16 @@ do_bsd-gcc-shared: do_gnu-shared
 do_linux-shared: do_gnu-shared
 do_gnu-shared:
        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        ( set -x; ${CC} ${SHARED_LDFLAGS} \
                -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                -Wl,-Bsymbolic \
                -Wl,--whole-archive lib$$i.a \
                -Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
-       libs="$$libs -l$$i"; \
+       libs="-l$$i $$libs"; \
        done
 
 DETECT_GNU_LD=(${CC} -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
@@ -284,22 +318,28 @@ DETECT_GNU_LD=(${CC} -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
 # For Darwin AKA Mac OS/X (dyld)
 do_darwin-shared: 
        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
-       ( set -x ; ${CC} --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
+       ( set -x; ${CC} --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; \
-       libs="$$libs -l`basename $$i${SHLIB_EXT} .dylib`"; \
+       libs="-l`basename $$i${SHLIB_EXT} .dylib` $$libs"; \
        echo "" ; \
        done
 
 do_cygwin-shared:
        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        ( set -x; ${CC}  -shared -o cyg$$i-$(SHLIB_VERSION_NUMBER).dll \
                -Wl,-Bsymbolic \
                -Wl,--whole-archive lib$$i.a \
                -Wl,--out-implib,lib$$i.dll.a \
                -Wl,--no-whole-archive $$libs ) || exit 1; \
-       libs="$$libs -l$$i"; \
+       libs="-l$$i $$libs"; \
        done
 
 # This assumes that GNU utilities are *not* used
@@ -308,11 +348,14 @@ do_alpha-osf1-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( set -x; ${CC} ${SHARED_LDFLAGS} \
                        -shared -o lib$$i.so \
                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -324,11 +367,14 @@ do_tru64-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( set -x; ${CC} ${SHARED_LDFLAGS} \
                        -shared -msym -o lib$$i.so \
                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -340,12 +386,15 @@ do_tru64-shared-rpath:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( set -x; ${CC} ${SHARED_LDFLAGS} \
                        -shared -msym -o lib$$i.so \
                        -rpath  ${INSTALLTOP}/lib \
                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -356,6 +405,9 @@ do_solaris-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
                  MINUSZ='-z '; \
                  (${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
@@ -364,7 +416,7 @@ do_solaris-shared:
                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        $${MINUSZ}allextract lib$$i.a $${MINUSZ}defaultextract \
                        $$libs ${EX_LIBS} -lc ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -374,16 +426,20 @@ do_svr3-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
                  find . -name "*.o" -print > allobjs ; \
                  OBJS= ; export OBJS ; \
                  for obj in `ar t lib$$i.a` ; do \
-                   OBJS="$${OBJS} `grep $$obj allobjs`" ; \
+                   OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
                  done ; \
-                 set -x; ${CC}  -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
+                 set -x; ${CC} ${SHARED_LDFLAGS} \
+                       -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -393,17 +449,23 @@ do_svr5-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
+                 SHARE_FLAG='-G'; \
+                 (${CC} -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
                  find . -name "*.o" -print > allobjs ; \
                  OBJS= ; export OBJS ; \
                  for obj in `ar t lib$$i.a` ; do \
-                   OBJS="$${OBJS} `grep $$obj allobjs`" ; \
+                   OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
                  done ; \
-                 set -x; ${CC} ${SHARED_LDFLAGS} \
-                       -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
+                 set -x; LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH \
+                       ${CC} ${SHARED_LDFLAGS} \
+                       $${SHARE_FLAG} -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -413,11 +475,16 @@ do_irix-shared:
                $(MAKE) do_gnu-shared; \
        else \
                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
-               ( set -x; ${CC} ${SHARED_LDFLAGS} \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
+               ( WHOLELIB="-all lib$$i.a -notall"; \
+                 (${CC} -v 2>&1 | grep gcc) > /dev/null && WHOLELIB="-Wl,-all,lib$$i.a,-notall"; \
+                 set -x; ${CC} ${SHARED_LDFLAGS} \
                        -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
-                       -all lib$$i.a $$libs ${EX_LIBS} -lc) || exit 1; \
-               libs="$$libs -l$$i"; \
+                       $${WHOLELIB} $$libs ${EX_LIBS} -lc) || exit 1; \
+               libs="-l$$i $$libs"; \
                done; \
        fi
 
@@ -434,8 +501,11 @@ do_irix-shared:
 #
 do_hpux-shared:
        for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
-               +vnocompatwarnings \
+               +vnocompatwarnings \
                -b -z +s \
                -o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
@@ -454,8 +524,11 @@ do_hpux-shared:
 #
 do_hpux64-shared:
        for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
-               -b -z \
+               -b -z \
                -o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
                +forceload lib$$i.a -ldl -lc ) || exit 1; \
@@ -496,17 +569,24 @@ SHAREDFLAGS=${SHARED_LDFLAGS} -G -bE:lib$$i.exp -bM:SRE
 SHAREDCMD=$(CC)
 do_aix-shared:
        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        ( set -x; \
-         ld -r -o $$i.o $(ALLSYMSFLAG) lib$$i.a && \
+         ld -r -o lib$$i.o $(ALLSYMSFLAG) lib$$i.a && \
          ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \
-           $(SHAREDCMD) $(SHAREDFLAG) -o lib$$i.so lib$$i.o \
+           $(SHAREDCMD) $(SHAREDFLAGS) \
+               -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} lib$$i.o \
                $$libs ${EX_LIBS} ) ) \
        || exit 1; \
-       libs="$$libs -l$$i"; \
+       libs="-l$$i $$libs"; \
        done
 
 do_reliantunix-shared:
        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+       if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+               libs="$(LIBKRB5) $$libs"; \
+       fi; \
        tmpdir=/tmp/openssl.$$$$ ; rm -rf $$tmpdir ; \
        ( set -x; \
          ( Opwd=`pwd` ; mkdir $$tmpdir || exit 1; \
@@ -516,10 +596,10 @@ do_reliantunix-shared:
          cp $$tmpdir/lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} . ; \
        ) || exit 1; \
        rm -rf $$tmpdir ; \
-       libs="$$libs -l$$i"; \
+       libs="-l$$i $$libs"; \
        done
 
-openssl.pc: Makefile.ssl
+openssl.pc: Makefile
        @ ( echo 'prefix=$(INSTALLTOP)'; \
            echo 'exec_prefix=$${prefix}'; \
            echo 'libdir=$${exec_prefix}/lib'; \
@@ -529,19 +609,19 @@ openssl.pc: Makefile.ssl
            echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
            echo 'Version: '$(VERSION); \
            echo 'Requires: '; \
-           echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \
-           echo 'Cflags: -I$${includedir}' ) > openssl.pc
+           echo 'Libs: -L$${libdir} -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
+           echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
 
-Makefile.ssl: Makefile.org
-       @echo "Makefile.ssl is older than Makefile.org."
+Makefile: Makefile.org
+       @echo "Makefile is older than Makefile.org."
        @echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
        @false
 
 libclean:
-       rm -f *.a */lib */*/lib
+       rm -f *.map *.so *.so.* engines/*.so *.a */lib */*/lib
 
-clean:
-       rm -f shlib/*.o *.o core a.out fluff *.map rehash.time testlog make.log cctest cctest.c
+clean: libclean
+       rm -f shlib/*.o *.o core a.out fluff rehash.time testlog make.log cctest cctest.c
        @for i in $(DIRS) ;\
        do \
        if [ -d "$$i" ]; then \
@@ -551,7 +631,7 @@ clean:
        fi; \
        done;
        rm -f openssl.pc
-       rm -f *.a *.o speed.* *.map *.so .pure core
+       rm -f speed.* .pure
        rm -f $(TARFILE)
        @for i in $(ONEDIRS) ;\
        do \
@@ -563,7 +643,7 @@ makefile.one: files
        sh util/do_ms.sh
 
 files:
-       $(PERL) $(TOP)/util/files.pl Makefile.ssl > $(TOP)/MINFO
+       $(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO
        @for i in $(DIRS) ;\
        do \
        if [ -d "$$i" ]; then \
@@ -573,19 +653,18 @@ files:
        done;
 
 links:
-       @$(TOP)/util/point.sh Makefile.ssl Makefile
        @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
        @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
        @for i in $(DIRS); do \
        if [ -d "$$i" ]; then \
                (cd $$i && echo "making links in $$i..." && \
-               $(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}' PERL='${PERL}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' links ) || exit 1; \
+               $(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}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PERL='${PERL}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' links ) || exit 1; \
        fi; \
        done;
 
 gentests:
        @(cd test && echo "generating dummy tests (if needed)..." && \
-       $(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}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate );
+       $(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}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate );
 
 dclean:
        rm -f *.bak
@@ -601,9 +680,11 @@ rehash: rehash.time
 rehash.time: certs
        @(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; \
                export OPENSSL OPENSSL_DEBUG_MEMORY; \
-               LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
-               if [ "$(PLATFORM)" = "DJGPP" ]; then PATH="`pwd`\;$$PATH";  \
-               elif [ "$(PLATFORM)" != "Cygwin" ];  then PATH="`pwd`:$$PATH"; fi; \
+               LD_LIBRARY_PATH="`pwd`:$$LD_LIBRARY_PATH"; \
+               DYLD_LIBRARY_PATH="`pwd`:$$DYLD_LIBRARY_PATH"; \
+               SHLIB_PATH="`pwd`:$$SHLIB_PATH"; \
+               LIBPATH="`pwd`:$$LIBPATH"; \
+               if [ "$(PLATFORM)" = "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
                export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
                $(PERL) tools/c_rehash certs)
        touch rehash.time
@@ -612,12 +693,14 @@ test:   tests
 
 tests: rehash
        @(cd test && echo "testing..." && \
-       $(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}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
-       @LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
-               if [ "$(PLATFORM)" = "DJGPP" ]; then PATH="`pwd`\;$$PATH";  \
-               elif [ "$(PLATFORM)" != "Cygwin" ];  then PATH="`pwd`:$$PATH"; fi; \
-               export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
-               apps/openssl version -a
+       $(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}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
+       @LD_LIBRARY_PATH="`pwd`:$$LD_LIBRARY_PATH"; \
+       DYLD_LIBRARY_PATH="`pwd`:$$DYLD_LIBRARY_PATH"; \
+       SHLIB_PATH="`pwd`:$$SHLIB_PATH"; \
+       LIBPATH="`pwd`:$$LIBPATH"; \
+       if [ "$(PLATFORM)" = "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
+       export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
+       apps/openssl version -a
 
 report:
        @$(PERL) util/selftest.pl
@@ -667,11 +750,14 @@ crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
 crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
        $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
 
+apps/openssl-vms.cnf: apps/openssl.cnf
+       $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
+
 TABLE: Configure
        (echo 'Output of `Configure TABLE'"':"; \
        $(PERL) Configure TABLE) > TABLE
 
-update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h TABLE
+update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf TABLE
 
 # Build distribution tar-file. As the list of files returned by "find" is
 # pretty long, on several platforms a "too many arguments" error or similar
@@ -715,8 +801,7 @@ install: all install_docs
                $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
                $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
-               $(INSTALL_PREFIX)$(OPENSSLDIR)/private \
-               $(INSTALL_PREFIX)$(OPENSSLDIR)/lib
+               $(INSTALL_PREFIX)$(OPENSSLDIR)/private
        @for i in $(EXHEADER) ;\
        do \
        (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
@@ -734,7 +819,9 @@ install: all install_docs
                if [ -f "$$i" ]; then \
                (       echo installing $$i; \
                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-                       $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                       if ! egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
+                               $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                       fi; \
                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
                fi; \
@@ -750,7 +837,7 @@ install: all install_docs
                                        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\(.*\)/cyg\1-$(SHLIB_VERSION_NUMBER)/'`; \
+                                       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; \
@@ -764,8 +851,24 @@ install: all install_docs
                        cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
                        set $(MAKE); \
                        $$1 -f $$here/Makefile link-shared ); \
+               if [ "$(INSTALLTOP)" != "/usr" ]; then \
+                       echo 'OpenSSL shared libraries have been installed in:'; \
+                       echo '  $(INSTALLTOP)'; \
+                       echo ''; \
+                       sed -e '1,/^$$/d' doc/openssl-shared.txt; \
+               fi; \
        fi
+       @for i in $(SIGS) ;\
+       do \
+               if [ -f "$$i" ]; then \
+               (       echo installing $$i; \
+                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+                       mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
+               fi; \
+       done;
        cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
+       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
 
 install_docs:
        @$(PERL) $(TOP)/util/mkdir-p.pl \
@@ -782,33 +885,35 @@ install_docs:
        for i in doc/apps/*.pod; do \
                fn=`basename $$i .pod`; \
                if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
-               echo "installing man$$sec/$$fn.$$sec"; \
+               echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
                (cd `$(PERL) util/dirname.pl $$i`; \
                sh -c "$$pod2man \
                        --section=$$sec --center=OpenSSL \
                        --release=$(VERSION) `basename $$i`") \
-                       >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
+                       >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
                $(PERL) util/extract-names.pl < $$i | \
                        grep -v $$filecase "^$$fn\$$" | \
+                       grep -v "[      ]" | \
                        (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
                         while read n; do \
-                               $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
+                               $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
                         done); \
        done; \
        for i in doc/crypto/*.pod doc/ssl/*.pod; do \
                fn=`basename $$i .pod`; \
                if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
-               echo "installing man$$sec/$$fn.$$sec"; \
+               echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
                (cd `$(PERL) util/dirname.pl $$i`; \
                sh -c "$$pod2man \
                        --section=$$sec --center=OpenSSL \
                        --release=$(VERSION) `basename $$i`") \
-                       >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
+                       >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
                $(PERL) util/extract-names.pl < $$i | \
                        grep -v $$filecase "^$$fn\$$" | \
+                       grep -v "[      ]" | \
                        (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
                         while read n; do \
-                               $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
+                               $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
                         done); \
        done