boringssl源码树中的BUILDING.md专门有说如何编译,但它写的是用cmake。我们目的是要用IDE编译,即Windows下的Visual Studio,iOS下的XCode,Android下的NDK。
不管哪平台,编译boringssl需两部分文件,一部分从直接下载的源码包中就能得到,另一部分需要用configure生成。configure生成的又分若干汇编文件和err_data.c,好在至少Windows、iOS、Android,err_data.c内容是一样的。
为此要实现各平台在IDE下编译,终归是要解决两个问题:1)如何得到configure生成的文件,2)如何知道要编译哪些源文件。
一、Windows
需要预安装的应用
- Perl,像activeperl。如果已安装depot_tools,但它自带的Perl版本有可能较老,最好到官网下载最新版本。老版本在把*.py转成汇编时会有问题。
- Go。
- CMake。
编译
运行CMake。
Where is the source code: 设置boringssl的源码树路径,像c:/ddksmaple/boringssl。
Where to build the binaries: 设置要生成的二进制文件存放路径,像c:/ddksmaple/boringssl/output。

单击“Configure”,如果是Visual Studio 2015,选择Visual Studio 14 2015。如果出现不能找到Go,那在Value手动设置go.exe路径。
以上都已成功,单击“Generate”。
至此在指定的“output”目录下就会有BoringSSL.sln,打开它,编译。
一旦编译结束,“output”下就会生成那些扩展名是.asm汇编文件,以及err_data.c。根据生成的*.o,就能得出Windows平台要编译哪些源文件。
[color=red]在windows,额外预定宏OPENSSL_NO_ASM(后面升级时或许可以先去掉,没问题就建议不要定义它)。定义该宏后是不是意味不需要编译那些*.asm了?——还没有确定答案,但至少不能编译bn-586.asm、co-586.asm,否则会出同一个函数有多个实现。[/color]
二、iOS
iOS不需要汇编文件,configure生成的就须要err_data.c,而这文件可直接从Windows复制。
三、Andorid
以下编译是在Mac OS X。
需要预安装的应用
- Go。
- CMake。
- Andorid NDK for Mac OS X。最好用最新版本。
安装好CMake后,双击CMake执行是图形界面,编译boringssl需要在命令行。在图形界面的CMake执行菜单命令,“Tools”---“How to Install For Command Line Use”,会弹出个窗口,告诉你如何把cmake融入命令行。如下图。

运行“终端”,输入类似以下命令就可完成编译。
$ PATH="/Applications/CMake.app/Contents/bin":"$PATH" $ cd boringssl $ mkdir build $ cd build $ cmake -DCMAKE_TOOLCHAIN_FILE=../third_party/android-cmake/android.toolchain.cmake -DANDROID_NDK=/Users/ancientcc/android-ndk-r13b -DANDROID_NATIVE_API_LEVEL=18 -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" .. $ cmake --build .
<boringssl>/third_party/android-cmake/README.md有关于cmake命令中涉及到的几个宏的详细说明,这里再补充几点。
[*]ANDROID_NDK:NDK路径,这个路径建议用绝对路径,相对路径时可能会找不到NDK错误。
[*]ANDROID_NATIVE_API_LEVEL:要使用的API Level。新版boringssl需要用较新版本的NDK,像r10都是不行的,而较新NDK可能已经不支持较低的Level版本,像Level 8,可cmake默认的Level可能就是Level 8,这使得用最新NDK编译时会报找不到Level错。为此要显示定义ANDROID_NATIVE_API_LEVEL。