| 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` |