Make sure to NUL-terminate the string on end-of-file (and error)
[openssl.git] / Makefile.org
index c0ed9e42989166a41354fd4363e0f85e4d06b5da..141956adf50abbdbd5003c856a6603fd51a7ae33 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
@@ -170,7 +178,8 @@ SDIRS=  \
        des rc2 rc4 rc5 idea bf cast \
        bn ec rsa dsa ecdsa dh ecdh dso engine aes \
        buffer bio stack lhash rand err objects \
-       evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
+       evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
+       store
 
 # tests to perform.  "alltests" is a special word indicating that all tests
 # should be performed.
@@ -183,6 +192,7 @@ MAKE=     $(NEWMAKE) -f Makefile.ssl
 MANDIR=$(OPENSSLDIR)/man
 MAN1=1
 MAN3=3
+MANSUFFIX=
 SHELL=/bin/sh
 
 TOP=    .
@@ -209,7 +219,7 @@ all: Makefile.ssl build_all openssl.pc
 BUILD_CMD=if echo " $(DIRS) " | grep " $$i " >/dev/null 2>/dev/null; then \
        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)' 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; \
        else \
                $(MAKE) $$i; \
        fi; fi
@@ -273,17 +283,21 @@ build-shared: do_$(SHLIB_TARGET) link-shared
 
 do_$(SHLIB_TARGET):
        @ libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
+               if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
                $(NEWMAKE) -f Makefile.shared \
                        CC="$(CC)" LDFLAGS="$(LDFLAGS)" \
                        SHARED_LDFLAGS="$(SHARED_LDFLAGS)" \
                        LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
                        LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \
                        LIBDEPS="$$libs $(EX_LIBS)" \
+                       LIBRPATH="$(INSTALLTOP)/lib" \
                        link_a.$(SHLIB_TARGET); \
-               libs="$$libs -l$$i"; \
+               libs="-l$$i $$libs"; \
        done
 
-openssl.pc:
+openssl.pc: Makefile.ssl
        @ ( echo 'prefix=$(INSTALLTOP)'; \
            echo 'exec_prefix=$${prefix}'; \
            echo 'libdir=$${exec_prefix}/lib'; \
@@ -294,7 +308,7 @@ openssl.pc:
            echo 'Version: '$(VERSION); \
            echo 'Requires: '; \
            echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \
-           echo 'Cflags: -I$${includedir}' ) > openssl.pc
+           echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
 
 Makefile.ssl: Makefile.org
        @echo "Makefile.ssl is older than Makefile.org."
@@ -302,10 +316,10 @@ Makefile.ssl: Makefile.org
        @false
 
 libclean:
-       rm -f *.so *.so.* engines/*.so *.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 \
@@ -315,7 +329,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 \
@@ -365,9 +379,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
@@ -377,11 +393,13 @@ 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
+       @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
@@ -528,6 +546,12 @@ install: all install_docs
                (       here="`pwd`"; \
                        cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
                        $(NEWMAKE) -f $$here/Makefile HERE="$$here" 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
        cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
 
@@ -546,33 +570,33 @@ 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\$$" | \
                        (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\$$" | \
                        (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