]> git.ipfire.org Git - thirdparty/openssl.git/blob - INSTALL
Some minor tweaks to the fuzzing docs
[thirdparty/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"):
650
651 [.EXE.'arch'] Contains the openssl binary and a few other
652 utility scripts.
653 [.include.openssl]
654 Contains the header files needed if you want
655 to build your own programs that use libcrypto
656 or libssl.
657 [.LIB.'arch'] Contains the OpenSSL library files.
658 [.ENGINES.'arch']
659 Contains the OpenSSL dynamically loadable engines.
660 [.SYS$STARTUP] Contains startup, login and shutdown scripts.
661 These define appropriate logical names and
662 command symbols.
663
664
665 Additionally, install will add the following directories under
666 OPENSSLDIR (the directory given with --openssldir or its default)
667 for you convenience:
668
669 certs Initially empty, this is the default location
670 for certificate files.
671 private Initially empty, this is the default location
672 for private key files.
673 misc Various scripts.
674
675 Package builders who want to configure the library for standard
676 locations, but have the package installed somewhere else so that
677 it can easily be packaged, can use
678
679 $ make DESTDIR=/tmp/package-root install # Unix
680 $ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS
681
682 The specified destination directory will be prepended to all
683 installation target paths.
684
685 Compatibility issues with previous OpenSSL versions:
686
687 * COMPILING existing applications
688
689 OpenSSL 1.1.0 hides a number of structures that were previously
690 open. This includes all internal libssl structures and a number
691 of EVP types. Accessor functions have been added to allow
692 controlled access to the structures' data.
693
694 This means that some software needs to be rewritten to adapt to
695 the new ways of doing things. This often amounts to allocating
696 an instance of a structure explicitly where you could previously
697 allocate them on the stack as automatic variables, and using the
698 provided accessor functions where you would previously access a
699 structure's field directly.
700
701 Some APIs have changed as well. However, older APIs have been
702 preserved when possible.
703
704 Environment Variables
705 ---------------------
706
707 A number of environment variables can be used to provide additional control
708 over the build process. Typically these should be defined prior to running
709 config or Configure. Not all environment variables are relevant to all
710 platforms.
711
712 AR
713 The name of the ar executable to use.
714
715 CC
716 The compiler to use. Configure will attempt to pick a default
717 compiler for your platform but this choice can be overridden
718 using this variable. Set it to the compiler executable you wish
719 to use, e.g. "gcc" or "clang".
720
721 CROSS_COMPILE
722 This environment variable has the same meaning as for the
723 "--cross-compile-prefix" Configure flag described above. If both
724 are set then the Configure flag takes precedence.
725
726 NM
727 The name of the nm executable to use.
728
729 OPENSSL_LOCAL_CONFIG_DIR
730 OpenSSL comes with a database of information about how it
731 should be built on different platforms. This information is
732 held in ".conf" files in the Configurations directory. See the
733 file Configurations/README for further information about the
734 format of ".conf" files. As well as the standard ".conf" files
735 it is possible to create your own ".conf" files and store them
736 locally, outside the OpenSSL source tree. This environment
737 variable can be set to the directory where these files are held.
738
739 PERL
740 The name of the Perl executable to use when building OpenSSL.
741
742 HASHBANGPERL
743 The command string for the Perl executable to insert in the
744 #! line of perl scripts that will be publically installed.
745 Default: /usr/bin/env perl
746 Note: the value of this variable is added to the same scripts
747 on all platforms, but it's only relevant on Unix-like platforms.
748
749 RC
750 The name of the rc executable to use. The default will be as
751 defined for the target platform in the ".conf" file. If not
752 defined then "windres" will be used. The WINDRES environment
753 variable is synonymous to this. If both are defined then RC
754 takes precedence.
755
756 RANLIB
757 The name of the ranlib executable to use.
758
759 WINDRES
760 See RC.
761
762 Makefile targets
763 ----------------
764
765 The Configure script generates a Makefile in a format relevant to the specific
766 platform. The Makefiles provide a number of targets that can be used. Not all
767 targets may be available on all platforms. Only the most common targets are
768 described here. Examine the Makefiles themselves for the full list.
769
770 all
771 The default target to build all the software components.
772
773 clean
774 Remove all build artefacts and return the directory to a "clean"
775 state.
776
777 depend
778 Rebuild the dependencies in the Makefiles. This is a legacy
779 option that no longer needs to be used in OpenSSL 1.1.0.
780
781 install
782 Install all OpenSSL components.
783
784 install_sw
785 Only install the OpenSSL software components.
786
787 install_docs
788 Only install the OpenSSL documentation components.
789
790 install_man_docs
791 Only install the OpenSSL man pages (Unix only).
792
793 install_html_docs
794 Only install the OpenSSL html documentation.
795
796 list-tests
797 Prints a list of all the self test names.
798
799 test
800 Build and run the OpenSSL self tests.
801
802 uninstall
803 Uninstall all OpenSSL components.
804
805 update
806 This is a developer option. If you are developing a patch for
807 OpenSSL you may need to use this if you want to update
808 automatically generated files; add new error codes or add new
809 (or change the visibility of) public API functions. (Unix only).
810
811 Note on multi-threading
812 -----------------------
813
814 For some systems, the OpenSSL Configure script knows what compiler options
815 are needed to generate a library that is suitable for multi-threaded
816 applications. On these systems, support for multi-threading is enabled
817 by default; use the "no-threads" option to disable (this should never be
818 necessary).
819
820 On other systems, to enable support for multi-threading, you will have
821 to specify at least two options: "threads", and a system-dependent option.
822 (The latter is "-D_REENTRANT" on various systems.) The default in this
823 case, obviously, is not to include support for multi-threading (but
824 you can still use "no-threads" to suppress an annoying warning message
825 from the Configure script.)
826
827 OpenSSL provides built-in support for two threading models: pthreads (found on
828 most UNIX/Linux systems), and Windows threads. No other threading models are
829 supported. If your platform does not provide pthreads or Windows threads then
830 you should Configure with the "no-threads" option.
831
832 Note on shared libraries
833 ------------------------
834
835 For most systems the OpenSSL Configure script knows what is needed to
836 build shared libraries for libcrypto and libssl. On these systems
837 the shared libraries will be created by default. This can be suppressed and
838 only static libraries created by using the "no-shared" option. On systems
839 where OpenSSL does not know how to build shared libraries the "no-shared"
840 option will be forced and only static libraries will be created.
841
842 Note on random number generation
843 --------------------------------
844
845 Availability of cryptographically secure random numbers is required for
846 secret key generation. OpenSSL provides several options to seed the
847 internal PRNG. If not properly seeded, the internal PRNG will refuse
848 to deliver random bytes and a "PRNG not seeded error" will occur.
849 On systems without /dev/urandom (or similar) device, it may be necessary
850 to install additional support software to obtain a random seed.
851 Please check out the manual pages for RAND_add(), RAND_bytes(), RAND_egd(),
852 and the FAQ for more information.
853