Updating BUILDING.md for windows.

Updating the Perl docs to describe behavior of Strawberry Perl and possible
interaction with CMake on Windows.

Also adding a few other links and instructions for using CMake/Ninja to build
release mode with position independent code, since this seems generally useful.

Change-Id: I616c0d267da749fe90673bc9e8bde9ec181fec25
Reviewed-on: https://boringssl-review.googlesource.com/7113
Reviewed-by: David Benjamin <davidben@google.com>
This commit is contained in:
nmittler 2016-02-09 11:25:52 -08:00 committed by David Benjamin
parent 642b0b825e
commit 042e8f721a

View File

@ -5,9 +5,13 @@
* [CMake](https://cmake.org/download/) 2.8.8 or later is required. * [CMake](https://cmake.org/download/) 2.8.8 or later is required.
* Perl 5.6.1 or later is required. On Windows, * Perl 5.6.1 or later is required. On Windows,
[Strawberry Perl](http://strawberryperl.com/) and MSYS Perl have both been [Active State Perl](http://www.activestate.com/activeperl/) has been
reported to work. If not found by CMake, it may be configured explicitly by reported to work, as has MSYS Perl.
setting `PERL_EXECUTABLE`. [Strawberry Perl](http://strawberryperl.com/) also works but it adds GCC
to `PATH`, which can confuse some build tools when identifying the compiler
(removing `C:\Strawberry\c\bin` from `PATH` should resolve any problems).
If Perl is not found by CMake, it may be configured explicitly by setting
`PERL_EXECUTABLE`.
* On Windows you currently must use [Ninja](https://ninja-build.org/) * On Windows you currently must use [Ninja](https://ninja-build.org/)
to build; on other platforms, it is not required, but recommended, because to build; on other platforms, it is not required, but recommended, because
@ -21,8 +25,8 @@
`CMAKE_ASM_NASM_COMPILER`. `CMAKE_ASM_NASM_COMPILER`.
* A C compiler is required. On Windows, MSVC 12 (Visual Studio 2013) or later * A C compiler is required. On Windows, MSVC 12 (Visual Studio 2013) or later
with Platform SDK 8.1 or later are supported. Recent versions of GCC and with Platform SDK 8.1 or later are supported. Recent versions of GCC (4.8+)
Clang should work on non-Windows platforms, and maybe on Windows too. and Clang should work on non-Windows platforms, and maybe on Windows too.
* [Go](https://golang.org/dl/) is required. If not found by CMake, the go * [Go](https://golang.org/dl/) is required. If not found by CMake, the go
executable may be configured explicitly by setting `GO_EXECUTABLE`. executable may be configured explicitly by setting `GO_EXECUTABLE`.
@ -58,7 +62,8 @@ files because the build scripts will detect changes to them and rebuild
themselves automatically. themselves automatically.
Note that the default build flags in the top-level `CMakeLists.txt` are for Note that the default build flags in the top-level `CMakeLists.txt` are for
debugging—optimisation isn't enabled. debugging—optimisation isn't enabled. Pass `-DCMAKE_BUILD_TYPE=Release` to
`cmake` to configure a release build.
If you want to cross-compile then there is an example toolchain file for 32-bit If you want to cross-compile then there is an example toolchain file for 32-bit
Intel in `util/`. Wipe out the build directory, recreate it and run `cmake` like Intel in `util/`. Wipe out the build directory, recreate it and run `cmake` like
@ -75,6 +80,9 @@ In order to serve environments where code-size is important as well as those
where performance is the overriding concern, `OPENSSL_SMALL` can be defined to where performance is the overriding concern, `OPENSSL_SMALL` can be defined to
remove some code that is especially large. remove some code that is especially large.
See [CMake's documentation](https://cmake.org/cmake/help/v3.4/manual/cmake-variables.7.html)
for other variables which may be used to configure the build.
### Building for Android ### Building for Android
It's possible to build BoringSSL with the Android NDK using CMake. This has It's possible to build BoringSSL with the Android NDK using CMake. This has