2015-01-23 23:13:17 +00:00
|
|
|
Build Prerequisites:
|
2014-06-20 20:00:00 +01:00
|
|
|
|
2015-01-23 23:13:17 +00:00
|
|
|
* CMake[1] 2.8.8 or later is required.
|
|
|
|
|
|
|
|
* Perl 5.6.1 or later is required. On Windows, Strawberry Perl and MSYS Perl
|
2015-02-23 18:06:19 +00:00
|
|
|
have both been reported to work. If not found by CMake, it may be configured
|
|
|
|
explicitly by setting PERL_EXECUTABLE.
|
2015-01-23 23:13:17 +00:00
|
|
|
|
|
|
|
* On Windows you currently must use Ninja[2] 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[3] is required (Python 2.7.5 works).
|
|
|
|
|
2015-02-23 18:06:19 +00:00
|
|
|
* On Windows only, Yasm[4] is required. If not found by CMake, it may be
|
|
|
|
configured explicitly by setting CMAKE_ASM_NASM_COMPILER.
|
2015-01-23 23:13:17 +00:00
|
|
|
|
|
|
|
* A C compiler is required. On Windows, MSVC 12 (Visual Studio 2013) or later
|
2015-01-28 07:06:00 +00:00
|
|
|
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.
|
2014-06-20 20:00:00 +01:00
|
|
|
|
2015-03-05 06:19:27 +00:00
|
|
|
* Go[5] is required. If not found by CMake, the go executable may be
|
|
|
|
configured explicitly by setting GO_EXECUTABLE.
|
2015-01-23 23:13:17 +00:00
|
|
|
|
|
|
|
Using Ninja (note the 'N' is capitalized in the cmake invocation):
|
|
|
|
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake -GNinja ..
|
|
|
|
ninja
|
|
|
|
|
|
|
|
Using makefiles (does not work on Windows):
|
|
|
|
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake ..
|
|
|
|
make
|
|
|
|
|
|
|
|
You usually don't need to run cmake again after changing CMakeLists.txt files
|
|
|
|
because the build scripts will detect changes to them and rebuild themselves
|
|
|
|
automatically.
|
|
|
|
|
2015-01-28 05:50:21 +00:00
|
|
|
Note that the default build flags in the top-level CMakeLists.txt are for
|
2015-01-23 23:13:17 +00:00
|
|
|
debugging - optimisation isn't enabled.
|
2014-06-20 20:00:00 +01:00
|
|
|
|
|
|
|
If you want to cross-compile then there are example toolchain files for 32-bit
|
|
|
|
Intel and ARM in util/. Wipe out the build directory, recreate it and run cmake
|
|
|
|
like this:
|
|
|
|
|
2015-01-23 23:13:17 +00:00
|
|
|
cmake -DCMAKE_TOOLCHAIN_FILE=../util/arm-toolchain.cmake -GNinja ..
|
2014-06-20 20:00:00 +01:00
|
|
|
|
2015-01-28 05:50:21 +00:00
|
|
|
If you want to build as a shared library, pass -DBUILD_SHARED_LIBS=1. On
|
|
|
|
Windows, where functions need to be tagged with "dllimport" when coming from a
|
|
|
|
shared library, define BORINGSSL_SHARED_LIBRARY in any code which #includes the
|
|
|
|
BoringSSL headers.
|
2014-07-31 00:02:14 +01:00
|
|
|
|
2015-01-23 23:13:17 +00:00
|
|
|
Known Limitations on Windows:
|
|
|
|
|
|
|
|
* Versions of cmake since 3.0.2 have a bug in its Ninja generator that causes
|
|
|
|
yasm to output warnings "yasm: warning: can open only one input file, only
|
|
|
|
the last file will be processed". These warnings can be safely ignored.
|
|
|
|
The cmake bug is http://www.cmake.org/Bug/view.php?id=15253.
|
|
|
|
|
|
|
|
* cmake can generate Visual Studio projects, but the generated project files
|
|
|
|
don't have steps for assembling the assembly language source files, so they
|
|
|
|
currently cannot be used to build BoringSSL.
|
|
|
|
|
|
|
|
[1] http://www.cmake.org/download/
|
|
|
|
|
|
|
|
[2] https://martine.github.io/ninja/
|
|
|
|
|
|
|
|
[3] https://www.python.org/downloads/
|
|
|
|
|
|
|
|
[4] http://yasm.tortall.net/
|
|
|
|
|
|
|
|
[5] https://golang.org/dl/
|