Make fuzzer and fuzz tester builds less magic
[openssl.git] / INSTALL
1
2  OPENSSL INSTALLATION
3  --------------------
4
5  [This document describes installation on all supported operating
6   systems (currently mainly the Linux/Unix family, OpenVMS and
7   Windows)]
8
9  To install OpenSSL, you will need:
10
11   * A make implementation
12   * Perl 5 with core modules (please read NOTES.PERL)
13   * The perl module Text::Template (please read NOTES.PERL)
14   * an ANSI C compiler
15   * a development environment in the form of development libraries and C
16     header files
17   * a supported operating system
18
19  For additional platform specific requirements and other details,
20  please read one of these:
21
22   * NOTES.VMS (OpenVMS)
23   * NOTES.WIN (any supported Windows)
24   * NOTES.DJGPP (DOS platform with DJGPP)
25
26  Quick Start
27  -----------
28
29  If you want to just get on with it, do:
30
31   on Unix:
32
33     $ ./config
34     $ make
35     $ make test
36     $ make install
37
38   on OpenVMS:
39
40     $ @config
41     $ mms
42     $ mms test
43     $ mms install
44
45   on Windows (only pick one of the targets for configuration):
46
47     $ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
48     $ nmake
49     $ nmake test
50     $ nmake install
51
52  [If any of these steps fails, see section Installation in Detail below.]
53
54  This will build and install OpenSSL in the default location, which is:
55
56   Unix:    normal installation directories under /usr/local
57   OpenVMS: SYS$COMMON:[OPENSSL-'version'...], where 'version' is the
58            OpenSSL version number with underscores instead of periods.
59   Windows: C:\Program Files\OpenSSL or C:\Program Files (x86)\OpenSSL
60
61  If you want to install it anywhere else, run config like this:
62
63   On Unix:
64
65     $ ./config --prefix=/opt/openssl --openssldir=/usr/local/ssl
66
67   On OpenVMS:
68
69     $ @config --prefix=PROGRAM:[INSTALLS] --openssldir=SYS$MANAGER:[OPENSSL]
70
71
72  Configuration Options
73  ---------------------
74
75  There are several options to ./config (or ./Configure) to customize
76  the build (note that for Windows, the defaults for --prefix and
77  --openssldir depend in what configuration is used and what Windows
78  implementation OpenSSL is built on.  More notes on this in NOTES.WIN):
79
80   --api=x.y.z
81                    Don't build with support for deprecated APIs below the
82                    specified version number. For example "--api=1.1.0" will
83                    remove support for all APIS that were deprecated in OpenSSL
84                    version 1.1.0 or below.
85
86   --cross-compile-prefix=PREFIX
87                    The PREFIX to include in front of commands for your
88                    toolchain. For example to build the mingw64 target on Linux
89                    you might use "--cross-compile-prefix=x86_64-w64-mingw32-".
90                    If the compiler is gcc, then this will attempt to run
91                    x86_64-w64-mingw32-gcc when compiling.
92
93   --debug
94                    Build OpenSSL with debugging symbols.
95
96   --libdir=DIR
97                    The name of the directory under the top of the installation
98                    directory tree (see the --prefix option) where libraries will
99                    be installed. By default this is "lib". Note that on Windows
100                    only ".lib" files will be stored in this location. dll files
101                    will always be installed to the "bin" directory.
102
103   --openssldir=DIR
104                    Directory for OpenSSL configuration files, and also the
105                    default certificate and key store.  Defaults are:
106
107                    Unix:           /usr/local/ssl
108                    Windows:        C:\Program Files\Common Files\SSL
109                                 or C:\Program Files (x86)\Common Files\SSL
110                    OpenVMS:        SYS$COMMON:[OPENSSL-COMMON]
111
112   --prefix=DIR
113                    The top of the installation directory tree.  Defaults are:
114
115                    Unix:           /usr/local
116                    Windows:        C:\Program Files\OpenSSL
117                                 or C:\Program Files (x86)\OpenSSL
118                    OpenVMS:        SYS$COMMON:[OPENSSL-'version']
119
120   --release
121                    Build OpenSSL without debugging symbols. This is the default.
122
123   --strict-warnings
124                    This is a developer flag that switches on various compiler
125                    options recommended for OpenSSL development. It only works
126                    when using gcc or clang as the compiler. If you are
127                    developing a patch for OpenSSL then it is recommended that
128                    you use this option where possible.
129
130   --with-zlib-include=DIR
131                    The directory for the location of the zlib include file. This
132                    option is only necessary if enable-zlib (see below) is used
133                    and the include file is not already on the system include
134                    path.
135
136   --with-zlib-lib=LIB
137                    On Unix: this is the directory containing the zlib library.
138                    If not provided the system library path will be used.
139                    On Windows: this is the filename of the zlib library (with or
140                    without a path). This flag must be provided if the
141                    zlib-dynamic option is not also used. If zlib-dynamic is used
142                    then this flag is optional and a default value ("ZLIB1") is
143                    used if not provided. 
144                    On VMS: this is the filename of the zlib library (with or
145                    without a path). This flag is optional and if not provided
146                    then "GNV$LIBZSHR", "GNV$LIBZSHR32" or "GNV$LIBZSHR64" is
147                    used by default depending on the pointer size chosen.
148
149   no-afalgeng
150                    Don't build the AFALG engine. This option will be forced if
151                    on a platform that does not support AFALG.
152
153   enable-asan
154                    Build with the Address sanitiser. This is a developer option
155                    only. It may not work on all platforms and should never be
156                    used in production environments. It will only work when used
157                    with gcc or clang and should be used in conjunction with the
158                    no-shared option.
159
160   no-asm
161                    Do not use assembler code. On some platforms a small amount
162                    of assembler code may still be used.
163
164   no-async
165                    Do not build support for async operations.
166
167   no-autoalginit
168                    Don't automatically load all supported ciphers and digests.
169                    Typically OpenSSL will make available all of its supported
170                    ciphers and digests. For a statically linked application this
171                    may be undesirable if small executable size is an objective.
172                    This only affects libcrypto. Ciphers and digests will have to
173                    be loaded manually using EVP_add_cipher() and
174                    EVP_add_digest() if this option is used. This option will
175                    force a non-shared build.
176
177   no-autoerrinit
178                    Don't automatically load all libcrypto/libssl error strings.
179                    Typically OpenSSL will automatically load human readable
180                    error strings. For a statically linked application this may
181                    be undesirable if small executable size is an objective.
182
183
184   no-capieng
185                    Don't build the CAPI engine. This option will be forced if
186                    on a platform that does not support CAPI.
187
188   no-cms
189                    Don't build support for CMS features
190
191   no-comp
192                    Don't build support for SSL/TLS compression. If this option
193                    is left enabled (the default), then compression will only
194                    work if the zlib or zlib-dynamic options are also chosen.
195
196   enable-crypto-mdebug
197                    Build support for debugging memory allocated via
198                    OPENSSL_malloc() or OPENSSL_zalloc().
199
200   enable-crypto-mdebug-backtrace
201                    As for crypto-mdebug, but additionally provide backtrace
202                    information for allocated memory.
203                    TO BE USED WITH CARE: this uses GNU C functionality, and
204                    is therefore not usable for non-GNU config targets.  If
205                    your build complains about the use of '-rdynamic' or the
206                    lack of header file execinfo.h, this option is not for you.
207                    ALSO NOTE that even though execinfo.h is available on your
208                    system (through Gnulib), the functions might just be stubs
209                    that do nothing.
210
211   no-ct
212                    Don't build support for Certificate Transparency.
213
214   no-deprecated
215                    Don't build with support for any deprecated APIs. This is the
216                    same as using "--api" and supplying the latest version
217                    number.
218
219   no-dgram
220                    Don't build support for datagram based BIOs. Selecting this
221                    option will also force the disabling of DTLS.
222
223   no-dso
224                    Don't build support for loading Dynamic Shared Objects.
225
226   no-dynamic-engine
227                    Don't build the dynamically loaded engines. This only has an
228                    effect in a "shared" build
229
230   no-ec
231                    Don't build support for Elliptic Curves.
232
233   no-ec2m
234                    Don't build support for binary Elliptic Curves
235
236   enable-ec_nistp_64_gcc_128
237                    Enable support for optimised implementations of some commonly
238                    used NIST elliptic curves. This is only supported on some
239                    platforms.
240
241   enable-egd
242                    Build support for gathering entropy from EGD (Entropy
243                    Gathering Daemon).
244
245   no-engine
246                    Don't build support for loading engines.
247
248   no-err
249                    Don't compile in any error strings.
250
251   no-filenames
252                    Don't compile in filename and line number information (e.g.
253                    for errors and memory allocation).
254
255   enable-fuzz
256                    Build with support for fuzzing. This is a developer option
257                    only. It may not work on all platforms and should never be
258                    used in production environments. See the file fuzz/README.md
259                    for further details.
260
261   no-gost
262                    Don't build support for GOST based ciphersuites. Note that
263                    if this feature is enabled then GOST ciphersuites are only
264                    available if the GOST algorithms are also available through
265                    loading an externally supplied engine.
266
267   enable-heartbeats
268                    Build support for DTLS heartbeats.
269
270   no-hw-padlock
271                    Don't build the padlock engine.
272
273   no-makedepend
274                    Don't generate dependencies.
275
276   no-multiblock
277                    Don't build support for writing multiple records in one
278                    go in libssl (Note: this is a different capability to the
279                    pipelining functionality).
280
281   no-nextprotoneg
282                    Don't build support for the NPN TLS extension.
283
284   no-ocsp
285                    Don't build support for OCSP.
286
287   no-pic
288                    Don't build with support for Position Independent Code.
289
290   no-posix-io
291                    Don't use POSIX IO capabilities.
292
293   no-psk
294                    Don't build support for Pre-Shared Key based ciphersuites.
295
296   no-rdrand
297                    Don't use hardware RDRAND capabilities.
298
299   no-rfc3779
300                    Don't build support for RFC3779 ("X.509 Extensions for IP
301                    Addresses and AS Identifiers")
302
303   sctp
304                    Build support for SCTP
305
306   no-shared
307                    Do not create shared libraries, only static ones.  See "Note
308                    on shared libraries" below.
309
310   no-sock
311                    Don't build support for socket BIOs
312
313   no-srp
314                    Don't build support for SRP or SRP based ciphersuites.
315
316   no-srtp
317                    Don't build SRTP support
318
319   no-sse2
320                    Exclude SSE2 code paths. Normally SSE2 extension is
321                    detected at run-time, but the decision whether or not the
322                    machine code will be executed is taken solely on CPU
323                    capability vector. This means that if you happen to run OS
324                    kernel which does not support SSE2 extension on Intel P4
325                    processor, then your application might be exposed to
326                    "illegal instruction" exception. There might be a way
327                    to enable support in kernel, e.g. FreeBSD kernel can be
328                    compiled with CPU_ENABLE_SSE, and there is a way to
329                    disengage SSE2 code paths upon application start-up,
330                    but if you aim for wider "audience" running such kernel,
331                    consider no-sse2. Both the 386 and no-asm options imply
332                    no-sse2.
333
334   enable-ssl-trace
335                    Build with the SSL Trace capabilities (adds the "-trace"
336                    option to s_client and s_server).
337
338   no-static-engine
339                    Don't build the statically linked engines. This only
340                    has an impact when not built "shared".
341
342   no-stdio
343                    Don't use any C "stdio" features. Only libcrypto and libssl
344                    can be built in this way. Using this option will suppress
345                    building the command line applications. Additionally since
346                    the OpenSSL tests also use the command line applications the
347                    tests will also be skipped.
348
349   no-threads
350                    Don't try to build with support for multi-threaded
351                    applications.
352
353   threads
354                    Build with support for multi-threaded applications. Most
355                    platforms will enable this by default. However if on a
356                    platform where this is not the case then this will usually
357                    require additional system-dependent options! See "Note on
358                    multi-threading" below.
359
360   no-ts
361                    Don't build Time Stamping Authority support.
362
363   enable-ubsan
364                    Build with the Undefined Behaviour sanitiser. This is a
365                    developer option only. It may not work on all platforms and
366                    should never be used in production environments. It will only
367                    work when used with gcc or clang and should be used in
368                    conjunction with the "-DPEDANTIC" option (or the
369                    --strict-warnings option).
370
371   no-ui
372                    Don't build with the "UI" capability (i.e. the set of
373                    features enabling text based prompts).
374
375   enable-unit-test
376                    Enable additional unit test APIs. This should not typically
377                    be used in production deployments.
378
379   enable-weak-ssl-ciphers
380                    Build support for SSL/TLS ciphers that are considered "weak"
381                    (e.g. RC4 based ciphersuites).
382
383   zlib
384                    Build with support for zlib compression/decompression.
385
386   zlib-dynamic
387                    Like "zlib", but has OpenSSL load the zlib library
388                    dynamically when needed.  This is only supported on systems
389                    where loading of shared libraries is supported.
390
391   386
392                    On Intel hardware, use the 80386 instruction set only
393                    (the default x86 code is more efficient, but requires at
394                    least a 486). Note: Use compiler flags for any other CPU
395                    specific configuration, e.g. "-m32" to build x86 code on
396                    an x64 system.
397
398   no-<prot>
399                    Don't build support for negotiating the specified SSL/TLS
400                    protocol (one of ssl, ssl3, tls, tls1, tls1_1, tls1_2, dtls,
401                    dtls1 or dtls1_2). If "no-tls" is selected then all of tls1,
402                    tls1_1 and tls1_2 are disabled. Similarly "no-dtls" will
403                    disable dtls1 and dtls1_2. The "no-ssl" option is synonymous
404                    with "no-ssl3". Note this only affects version negotiation.
405                    OpenSSL will still provide the methods for applications to
406                    explicitly select the individual protocol versions.
407
408   no-<prot>-method
409                    As for no-<prot> but in addition do not build the methods for
410                    applications to explicitly select individual protocol
411                    versions.
412
413   enable-<alg>
414                    Build with support for the specified algorithm, where <alg>
415                    is one of: md2 or rc5.
416
417   no-<alg>
418                    Build without support for the specified algorithm, where
419                    <alg> is one of: bf, blake2, camellia, cast, chacha, cmac,
420                    des, dh, dsa, ecdh, ecdsa, idea, md4, md5, mdc2, ocb,
421                    ploy1305, rc2, rc4, rmd160, scrypt, seed or whirlpool. The
422                    "ripemd" algorithm is deprecated and if used is synonymous
423                    with rmd160.
424
425   -Dxxx, -lxxx, -Lxxx, -fxxx, -mXXX, -Kxxx
426                    These system specific options will be passed through to the
427                    compiler to allow you to define preprocessor symbols, specify
428                    additional libraries, library directories or other compiler
429                    options.
430
431
432  Installation in Detail
433  ----------------------
434
435  1a. Configure OpenSSL for your operation system automatically:
436
437      NOTE: This is not available on Windows.
438
439        $ ./config [options]                             # Unix
440
441        or
442
443        $ @config [options]                              ! OpenVMS
444
445      For the remainder of this text, the Unix form will be used in all
446      examples, please use the appropriate form for your platform.
447
448      This guesses at your operating system (and compiler, if necessary) and
449      configures OpenSSL based on this guess. Run ./config -t to see
450      if it guessed correctly. If you want to use a different compiler, you
451      are cross-compiling for another platform, or the ./config guess was
452      wrong for other reasons, go to step 1b. Otherwise go to step 2.
453
454      On some systems, you can include debugging information as follows:
455
456        $ ./config -d [options]
457
458  1b. Configure OpenSSL for your operating system manually
459
460      OpenSSL knows about a range of different operating system, hardware and
461      compiler combinations. To see the ones it knows about, run
462
463        $ ./Configure                                    # Unix
464
465        or
466
467        $ perl Configure                                 # All other platforms
468
469      For the remainder of this text, the Unix form will be used in all
470      examples, please use the appropriate form for your platform.
471
472      Pick a suitable name from the list that matches your system. For most
473      operating systems there is a choice between using "cc" or "gcc".  When
474      you have identified your system (and if necessary compiler) use this name
475      as the argument to Configure. For example, a "linux-elf" user would
476      run:
477
478        $ ./Configure linux-elf [options]
479
480      If your system isn't listed, you will have to create a configuration
481      file named Configurations/{something}.conf and add the correct
482      configuration for your system. See the available configs as examples
483      and read Configurations/README and Configurations/README.design for
484      more information.
485
486      The generic configurations "cc" or "gcc" should usually work on 32 bit
487      Unix-like systems.
488
489      Configure creates a build file ("Makefile" on Unix, "makefile" on Windows
490      and "descrip.mms" on OpenVMS) from a suitable template in Configurations,
491      and defines various macros in include/openssl/opensslconf.h (generated from
492      include/openssl/opensslconf.h.in).
493
494  1c. Configure OpenSSL for building outside of the source tree.
495
496      OpenSSL can be configured to build in a build directory separate from
497      the directory with the source code.  It's done by placing yourself in
498      some other directory and invoking the configuration commands from
499      there.
500
501      Unix example:
502
503        $ mkdir /var/tmp/openssl-build
504        $ cd /var/tmp/openssl-build
505        $ /PATH/TO/OPENSSL/SOURCE/config [options]
506
507        or
508
509        $ /PATH/TO/OPENSSL/SOURCE/Configure [target] [options]
510
511      OpenVMS example:
512
513        $ set default sys$login:
514        $ create/dir [.tmp.openssl-build]
515        $ set default [.tmp.openssl-build]
516        $ @[PATH.TO.OPENSSL.SOURCE]config {options}
517
518        or
519
520        $ @[PATH.TO.OPENSSL.SOURCE]Configure {target} {options}
521
522      Windows example:
523
524        $ C:
525        $ mkdir \temp-openssl
526        $ cd \temp-openssl
527        $ perl d:\PATH\TO\OPENSSL\SOURCE\Configure {target} {options}
528
529      Paths can be relative just as well as absolute.  Configure will
530      do its best to translate them to relative paths whenever possible.
531
532   2. Build OpenSSL by running:
533
534        $ make                                           # Unix
535        $ mms                                            ! (or mmk) OpenVMS
536        $ nmake                                          # Windows
537
538      This will build the OpenSSL libraries (libcrypto.a and libssl.a on
539      Unix, corresponding on other platforms) and the OpenSSL binary
540      ("openssl"). The libraries will be built in the top-level directory,
541      and the binary will be in the "apps" subdirectory.
542
543      If the build fails, look at the output.  There may be reasons for
544      the failure that aren't problems in OpenSSL itself (like missing
545      standard headers).  If you are having problems you can get help by
546      sending an email to the openssl-users email list (see
547      https://www.openssl.org/community/mailinglists.html for details). If it
548      is a bug with OpenSSL itself, please report the problem to
549      <rt@openssl.org> (note that your message will be recorded in the request
550      tracker publicly readable at
551      https://www.openssl.org/community/index.html#bugs and will be
552      forwarded to a public mailing list). Please check out the request
553      tracker. Maybe the bug was already reported or has already been
554      fixed.
555
556      [If you encounter assembler error messages, try the "no-asm"
557      configuration option as an immediate fix.]
558
559      Compiling parts of OpenSSL with gcc and others with the system
560      compiler will result in unresolved symbols on some systems.
561
562   3. After a successful build, the libraries should be tested. Run:
563
564        $ make test                                      # Unix
565        $ mms test                                       ! OpenVMS
566        $ nmake test                                     # Windows
567
568      NOTE: you MUST run the tests from an unprivileged account (or
569      disable your privileges temporarily if your platform allows it).
570
571      If some tests fail, look at the output.  There may be reasons for
572      the failure that isn't a problem in OpenSSL itself (like a
573      malfunction with Perl).  You may want increased verbosity, that
574      can be accomplished like this:
575
576        $ make VERBOSE=1 test                            # Unix
577
578        $ mms /macro=(VERBOSE=1) test                    ! OpenVMS
579
580        $ nmake VERBOSE=1 test                           # Windows
581
582      If you want to run just one or a few specific tests, you can use
583      the make variable TESTS to specify them, like this:
584
585        $ make TESTS='test_rsa test_dsa' test            # Unix
586        $ mms/macro="TESTS=test_rsa test_dsa" test       ! OpenVMS
587        $ nmake TESTS='test_rsa test_dsa' test           # Windows
588
589      And of course, you can combine (Unix example shown):
590        
591        $ make VERBOSE=1 TESTS='test_rsa test_dsa' test
592
593      You can find the list of available tests like this:
594
595        $ make list-tests                                # Unix
596        $ mms list-tests                                 ! OpenVMS
597        $ nmake list-tests                               # Windows
598
599      Have a look at the manual for the perl module Test::Harness to
600      see what other HARNESS_* variables there are.
601
602      If you find a problem with OpenSSL itself, try removing any
603      compiler optimization flags from the CFLAGS line in Makefile and
604      run "make clean; make" or corresponding.
605
606      Please send bug reports to <rt@openssl.org>.
607
608   4. If everything tests ok, install OpenSSL with
609
610        $ make install                                   # Unix
611        $ mms install                                    ! OpenVMS
612        $ nmake install                                  # Windows
613
614      This will install all the software components in this directory
615      tree under PREFIX (the directory given with --prefix or its
616      default):
617
618        Unix:
619
620          bin/           Contains the openssl binary and a few other
621                         utility scripts.
622          include/openssl
623                         Contains the header files needed if you want
624                         to build your own programs that use libcrypto
625                         or libssl.
626          lib            Contains the OpenSSL library files.
627          lib/engines    Contains the OpenSSL dynamically loadable engines.
628          share/man/{man1,man3,man5,man7}
629                         Contains the OpenSSL man-pages.
630          share/doc/openssl/html/{man1,man3,man5,man7}
631                         Contains the HTML rendition of the man-pages.
632
633        OpenVMS ('arch' is replaced with the architecture name, "Alpha"
634        or "ia64"):
635
636          [.EXE.'arch']  Contains the openssl binary and a few other
637                         utility scripts.
638          [.include.openssl]
639                         Contains the header files needed if you want
640                         to build your own programs that use libcrypto
641                         or libssl.
642          [.LIB.'arch']  Contains the OpenSSL library files.
643          [.ENGINES.'arch']
644                         Contains the OpenSSL dynamically loadable engines.
645          [.SYS$STARTUP] Contains startup, login and shutdown scripts.
646                         These define appropriate logical names and
647                         command symbols.
648                         
649
650      Additionally, install will add the following directories under
651      OPENSSLDIR (the directory given with --openssldir or its default)
652      for you convenience:
653
654          certs          Initially empty, this is the default location
655                         for certificate files.
656          private        Initially empty, this is the default location
657                         for private key files.
658          misc           Various scripts.
659
660      Package builders who want to configure the library for standard
661      locations, but have the package installed somewhere else so that
662      it can easily be packaged, can use
663
664        $ make DESTDIR=/tmp/package-root install         # Unix
665        $ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS
666
667      The specified destination directory will be prepended to all
668      installation target paths.
669
670   Compatibility issues with previous OpenSSL versions:
671
672   *  COMPILING existing applications
673
674      OpenSSL 1.1.0 hides a number of structures that were previously
675      open.  This includes all internal libssl structures and a number
676      of EVP types.  Accessor functions have been added to allow
677      controlled access to the structures' data.
678
679      This means that some software needs to be rewritten to adapt to
680      the new ways of doing things.  This often amounts to allocating
681      an instance of a structure explicitly where you could previously
682      allocate them on the stack as automatic variables, and using the
683      provided accessor functions where you would previously access a
684      structure's field directly.
685
686      Some APIs have changed as well.  However, older APIs have been
687      preserved when possible.
688
689  Environment Variables
690  ---------------------
691
692  A number of environment variables can be used to provide additional control
693  over the build process. Typically these should be defined prior to running
694  config or Configure. Not all environment variables are relevant to all
695  platforms.
696
697  AR
698                 The name of the ar executable to use.
699
700  CC
701                 The compiler to use. Configure will attempt to pick a default
702                 compiler for your platform but this choice can be overridden
703                 using this variable. Set it to the compiler executable you wish
704                 to use, e.g. "gcc" or "clang".
705
706  CROSS_COMPILE
707                 This environment variable has the same meaning as for the
708                 "--cross-compile-prefix" Configure flag described above. If both
709                 are set then the Configure flag takes precedence.
710
711  NM
712                 The name of the nm executable to use.
713
714  OPENSSL_LOCAL_CONFIG_DIR
715                 OpenSSL comes with a database of information about how it
716                 should be built on different platforms. This information is
717                 held in ".conf" files in the Configurations directory. See the
718                 file Configurations/README for further information about the
719                 format of ".conf" files. As well as the standard ".conf" files
720                 it is possible to create your own ".conf" files and store them
721                 locally, outside the OpenSSL source tree. This environment
722                 variable can be set to the directory where these files are held.
723
724  PERL
725                 The name of the Perl executable to use when building OpenSSL.
726
727  HASHBANGPERL
728                 The command string for the Perl executable to insert in the
729                 #! line of perl scripts that will be publically installed.
730                 Default: /usr/bin/env perl
731                 Note: the value of this variable is added to the same scripts
732                 on all platforms, but it's only relevant on Unix-like platforms.
733
734  RC
735                 The name of the rc executable to use. The default will be as
736                 defined for the target platform in the ".conf" file. If not
737                 defined then "windres" will be used. The WINDRES environment
738                 variable is synonymous to this. If both are defined then RC
739                 takes precedence.
740
741  RANLIB
742                 The name of the ranlib executable to use.
743
744  WINDRES
745                 See RC.
746
747  Makefile targets
748  ----------------
749
750  The Configure script generates a Makefile in a format relevant to the specific
751  platform. The Makefiles provide a number of targets that can be used. Not all
752  targets may be available on all platforms. Only the most common targets are
753  described here. Examine the Makefiles themselves for the full list.
754
755  all
756                 The default target to build all the software components.
757
758  clean
759                 Remove all build artefacts and return the directory to a "clean"
760                 state.
761
762  depend
763                 Rebuild the dependencies in the Makefiles. This is a legacy
764                 option that no longer needs to be used in OpenSSL 1.1.0.
765
766  install
767                 Install all OpenSSL components.
768
769  install_sw
770                 Only install the OpenSSL software components.
771
772  install_docs
773                 Only install the OpenSSL documentation components.
774
775  install_man_docs
776                 Only install the OpenSSL man pages (Unix only).
777
778  install_html_docs
779                 Only install the OpenSSL html documentation.
780
781  list-tests
782                 Prints a list of all the self test names.
783
784  test
785                 Build and run the OpenSSL self tests.
786
787  uninstall
788                 Uninstall all OpenSSL components.
789
790  update
791                 This is a developer option. If you are developing a patch for
792                 OpenSSL you may need to use this if you want to update
793                 automatically generated files; add new error codes or add new
794                 (or change the visibility of) public API functions. (Unix only).
795
796  Note on multi-threading
797  -----------------------
798
799  For some systems, the OpenSSL Configure script knows what compiler options
800  are needed to generate a library that is suitable for multi-threaded
801  applications.  On these systems, support for multi-threading is enabled
802  by default; use the "no-threads" option to disable (this should never be
803  necessary).
804
805  On other systems, to enable support for multi-threading, you will have
806  to specify at least two options: "threads", and a system-dependent option.
807  (The latter is "-D_REENTRANT" on various systems.)  The default in this
808  case, obviously, is not to include support for multi-threading (but
809  you can still use "no-threads" to suppress an annoying warning message
810  from the Configure script.)
811
812  OpenSSL provides built-in support for two threading models: pthreads (found on
813  most UNIX/Linux systems), and Windows threads. No other threading models are
814  supported. If your platform does not provide pthreads or Windows threads then
815  you should Configure with the "no-threads" option.
816
817  Note on shared libraries
818  ------------------------
819
820  For most systems the OpenSSL Configure script knows what is needed to
821  build shared libraries for libcrypto and libssl. On these systems
822  the shared libraries will be created by default. This can be suppressed and
823  only static libraries created by using the "no-shared" option. On systems
824  where OpenSSL does not know how to build shared libraries the "no-shared"
825  option will be forced and only static libraries will be created.
826
827  Note on random number generation
828  --------------------------------
829
830  Availability of cryptographically secure random numbers is required for
831  secret key generation. OpenSSL provides several options to seed the
832  internal PRNG. If not properly seeded, the internal PRNG will refuse
833  to deliver random bytes and a "PRNG not seeded error" will occur.
834  On systems without /dev/urandom (or similar) device, it may be necessary
835  to install additional support software to obtain a random seed.
836  Please check out the manual pages for RAND_add(), RAND_bytes(), RAND_egd(),
837  and the FAQ for more information.
838