Skip to content

Instantly share code, notes, and snippets.

@alepez
Created October 3, 2017 20:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alepez/5732983d6e4948282d5ee89fee93b10f to your computer and use it in GitHub Desktop.
Save alepez/5732983d6e4948282d5ee89fee93b10f to your computer and use it in GitHub Desktop.
Build boost for android
#!/bin/bash
version=1.65.1
echo "Building boost $version..."
set -eu
toolchain=$PWD/toolchain
if [ ! -d "$toolchain" ]; then
echo "Building toolchain..."
$ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh \
--arch=arm --platform=android-24 \
--install-dir="$toolchain" \
--toolchain=arm-linux-androideabi-clang \
--use-llvm --stl=libc++
else
echo "Toolchain already built"
fi
dir_name=boost_$(sed 's#\.#_#g' <<< $version)
archive=${dir_name}.tar.gz
if [ ! -f "$archive" ]; then
wget -O $archive "http://downloads.sourceforge.net/project/boost/boost/$version/$archive?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F$version%2F&ts=1463606893&use_mirror=jaist"
else
echo "Archive $archive already downloaded"
fi
echo "Extracting..."
if [ ! -d "$dir_name" ]; then
# rm -rf $dir_name
tar xf $archive
else
echo "Archive $archive already unpacked into $dir_name"
fi
cd $dir_name
echo "Generating config..."
user_config=tools/build/src/user-config.jam
rm -f $user_config
cat <<EOF > $user_config
import os ;
using clang : android
:
"$toolchain/bin/clang++"
:
<archiver>$toolchain/bin/arm-linux-androideabi-ar
<ranlib>$toolchain/bin/arm-linux-androideabi-ranlib
;
EOF
echo "Bootstrapping..."
./bootstrap.sh
# --with-coroutine \
# --with-coroutine2 \
echo "Building..."
./b2 -j$( nproc --all ) \
--ignore-site-config \
--with-atomic \
--with-chrono \
--with-container \
--with-date_time \
--with-exception \
--with-fiber \
--with-filesystem \
--with-graph \
--with-graph_parallel \
--with-iostreams \
--with-locale \
--with-log \
--with-math \
--with-metaparse \
--with-mpi \
--with-program_options \
--with-random \
--with-regex \
--with-serialization \
--with-signals \
--with-system \
--with-test \
--with-thread \
--with-timer \
--with-type_erasure \
--with-wave \
toolset=clang-android \
architecture=arm \
variant=release \
--layout=versioned \
target-os=android \
threading=multi \
threadapi=pthread \
link=static \
link=shared \
runtime-link=shared
echo "Running ranlib on libraries..."
libs=$(find "bin.v2/libs/" -name '*.a')
for lib in $libs; do
"$toolchain/bin/arm-linux-androideabi-ranlib" "$lib"
done
echo "Done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment