Clarify build requirements.

The minimum versions are largely bogus, since we do not continuously test them.
Instead, we've been using Abseil's five year guidelines to decide when to rely
on tooling improvements. Document this.

Remove the note on how to build Ninja as that'll just get out of date. For
instance, they appear to support Python 3 when building now.

Explicitly call out that CMake 3.0 will be required next year (released June
2014). 3.0 is the minimum needed to distinguish Clang from AppleClang, without
which version checks on Clang don't work.

Also document that we require a C++11 compiler for more than just tests these
days.

Change-Id: I4e5766934edc1d69f7be01f48e855d400adfb5f2
Reviewed-on: https://boringssl-review.googlesource.com/c/33845
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
David Benjamin 2018-12-21 16:05:09 -06:00 committed by CQ bot account: commit-bot@chromium.org
parent 79c7ec06f6
commit 6f9f4cc443

View File

@ -2,9 +2,18 @@
## Build Prerequisites ## Build Prerequisites
* [CMake](https://cmake.org/download/) 2.8.11 or later is required. The standalone CMake build is primarily intended for developers. If embedding
BoringSSL into another project with a pre-existing build system, see
[INCORPORATING.md](/INCORPORATING.md).
* Perl 5.6.1 or later is required. On Windows, Unless otherwise noted, build tools must at most five years old, matching
[Abseil guidelines](https://abseil.io/about/compatibility). If in doubt, use the
most recent stable version of each tool.
* [CMake](https://cmake.org/download/) 2.8.12 or later is required. Note we
will begin requiring CMake 3.0 in 2019.
* A recent version of Perl is required. On Windows,
[Active State Perl](http://www.activestate.com/activeperl/) has been [Active State Perl](http://www.activestate.com/activeperl/) has been
reported to work, as has MSYS Perl. reported to work, as has MSYS Perl.
[Strawberry Perl](http://strawberryperl.com/) also works but it adds GCC [Strawberry Perl](http://strawberryperl.com/) also works but it adds GCC
@ -13,28 +22,23 @@
If Perl is not found by CMake, it may be configured explicitly by setting If Perl is not found by CMake, it may be configured explicitly by setting
`PERL_EXECUTABLE`. `PERL_EXECUTABLE`.
* On Windows you currently must use [Ninja](https://ninja-build.org/) * Building with [Ninja](https://ninja-build.org/) instead of Make is
to build; on other platforms, it is not required, but recommended, because recommended, because it makes builds faster. On Windows, CMake's Visual
it makes builds faster. Studio generator may also work, but it not tested regularly and requires
recent versions of CMake for assembly support.
* If you need to build Ninja from source, then a recent version of
[Python](https://www.python.org/downloads/) is required (Python 2.7.5 works).
* On Windows only, [NASM](https://www.nasm.us/) is required. If not found * On Windows only, [NASM](https://www.nasm.us/) is required. If not found
by CMake, it may be configured explicitly by setting by CMake, it may be configured explicitly by setting
`CMAKE_ASM_NASM_COMPILER`. `CMAKE_ASM_NASM_COMPILER`.
* A C compiler is required. On Windows, MSVC 14 (Visual Studio 2015) or later * C and C++ compilers with C++11 support are required. On Windows, MSVC 14
with Platform SDK 8.1 or later are supported. Recent versions of GCC (4.8+) (Visual Studio 2015) or later with Platform SDK 8.1 or later are supported.
and Clang should work on non-Windows platforms, and maybe on Windows too. Recent versions of GCC (4.8+) and Clang should work on non-Windows
To build the tests, you also need a C++ compiler with C++11 support. platforms, and maybe on Windows too.
* The most recent stable version of [Go](https://golang.org/dl/) is required. * The most recent stable version of [Go](https://golang.org/dl/) is required.
If not found by CMake, the go executable may be configured explicitly by Note Go is exempt from the five year support window. If not found by CMake,
setting `GO_EXECUTABLE`. the go executable may be configured explicitly by setting `GO_EXECUTABLE`.
* To build the x86 and x86\_64 assembly, your assembler must support AVX2
instructions and MOVBE. If using GNU binutils, you must have 2.22 or later
## Building ## Building