Skip to content

Commit

Permalink
Support Boost 1.70.0 (moritz-wundke#168)
Browse files Browse the repository at this point in the history
I'll test it later. Maybe.
  • Loading branch information
RGPaul authored and pelya committed May 13, 2019
1 parent ceeaa50 commit b1e2cb3
Show file tree
Hide file tree
Showing 19 changed files with 425 additions and 22 deletions.
37 changes: 19 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
# Boost for Android
Boost for android is a set of tools to compile the main part of the [Boost C++ Libraries](http://www.boost.org/) for the Android platform.

Currently supported boost versions are 1.45.0, 1.48.0, 1.49.0, 1.53.0, 1.54.0, 1.55.0, 1.65.1, 1.66.0, 1.67.0, 1.68.0 and 1.69.0.
Currently supported boost versions are 1.45.0, 1.48.0, 1.49.0, 1.53.0, 1.54.0, 1.55.0, 1.65.1, 1.66.0, 1.67.0, 1.68.0, 1.69.0 and 1.70.0.

x86, mips, and 64-bit architectures are built with Boost 1.65.1 and NDK r16-beta2, this version uses clang toolchain with llvm libc++ STL library.

Other versions of Boost are built only for arm architecture, they are using gcc toolchain and gnustl library.

To compile Boost for Android you may use one of the following NDKs:

| NDK / boost | 1.45 | 1.48 | 1.49 | 1.53 | 1.65 | 1.66 | 1.67 | 1.68 | 1.69 |
| ----------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| r4 customized by [Dmitry Moskalchuk aka CrystaX](http://www.crystax.net/android/ndk.php). | x | | | | | | | | |
| r5 from the [official android repository](http://developer.android.com). | x | | | | | | | | |
| r5 customized by [CrystaX](http://www.crystax.net/android/ndk.php). | x | | | | | | | | |
| r7 customized by [CrystaX](http://www.crystax.net/android/ndk.php). | x | x | x | | | | | | |
| r8 from the [official android repository](http://developer.android.com). | x | x | x | | | | | | |
| r8b from the [official android repository](http://developer.android.com). | | x | x | | | | | | |
| r8c from the [official android repository](http://developer.android.com). | | | x | | | | | | |
| r8d from the [official android repository](http://developer.android.com). | | | x | x | | | | | |
| r8e from the [official android repository](http://developer.android.com). | | | x | x | | | | | |
| r10 from the [official android repository](http://developer.android.com). | | | x | x | | | | | |
| r16 from the [official android repository](http://developer.android.com). | | | | | x | x | x | x | |
| r17b from the [official android repository](http://developer.android.com). | | | | | | | x | x | |
| r18 from the [official android repository](http://developer.android.com). | | | | | | | | x | |
| r18b from the [official android repository](http://developer.android.com). | | | | | | | | x | x |
| r19 from the [official android repository](http://developer.android.com). | | | | | | | | | x |
| NDK / boost | 1.45 | 1.48 | 1.49 | 1.53 | 1.65 | 1.66 | 1.67 | 1.68 | 1.69 | 1.70 |
| ----------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| r4 customized by [Dmitry Moskalchuk aka CrystaX](http://www.crystax.net/android/ndk.php). | x | | | | | | | | | |
| r5 from the [official android repository](http://developer.android.com). | x | | | | | | | | | |
| r5 customized by [CrystaX](http://www.crystax.net/android/ndk.php). | x | | | | | | | | | |
| r7 customized by [CrystaX](http://www.crystax.net/android/ndk.php). | x | x | x | | | | | | | |
| r8 from the [official android repository](http://developer.android.com). | x | x | x | | | | | | | |
| r8b from the [official android repository](http://developer.android.com). | | x | x | | | | | | | |
| r8c from the [official android repository](http://developer.android.com). | | | x | | | | | | | |
| r8d from the [official android repository](http://developer.android.com). | | | x | x | | | | | | |
| r8e from the [official android repository](http://developer.android.com). | | | x | x | | | | | | |
| r10 from the [official android repository](http://developer.android.com). | | | x | x | | | | | | |
| r16 from the [official android repository](http://developer.android.com). | | | | | x | x | x | x | | x |
| r17b from the [official android repository](http://developer.android.com). | | | | | | | x | x | | x |
| r18 from the [official android repository](http://developer.android.com). | | | | | | | | x | | |
| r18b from the [official android repository](http://developer.android.com). | | | | | | | | x | x | x |
| r19 from the [official android repository](http://developer.android.com). | | | | | | | | | x | |
| r19c from the [official android repository](http://developer.android.com). | | | | | | | | | x | x |

For NDK from r4 to r10, GCC with gnustl_static runtime library is used, only ARM architecture is supported.

Expand Down
12 changes: 8 additions & 4 deletions build-android.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,16 @@
# -----------------------

BOOST_VER1=1
BOOST_VER2=69
BOOST_VER2=70
BOOST_VER3=0
register_option "--boost=<version>" boost_version "Boost version to be used, one of {1.69.0, 1.68.0, 1.67.0, 1.66.0, 1.65.1, 1.55.0, 1.54.0, 1.53.0, 1.49.0, 1.48.0, 1.45.0}, default is 1.69.0."
register_option "--boost=<version>" boost_version "Boost version to be used, one of {1.70.0, 1.69.0, 1.68.0, 1.67.0, 1.66.0, 1.65.1, 1.55.0, 1.54.0, 1.53.0, 1.49.0, 1.48.0, 1.45.0}, default is 1.70.0."
boost_version()
{
if [ "$1" = "1.69.0" ]; then
if [ "$1" = "1.70.0" ]; then
BOOST_VER1=1
BOOST_VER2=70
BOOST_VER3=0
elif [ "$1" = "1.69.0" ]; then
BOOST_VER1=1
BOOST_VER2=69
BOOST_VER3=0
Expand Down Expand Up @@ -332,7 +336,7 @@ if [ -z "${ARCHLIST}" ]; then

case "$NDK_RN" in
# NDK 17+: Support for ARMv5 (armeabi), MIPS, and MIPS64 has been removed.
"17.1"|"17.2"|"18.0"|"18.1"|"19.0")
"17.1"|"17.2"|"18.0"|"18.1"|"19.0"|"19.1"|"19.2")
ARCHLIST="arm64-v8a armeabi-v7a x86 x86_64"
;;
*)
Expand Down
10 changes: 10 additions & 0 deletions configs/user-config-boost-1_70_0-arm64-v8a.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/aarch64-linux-android-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>aarch64-none-linux-android
<compileflags>-fpic
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/aarch64-linux-android
<compileflags>-D__ANDROID_API__=21
15 changes: 15 additions & 0 deletions configs/user-config-boost-1_70_0-armeabi-v7a.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/arm-linux-androideabi-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>armv7-none-linux-androideabi15
<compileflags>-march=armv7-a
<compileflags>-mfloat-abi=softfp
<compileflags>-mfpu=vfpv3-d16
<compileflags>-mthumb
<compileflags>-fpic
<compileflags>-fno-integrated-as
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/arm-linux-androideabi
<compileflags>-D__ANDROID_API__=15
15 changes: 15 additions & 0 deletions configs/user-config-boost-1_70_0-armeabi.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/arm-linux-androideabi-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>armv5te-none-linux-androideabi15
<compileflags>-march=armv5te
<compileflags>-mtune=xscale
<compileflags>-msoft-float
<compileflags>-mthumb
<compileflags>-fpic
<compileflags>-fno-integrated-as
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/arm-linux-androideabi
<compileflags>-D__ANDROID_API__=15
26 changes: 26 additions & 0 deletions configs/user-config-boost-1_70_0-common.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

# --------------------------------------------------------------------

using clang : %ARCH%
:
$(AndroidBinariesPath)/clang++
:
<archiver>$(AndroidBinariesPath)/llvm-ar
<compileflags>-fexceptions
<compileflags>-frtti
<compileflags>-ffunction-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-Wno-invalid-command-line-argument
<compileflags>-Wno-unused-command-line-argument
<compileflags>-no-canonical-prefixes
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++/include
<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/llvm-libc++abi/include
<compileflags>-I$(AndroidNDKRoot)/sources/android/support/include
<compileflags>-DANDROID
<compileflags>-Wa,--noexecstack
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-DNDEBUG
<compileflags>-O2
<compileflags>-g
11 changes: 11 additions & 0 deletions configs/user-config-boost-1_70_0-mips.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/mips64el-linux-android-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>mipsel-none-linux-android
<compileflags>-mips32
<compileflags>-fpic
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/mipsel-linux-android
<compileflags>-D__ANDROID_API__=15
11 changes: 11 additions & 0 deletions configs/user-config-boost-1_70_0-mips64.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/mips64el-linux-android-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>mips64el-none-linux-android
<compileflags>-fpic
<compileflags>-fintegrated-as
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/mips64el-linux-android
<compileflags>-D__ANDROID_API__=21
11 changes: 11 additions & 0 deletions configs/user-config-boost-1_70_0-x86.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/x86-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>i686-none-linux-android
<compileflags>-fPIC
<compileflags>-mstackrealign
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/i686-linux-android
<compileflags>-D__ANDROID_API__=15
10 changes: 10 additions & 0 deletions configs/user-config-boost-1_70_0-x86_64.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<compileflags>-gcc-toolchain
<compileflags>$(AndroidNDKRoot)/toolchains/x86_64-4.9/prebuilt/${PlatformOS}-x86_64
<compileflags>-target
<compileflags>x86_64-none-linux-android
<compileflags>-fPIC
<compileflags>--sysroot
<compileflags>$(AndroidNDKRoot)/sysroot
<compileflags>-isystem
<compileflags>$(AndroidNDKRoot)/sysroot/usr/include/x86_64-linux-android
<compileflags>-D__ANDROID_API__=21
42 changes: 42 additions & 0 deletions configs/user-config-boost-1_70_0.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Copyright 2003, 2005 Douglas Gregor
# Copyright 2004 John Maddock
# Copyright 2002, 2003, 2004, 2007 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

# This file is used to configure your Boost.Build installation. You can modify
# this file in place, or you can place it in a permanent location so that it
# does not get overwritten should you get a new version of Boost.Build. See:
#
# http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html
#
# for documentation about possible permanent locations.

# This file specifies which toolsets (C++ compilers), libraries, and other
# tools are available. Often, you should be able to just uncomment existing
# example lines and adjust them to taste. The complete list of supported tools,
# and configuration instructions can be found at:
#
# http://boost.org/boost-build2/doc/html/bbv2/reference/tools.html
#

# This file uses Jam language syntax to describe available tools. Mostly,
# there are 'using' lines, that contain the name of the used tools, and
# parameters to pass to those tools -- where paremeters are separated by
# semicolons. Important syntax notes:
#
# - Both ':' and ';' must be separated from other tokens by whitespace
# - The '\' symbol is a quote character, so when specifying Windows paths you
# should use '/' or '\\' instead.
#
# More details about the syntax can be found at:
#
# http://boost.org/boost-build2/doc/html/bbv2/advanced.html#bbv2.advanced.jam_language
#
# ------------------
# Android configurations.
# ------------------

import os ;
local AndroidNDKRoot = [ os.environ AndroidNDKRoot ] ;
local AndroidBinariesPath = [ os.environ AndroidBinariesPath ] ;
1 change: 1 addition & 0 deletions configs/user-config-ndk19-1_70_0-arm64-v8a.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions configs/user-config-ndk19-1_70_0-armeabi-v7a.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<compileflags>-mthumb
21 changes: 21 additions & 0 deletions configs/user-config-ndk19-1_70_0-common.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

# --------------------------------------------------------------------

using clang : %ARCH%
:
$(AndroidCompiler_%ARCH%)
:
<archiver>$(AndroidBinariesPath)/llvm-ar
<compileflags>-fPIC
<compileflags>-ffunction-sections
<compileflags>-fdata-sections
<compileflags>-funwind-tables
<compileflags>-fstack-protector-strong
<compileflags>-no-canonical-prefixes
<compileflags>-Wformat
<compileflags>-Werror=format-security
<compileflags>-frtti
<compileflags>-fexceptions
<compileflags>-DNDEBUG
<compileflags>-g
<compileflags>-Oz
1 change: 1 addition & 0 deletions configs/user-config-ndk19-1_70_0-x86.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions configs/user-config-ndk19-1_70_0-x86_64.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

47 changes: 47 additions & 0 deletions configs/user-config-ndk19-1_70_0.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Copyright 2003, 2005 Douglas Gregor
# Copyright 2004 John Maddock
# Copyright 2002, 2003, 2004, 2007 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

# This file is used to configure your Boost.Build installation. You can modify
# this file in place, or you can place it in a permanent location so that it
# does not get overwritten should you get a new version of Boost.Build. See:
#
# http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html
#
# for documentation about possible permanent locations.

# This file specifies which toolsets (C++ compilers), libraries, and other
# tools are available. Often, you should be able to just uncomment existing
# example lines and adjust them to taste. The complete list of supported tools,
# and configuration instructions can be found at:
#
# http://boost.org/boost-build2/doc/html/bbv2/reference/tools.html
#

# This file uses Jam language syntax to describe available tools. Mostly,
# there are 'using' lines, that contain the name of the used tools, and
# parameters to pass to those tools -- where paremeters are separated by
# semicolons. Important syntax notes:
#
# - Both ':' and ';' must be separated from other tokens by whitespace
# - The '\' symbol is a quote character, so when specifying Windows paths you
# should use '/' or '\\' instead.
#
# More details about the syntax can be found at:
#
# http://boost.org/boost-build2/doc/html/bbv2/advanced.html#bbv2.advanced.jam_language
#
# ------------------
# Android configurations.
# ------------------

import os ;
local AndroidNDKRoot = [ os.environ AndroidNDKRoot ] ;
local AndroidBinariesPath = [ os.environ AndroidBinariesPath ] ;

local AndroidCompiler_arm64v8a = $(AndroidBinariesPath)/aarch64-linux-android21-clang++ ;
local AndroidCompiler_armeabiv7a = $(AndroidBinariesPath)/armv7a-linux-androideabi16-clang++ ;
local AndroidCompiler_x86 = $(AndroidBinariesPath)/i686-linux-android16-clang++ ;
local AndroidCompiler_x8664 = $(AndroidBinariesPath)/x86_64-linux-android21-clang++ ;
Loading

0 comments on commit b1e2cb3

Please sign in to comment.