You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.7 KiB
131 lines
3.7 KiB
Building Conscrypt
|
|
==================
|
|
|
|
Before you begin, you'll first need to properly configure the [Prerequisites](#Prerequisites) as
|
|
described below.
|
|
|
|
Then to build, run:
|
|
|
|
```bash
|
|
$ ./gradlew build
|
|
```
|
|
|
|
To publish the artifacts to your Maven local repository for use in your own project, run:
|
|
|
|
```bash
|
|
$ ./gradlew publishToMavenLocal
|
|
```
|
|
|
|
Prerequisites
|
|
-------------
|
|
Conscrypt requires that you have __Java__, __BoringSSL__ and the __Android SDK__ configured as
|
|
described below.
|
|
|
|
#### Java
|
|
The build requires that you have the `JAVA_HOME` environment variable pointing to a valid JDK.
|
|
|
|
#### Android SDK
|
|
[Download and install](https://developer.android.com/studio/install.html) the latest Android SDK
|
|
and set the `ANDROID_HOME` environment variable to point to the root of the SDK
|
|
(e.g. `export ANDROID_HOME=/usr/local/me/Android/Sdk`).
|
|
|
|
#### BoringSSL
|
|
Before you can build BoringSSL, you'll first need to set up its
|
|
[prerequisites](https://boringssl.googlesource.com/boringssl/+/HEAD/BUILDING.md#Build-Prerequisites).
|
|
|
|
Once the environment is properly configured, follow the steps below for your platform.
|
|
|
|
##### Download
|
|
Checkout BoringSSL to a directory of your choice and then build as follows:
|
|
|
|
```bash
|
|
git clone https://boringssl.googlesource.com/boringssl
|
|
cd boringssl
|
|
|
|
# Also need to set an environment variable to point to the installation location.
|
|
export BORINGSSL_HOME=$PWD
|
|
```
|
|
|
|
##### Building on Linux/OS-X
|
|
To build in the 64-bit version on a 64-bit machine:
|
|
```bash
|
|
mkdir build64
|
|
cd build64
|
|
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_ASM_FLAGS=-Wa,--noexecstack \
|
|
-GNinja ..
|
|
ninja
|
|
```
|
|
|
|
To make a 32-bit build on a 64-bit machine:
|
|
```base
|
|
mkdir build32
|
|
cd build32
|
|
cmake -DCMAKE_TOOLCHAIN_FILE=../util/32-bit-toolchain.cmake \
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_ASM_FLAGS="-Wa,--noexecstack -m32 -msse2" \
|
|
-GNinja ..
|
|
ninja
|
|
```
|
|
|
|
##### Building on Windows
|
|
This assumes that you have Microsoft Visual Studio 2017 installed along
|
|
with both the Windows 8.1 and 10 SDKs and that your machine is capable of
|
|
compiling 64-bit.
|
|
|
|
Unlike earlier versions, Visual Studio 2017 doesn't appear to set an
|
|
environment variable to simplify building from the command line. The
|
|
instructions below assume the default installation of the community
|
|
edition. To use another edition or a non-standard install path, you'll
|
|
need to modify the paths below as appropriate.
|
|
|
|
To build in 64-bit mode, set up with this command line:
|
|
|
|
```bat
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
|
|
mkdir build64
|
|
cd build64
|
|
```
|
|
|
|
To build in 32-bit mode, set up with this command line:
|
|
|
|
```bat
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
|
|
mkdir build32
|
|
cd build32
|
|
```
|
|
|
|
In either the 64-bit or 32-bit case, run this afterward:
|
|
|
|
```bat
|
|
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE ^
|
|
-DCMAKE_BUILD_TYPE=Release ^
|
|
-DCMAKE_C_FLAGS_RELEASE=/MT ^
|
|
-DCMAKE_CXX_FLAGS_RELEASE=/MT ^
|
|
-GNinja ..
|
|
ninja
|
|
```
|
|
|
|
Running tests on Java 7
|
|
-------------------------
|
|
Conscrypt is built with Java 8+, but targets the Java 7 runtime. To run the tests
|
|
under Java 7 (or any Java runtime), you can specify the `javaExecutable64` property from the command line.
|
|
This will run all tests under `openjdk` and `openjdk-integ-tests` with the specified
|
|
runtime.
|
|
|
|
```bash
|
|
./gradlew check -DjavaExecutable64=${JAVA7_HOME}/bin/java
|
|
```
|
|
|
|
Coverage
|
|
--------
|
|
To see coverage numbers, run the tests and then execute the jacocoTestReport rule
|
|
|
|
```bash
|
|
./gradlew check jacocoTestReport
|
|
```
|
|
|
|
The report will be placed in `openjdk/build/reports/jacoco/test/html/index.html`
|