Win32 fixes. Add GOST algorithm to mkdef, update ordinals. Signed/unsigned fixes.
[openssl.git] / Makefile.org
index 0fca719..fa4c83b 100644 (file)
@@ -66,6 +66,7 @@ EXE_EXT=
 ARFLAGS=
 AR=ar $(ARFLAGS) r
 RANLIB= ranlib
+NM= nm
 PERL= perl
 TAR= tar
 TARFLAGS= --no-recursion
@@ -112,11 +113,11 @@ SHLIBDIRS= crypto ssl
 SDIRS=  \
        objects \
        md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
-       des aes rc2 rc4 rc5 idea bf cast \
+       des aes rc2 rc4 rc5 idea bf cast camellia \
        bn ec rsa dsa ecdsa dh ecdh dso engine \
        buffer bio stack lhash rand err \
        evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
-       store pqueue
+       store pqueue ts
 # keep in mind that the above list is adjusted by ./Configure
 # according to no-xxx arguments...
 
@@ -130,6 +131,8 @@ MANDIR=$(OPENSSLDIR)/man
 MAN1=1
 MAN3=3
 MANSUFFIX=
+HTMLSUFFIX=html
+HTMLDIR=$(OPENSSLDIR)/html
 SHELL=/bin/sh
 
 TOP=    .
@@ -172,7 +175,9 @@ CLEARENV=   TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS}     \
 BUILDENV=      PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
                CC='${CC}' CFLAG='${CFLAG}'                     \
                AS='${CC}' ASFLAG='${CFLAG} -c'                 \
-               AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}'    \
+               AR='${AR}' NM='${NM}' RANLIB='${RANLIB}'        \
+               CROSS_COMPILE_PREFIX='${CROSS_COMPILE_PREFIX}'  \
+               PERL='${PERL}'                                  \
                SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib'   \
                INSTALL_PREFIX='${INSTALL_PREFIX}'              \
                INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}'   \
@@ -197,12 +202,29 @@ BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
 # MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
 # which in turn eliminates ambiguities in variable treatment with -e.
 
+# BUILD_CMD is a generic macro to build a given target in a given
+# subdirectory.  The target must be given through the shell variable
+# `target' and the subdirectory to build in must be given through `dir'.
+# This macro shouldn't be used directly, use RECURSIVE_BUILD_CMD or
+# BUILD_ONE_CMD instead.
+#
+# BUILD_ONE_CMD is a macro to build a given target in a given
+# subdirectory if that subdirectory is part of $(DIRS).  It requires
+# exactly the same shell variables as BUILD_CMD.
+#
+# RECURSIVE_BUILD_CMD is a macro to build a given target in all
+# subdirectories defined in $(DIRS).  It requires that the target
+# is given through the shell variable `target'.
 BUILD_CMD=  if [ -d "$$dir" ]; then \
            (   cd $$dir && echo "making $$target in $$dir..." && \
                $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
            ) || exit 1; \
            fi
 RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
+BUILD_ONE_CMD=\
+       if echo " $(DIRS) " | grep " $$dir " >/dev/null 2>/dev/null; then \
+               $(BUILD_CMD); \
+       fi
 
 reflect:
        @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
@@ -213,21 +235,21 @@ build_all: build_libs build_apps build_tests build_tools
 build_libs: build_crypto build_ssl build_engines
 
 build_crypto:
-       @dir=crypto; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=crypto; target=all; $(BUILD_ONE_CMD)
 build_ssl:
-       @dir=ssl; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=ssl; target=all; $(BUILD_ONE_CMD)
 build_engines:
-       @dir=engines; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=engines; target=all; $(BUILD_ONE_CMD)
 build_apps:
-       @dir=apps; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=apps; target=all; $(BUILD_ONE_CMD)
 build_tests:
-       @dir=test; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=test; target=all; $(BUILD_ONE_CMD)
 build_tools:
-       @dir=tools; target=all; $(RECURSIVE_BUILD_CMD)
+       @dir=tools; target=all; $(BUILD_ONE_CMD)
 
 all_testapps: build_libs build_testapps
 build_testapps:
-       @dir=crypto; target=testapps; $(RECURSIVE_BUILD_CMD)
+       @dir=crypto; target=testapps; $(BUILD_ONE_CMD)
 
 libcrypto$(SHLIB_EXT): libcrypto.a
        @if [ "$(SHLIB_TARGET)" != "" ]; then \
@@ -360,16 +382,19 @@ gentests:
        $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate );
 
 dclean:
-       rm -f *.bak
+       rm -rf *.bak include/openssl certs/.0
        @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
 
 rehash: rehash.time
-rehash.time: certs
-       @(OPENSSL="`pwd`/util/opensslwrap.sh"; \
-         OPENSSL_DEBUG_MEMORY=on; \
-         export OPENSSL OPENSSL_DEBUG_MEMORY; \
-         $(PERL) tools/c_rehash certs)
-       touch rehash.time
+rehash.time: certs apps
+       @if [ -z "$(CROSS_COMPILE_PREFIX)" ]; then \
+               (OPENSSL="`pwd`/util/opensslwrap.sh"; \
+               [ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe"; \
+               OPENSSL_DEBUG_MEMORY=on; \
+               export OPENSSL OPENSSL_DEBUG_MEMORY; \
+               $(PERL) tools/c_rehash certs) && \
+               touch rehash.time; \
+       else :; fi
 
 test:   tests
 
@@ -409,6 +434,8 @@ crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
        $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.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
+crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
+       $(PERL) crypto/objects/objxref.pl > crypto/objects/obj_xref.h
 
 apps/openssl-vms.cnf: apps/openssl.cnf
        $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
@@ -421,7 +448,7 @@ TABLE: Configure
        (echo 'Output of `Configure TABLE'"':"; \
        $(PERL) Configure TABLE) > TABLE
 
-update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
+update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
 
 # 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
@@ -523,6 +550,27 @@ install_sw:
        cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
 
+install_html_docs:
+       here="`pwd`"; \
+       for subdir in apps crypto ssl; do \
+               mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
+               for i in doc/$$subdir/*.pod; do \
+                       fn=`basename $$i .pod`; \
+                       echo "installing html/$$fn.$(HTMLSUFFIX)"; \
+                       cat $$i \
+                       | sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
+                       | pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
+                       | sed -r 's/<!DOCTYPE.*//g' \
+                       > $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
+                       $(PERL) util/extract-names.pl < $$i | \
+                               grep -v $$filecase "^$$fn\$$" | \
+                               (cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
+                                while read n; do \
+                                       $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
+                                done); \
+               done; \
+       done
+
 install_docs:
        @$(PERL) $(TOP)/util/mkdir-p.pl \
                $(INSTALL_PREFIX)$(MANDIR)/man1 \