Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - sensics/Boost-for-Android: Android port of Boost C++ Libraries · GitHub
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Boost for Android

Builds the Boost C++ Libraries for the Android platform, with Google's Ndk.

Tested with Boost 1.65.1 and Google's Ndk 16 (current versions as of Nov 2017)

Crystax is an excellent alternative to Google's Ndk. It ships with prebuilt boost binaries, and dedicated build scripts. These binaries will however not work with Goolge's Ndk. If for some reason you can't or don't want to use Crystax then you can't use their boost binaries or build scripts.

This bash script is based on the Crystax build script but modified so that it will build boost with the Google Ndk.

Works with gcc and clang (llvm) Creates binaries for multiple abis (armeabi-v7a, x86, mips etc).

Tested with a development machine running OpenSuse Tumbleweed Linux.

Usage

  • Download and extract the boost source archive to a directory of the form ..../major.minor.patch eg /home/declan/Documents/zone/mid/lib/boost/1.65.1

    Note: After the extarction ..../boost/1.65.1 should then be the direct parent dir of "bootstrap.sh", "boost-build.jam" etc

> ls /home/declan/Documents/zone/mid/lib/boost/1.65.1
boost boost-build.jam boostcpp.jam boost.css boost.png ....
  • Create a symbolic link llvm-3.5 to llvm in the toolchains subdir of the ndk (This is only necessary if you want to be able to build with clang)

eg

cd path_to_ndk/toolchains
ln -s llvm llvm-3.5
  • You may need to have libncurses.so.5 available on you development machine. Install via your os package manager (eg Yast) if necessary.

  • Modify the paths (where the ndk is) and variables (which abis you want to build for, which compiler to use etc) in doIt.sh, and execute it.

  • Note: If for some reason the build fails you may want to manually clear the /tmp/ndk-your_username dir (which gets cleared automatically after a successful build).

Test App

Also included is test app which can be opened by Android Studio (see ./test-boost). To use the test app make sure to adjust the paths in local.properties (see local.properties_example). Note: The test app uses Gradle Experimental

Header-only Boost Libraries

Many of the boost libraries (eg. algorithm) can be used as "header only" ie do not require compilation . So you may get away with not building boost if you only want to use these. To see which of the libraries do require building you can switch to the dir where you extracted the boost download and call:

> ./bootstrap.sh --show-libraries 

which for example with boost 1.65.1 produces the output:

The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- metaparse
- mpi
- program_options
- python
- random
- regex
- serialization
- signals
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

About

Android port of Boost C++ Libraries

Resources

Stars

1 star

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages