Fix an incoherent test.
[openssl.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index de127df..5583817 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -18,6 +18,7 @@
  For additional platform specific requirements, solutions to specific
  issues and other details, please read one of these:
 
+  * NOTES.UNIX (any supported Unix like system)
   * NOTES.VMS (OpenVMS)
   * NOTES.WIN (any supported Windows)
   * NOTES.DJGPP (DOS platform with DJGPP)
 
     $ @config --prefix=PROGRAM:[INSTALLS] --openssldir=SYS$MANAGER:[OPENSSL]
 
+ (Note: if you do add options to the configuration command, please make sure
+ you've read more than just this Quick Start, such as relevant NOTES.* files,
+ the options outline below, as configuration options may change the outcome
+ in otherwise unexpected ways)
+
 
  Configuration Options
  ---------------------
   no-err
                    Don't compile in any error strings.
 
+  enable-external-tests
+                   Enable building of integration with external test suites.
+                   This is a developer option and may not work on all platforms.
+                   The only supported external test suite at the current time is
+                   the BoringSSL test suite. See the file test/README.external
+                   for further details.
+
   no-filenames
                    Don't compile in filename and line number information (e.g.
                    for errors and memory allocation).
                    available if the GOST algorithms are also available through
                    loading an externally supplied engine.
 
-  enable-heartbeats
-                   Build support for DTLS heartbeats.
-
   no-hw-padlock
                    Don't build the padlock engine.
 
                    Don't build SRTP support
 
   no-sse2
