diff options
Diffstat (limited to 'src/BUILDING.md')
-rw-r--r-- | src/BUILDING.md | 77 |
1 files changed, 17 insertions, 60 deletions
diff --git a/src/BUILDING.md b/src/BUILDING.md index 7d4eac4..c75851f 100644 --- a/src/BUILDING.md +++ b/src/BUILDING.md @@ -2,40 +2,27 @@ ## Build Prerequisites - * [CMake](http://www.cmake.org/download/) 2.8.8 or later is required. + * [CMake] [1] 2.8.8 or later is required. - * Perl 5.6.1 or later is required. On Windows, - [Strawberry Perl](http://strawberryperl.com/) and MSYS Perl have both been - reported to work. If not found by CMake, it may be configured explicitly by - setting `PERL_EXECUTABLE`. + * Perl 5.6.1 or later is required. On Windows, [Strawberry Perl] [2] and MSYS + Perl have both been reported to work. If not found by CMake, it may be + configured explicitly by setting `PERL_EXECUTABLE`. - * On Windows you currently must use [Ninja](https://martine.github.io/ninja/) - to build; on other platforms, it is not required, but recommended, because - it makes builds faster. + * On Windows you currently must use [Ninja] [3] to build; on other platforms, + it is not required, but recommended, because it makes builds faster. * 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). + [Python] [4] is required (Python 2.7.5 works). - * On Windows only, [Yasm](http://yasm.tortall.net/) is required. If not found - by CMake, it may be configured explicitly by setting - `CMAKE_ASM_NASM_COMPILER`. + * On Windows only, [Yasm] [5] is required. If not found by CMake, it may be + configured explicitly by setting `CMAKE_ASM_NASM_COMPILER`. * 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 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 - executable may be configured explicitly by setting `GO_EXECUTABLE`. - - * If you change crypto/chacha/chacha_vec.c, you will need the - arm-linux-gnueabihf-gcc compiler: - - ``` - $ wget https://releases.linaro.org/14.11/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz - $ echo bc4ca2ced084d2dc12424815a4442e19cb1422db87068830305d90075feb1a3b gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz | sha256sum -c - $ tar xf gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz - $ sudo mv gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf /opt/ - ``` + * [Go] [6] is required. If not found by CMake, the go executable may be + configured explicitly by setting `GO_EXECUTABLE`. ## Building @@ -71,10 +58,6 @@ Windows, where functions need to be tagged with `dllimport` when coming from a shared library, define `BORINGSSL_SHARED_LIBRARY` in any code which `#include`s the BoringSSL headers. -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 -remove some code that is especially large. - ### Building for Android It's possible to build BoringSSL with the Android NDK using CMake. This has @@ -108,36 +91,10 @@ binaries. don't have steps for assembling the assembly language source files, so they currently cannot be used to build BoringSSL. -## Embedded ARM - -ARM, unlike Intel, does not have an instruction that allows applications to -discover the capabilities of the processor. Instead, the capability information -has to be provided by the operating system somehow. - -BoringSSL will try to use `getauxval` to discover the capabilities and, failing -that, will probe for NEON support by executing a NEON instruction and handling -any illegal-instruction signal. But some environments don't support that sort -of thing and, for them, it's possible to configure the CPU capabilities -at compile time. - -If you define `OPENSSL_STATIC_ARMCAP` then you can define any of the following -to enabling the corresponding ARM feature. - - * `OPENSSL_STATIC_ARMCAP_NEON` or `__ARM_NEON__` (note that the latter is set by compilers when NEON support is enabled). - * `OPENSSL_STATIC_ARMCAP_AES` - * `OPENSSL_STATIC_ARMCAP_SHA1` - * `OPENSSL_STATIC_ARMCAP_SHA256` - * `OPENSSL_STATIC_ARMCAP_PMULL` - -Note that if a feature is enabled in this way, but not actually supported at -run-time, BoringSSL will likely crash. - -# Running tests - -There are two sets of tests: the C/C++ tests and the blackbox tests. For former -are built by Ninja and can be run from the top-level directory with `go run -util/all_tests.go`. The latter have to be run separately by running `go test` -from within `ssl/test/runner`. -Both sets of tests may also be run with `ninja -C build run_tests`, but CMake -3.2 or later is required to avoid Ninja's output buffering. + [1]: http://www.cmake.org/download/ + [2]: http://strawberryperl.com/ + [3]: https://martine.github.io/ninja/ + [4]: https://www.python.org/downloads/ + [5]: http://yasm.tortall.net/ + [6]: https://golang.org/dl/ |