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