-                   Exclude SSE2 code paths. Normally SSE2 extension is
-                   detected at run-time, but the decision whether or not the
-                   machine code will be executed is taken solely on CPU
-                   capability vector. This means that if you happen to run OS
-                   kernel which does not support SSE2 extension on Intel P4
-                   processor, then your application might be exposed to
-                   "illegal instruction" exception. There might be a way
-                   to enable support in kernel, e.g. FreeBSD kernel can be
-                   compiled with CPU_ENABLE_SSE, and there is a way to
-                   disengage SSE2 code paths upon application start-up,
-                   but if you aim for wider "audience" running such kernel,
-                   consider no-sse2. Both the 386 and no-asm options imply
-                   no-sse2.
+                   Exclude SSE2 code paths from 32-bit x86 assembly modules.
+                   Normally SSE2 extension is detected at run-time, but the
+                   decision whether or not the machine code will be executed
+                   is taken solely on CPU capability vector. This means that
+                   if you happen to run OS kernel which does not support SSE2
+                   extension on Intel P4 processor, then your application
+                   might be exposed to "illegal instruction" exception.
+                   There might be a way to enable support in kernel, e.g.
+                   FreeBSD kernel can  be compiled with CPU_ENABLE_SSE, and
+                   there is a way to disengage SSE2 code paths upon application
+                   start-up, but if you aim for wider "audience" running
+                   such kernel, consider no-sse2. Both the 386 and
+                   no-asm options imply no-sse2.
 
   enable-ssl-trace
                    Build with the SSL Trace capabilities (adds the "-trace"
                    has an impact when not built "shared".
 
   no-stdio
-                   Don't use any C "stdio" features. Only libcrypto and libssl
-                   can be built in this way. Using this option will suppress
+                   Don't use anything from the C header file "stdio.h" that
+                   makes use of the "FILE" type. Only libcrypto and libssl can
+                   be built in this way. Using this option will suppress
                    building the command line applications. Additionally since
                    the OpenSSL tests also use the command line applications the
                    tests will also be skipped.
 
+  no-tests
+                   Don't build test programs or run any test.
+
   no-threads
                    Don't try to build with support for multi-threaded
                    applications.
                    require additional system-dependent options! See "Note on
                    multi-threading" below.
 
+  enable-tls13downgrade
+                   TODO(TLS1.3): Make this enabled by default and remove the
+                   option when TLSv1.3 is out of draft
+                   TLSv1.3 offers a downgrade protection mechanism. This is
+                   implemented but disabled by default. It should not typically
+                   be enabled except for testing purposes. Otherwise this could
+                   cause problems if a pre-RFC version of OpenSSL talks to an
+                   RFC implementation (it will erroneously be detected as a
+                   downgrade).
+
   no-ts
                    Don't build Time Stamping Authority support.
 
                    where loading of shared libraries is supported.
 
   386
-                   On Intel hardware, use the 80386 instruction set only
-                   (the default x86 code is more efficient, but requires at
-                   least a 486). Note: Use compiler flags for any other CPU
-                   specific configuration, e.g. "-m32" to build x86 code on
-                   an x64 system.
+                   In 32-bit x86 builds, when generating assembly modules,
+                   use the 80386 instruction set only (the default x86 code
+                   is more efficient, but requires at least a 486). Note:
+                   This doesn't affect code generated by compiler, you're
+                   likely to complement configuration command line with
+                   suitable compiler-specific option.
+
+  enable-tls1_3
+                   TODO(TLS1.3): Make this enabled by default
+                   Build support for TLS1.3. Note: This is a WIP feature and
+                   only a single draft version is supported.  Implementations
+                   of different draft versions will negotiate TLS 1.2 instead
+                   of (draft) TLS 1.3.  Use with caution!!
 
   no-<prot>
                    Don't build support for negotiating the specified SSL/TLS
                    Build without support for the specified algorithm, where
                    <alg> is one of: bf, blake2, camellia, cast, chacha, cmac,
                    des, dh, dsa, ecdh, ecdsa, idea, md4, mdc2, ocb, poly1305,
-                   rc2, rc4, rmd160, scrypt, seed or whirlpool. The "ripemd"
-                   algorithm is deprecated and if used is synonymous with rmd160.
-
-  -Dxxx, -lxxx, -Lxxx, -fxxx, -mXXX, -Kxxx
-                   These system specific options will be passed through to the
-                   compiler to allow you to define preprocessor symbols, specify
-                   additional libraries, library directories or other compiler
-                   options.
-
+                   rc2, rc4, rmd160, scrypt, seed, siphash, sm3, sm4 or
+                   whirlpool.  The "ripemd" algorithm is deprecated and if used
+                   is synonymous with rmd160.
+
+  -Dxxx, lxxx, -Lxxx, -Wl, -rpath, -R, -framework, -static
+                   These system specific options will be recognised and
+                   passed through to the compiler to allow you to define
+                   preprocessor symbols, specify additional libraries, library
+                   directories or other compiler options. It might be worth
+                   noting that some compilers generate code specifically for
+                   processor the compiler currently executes on. This is not
+                   necessarily what you might have in mind, since it might be
+                   unsuitable for execution on other, typically older,
+                   processor. Consult your compiler documentation.
+
+  -xxx, +xxx
+                   Additional options that are not otherwise recognised are
+                   passed through as they are to the compiler as well.  Again,
+                   consult your compiler documentation.
+
+  VAR=value
+                   Assignment if environment variable for Configure.  These
+                   work just like normal environment variable assignments,
+                   but are supported on all platforms and are confined to
+                   the configuration scripts only.  These assignments override
+                   the corresponding value in the inherited environment, if
+                   there is one.
+
+  reconf
+  reconfigure
+                   Reconfigure from earlier data.  This fetches the previous
+                   command line options and environment from data saved in
+                   "configdata.pm", and runs the configuration process again,
+                   using these options and environment.
+                   Note: NO other option is permitted together with "reconf".
+                   This means that you also MUST use "./Configure" (or
+                   what corresponds to that on non-Unix platforms) directly
+                   to invoke this option.
+                   Note: The original configuration saves away values for ALL
+                   environment variables that were used, and if they weren't
+                   defined, they are still saved away with information that
+                   they weren't originally defined.  This information takes
+                   precedence over environment variables that are defined
+                   when reconfiguring.
 
  Installation in Detail
  ----------------------
      ("openssl"). The libraries will be built in the top-level directory,
      and the binary will be in the "apps" subdirectory.
 
-     If the build fails, look at the output.  There may be reasons for
-     the failure that aren't problems in OpenSSL itself (like missing
-     standard headers).  If you are having problems you can get help by
-     sending an email to the openssl-users email list (see
-     https://www.openssl.org/community/mailinglists.html for details). If it
-     is a bug with OpenSSL itself, please report the problem to
-     <rt@openssl.org> (note that your message will be recorded in the request
-     tracker publicly readable at
-     https://www.openssl.org/community/index.html#bugs and will be
-     forwarded to a public mailing list). Please check out the request
-     tracker. Maybe the bug was already reported or has already been
+     If the build fails, look at the output.  There may be reasons
+     for the failure that aren't problems in OpenSSL itself (like
+     missing standard headers).  If you are having problems you can
+     get help by sending an email to the openssl-users email list (see
+     https://www.openssl.org/community/mailinglists.html for details). If
+     it is a bug with OpenSSL itself, please open an issue on GitHub, at
+     https://github.com/openssl/openssl/issues. Please review the existing
+     ones first; maybe the bug was already reported or has already been
      fixed.
 
      (If you encounter assembler error messages, try the "no-asm"
      compiler optimization flags from the CFLAGS line in Makefile and
      run "make clean; make" or corresponding.
 
-     Please send bug reports to <rt@openssl.org>.
+     To report a bug please open an issue on GitHub, at
+     https://github.com/openssl/openssl/issues.
 
      For more details on how the make variables TESTS can be used,
      see section TESTS in Detail below.
                 possible to create your own ".conf" and ".tmpl" files and store
                 them locally, outside the OpenSSL source tree. This environment
                 variable can be set to the directory where these files are held
-                and will have Configure to consider them in addition to the
-                standard ones.
+                and will be considered by Configure before it looks in the
+                standard directories.
 
  PERL
                 The name of the Perl executable to use when building OpenSSL.
  -xxx           Removes 'xxx' from the current set of tests.  If this is the
                 first token in the list, the current set of tests is first
                 assigned the whole set of available tests, effectively making
-                this token equivalent to TESTS="alltests -xxx"
+                this token equivalent to TESTS="alltests -xxx".
+ nn             Adds the test group 'nn' (which is a number) to the current
+                set of tests.
+ -nn            Removes the test group 'nn' from the current set of tests.
+                If this is the first token in the list, the current set of
+                tests is first assigned the whole set of available tests,
+                effectively making this token equivalent to
+                TESTS="alltests -xxx".
 
  Also, all tokens except for "alltests" may have wildcards, such as *.
  (on Unix and Windows, BSD style wildcards are supported, while on VMS,
 
  $ make TESTS='test_ssl* -test_ssl_*' test
 
+ Example: Only test group 10:
+
+ $ make TESTS='10'
+
+ Example: All tests except the slow group (group 99):
+
+ $ make TESTS='-99'
+
+ Example: All tests in test groups 80 to 99 except for tests in group 90:
+
+ $ make TESTS='[89]? -90'
+
  Note on multi-threading
  -----------------------
 
  and libssl-1_1-x64.dll for 64-bit x86_64 Windows, and libcrypto-1_1-ia64.dll
  and libssl-1_1-ia64.dll for IA64 Windows.  With MSVC, the import libraries
  are named libcrypto.lib and libssl.lib, while with MingW, they are named
- libcrypto.dll.a and libddl.dll.a.
+ libcrypto.dll.a and libssl.dll.a.
 
  On VMS, shareable images (VMS speak for shared libraries) are named
  ossl$libcrypto0101_shr.exe and ossl$libssl0101_shr.exe.  However, when