Skip to content

Commit

Permalink
* Introduce Android builds for TensorFlow Lite (discussion #1180)
Browse files Browse the repository at this point in the history
  • Loading branch information
saudet committed May 25, 2022
1 parent b03acc8 commit b0f6270
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 7 deletions.
22 changes: 21 additions & 1 deletion .github/workflows/tensorflow-lite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,26 @@ env:
CI_DEPLOY_PASSWORD: ${{ secrets.CI_DEPLOY_PASSWORD }}
STAGING_REPOSITORY: ${{ secrets.STAGING_REPOSITORY }}
jobs:
android-arm:
runs-on: ubuntu-18.04
container: centos:7
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
android-arm64:
runs-on: ubuntu-18.04
container: centos:7
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
android-x86:
runs-on: ubuntu-18.04
container: centos:7
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
android-x86_64:
runs-on: ubuntu-18.04
container: centos:7
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
linux-arm64:
runs-on: ubuntu-18.04
container: ubuntu:bionic
Expand All @@ -34,7 +54,7 @@ jobs:
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions
redeploy:
needs: [linux-arm64, linux-x86_64, macosx-x86_64, windows-x86_64]
needs: [android-arm, android-arm64, android-x86, android-x86_64, linux-arm64, linux-x86_64, macosx-x86_64, windows-x86_64]
runs-on: ubuntu-18.04
steps:
- uses: bytedeco/javacpp-presets/.github/actions/redeploy@actions
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

* Introduce Android builds for TensorFlow Lite ([discussion #1180](https://github.com/bytedeco/javacpp-presets/discussions/1180))
* Map `std::vector<cv::Ptr<cv::mcc::CChecker> >` for `CCheckerDetector.getListColorChecker()` ([issue bytedeco/javacpp#571](https://github.com/bytedeco/javacpp/issues/571))
* Include missing `opencv2/mcc/ccm.hpp` header file in presets for OpenCV ([discussion bytedeco/javacpp#568](https://github.com/bytedeco/javacpp/discussions/568))
* Fix a few incorrectly mapped instances of `std::unordered_map` for PyTorch ([issue #1164](https://github.com/bytedeco/javacpp-presets/issues/1164))
Expand Down
12 changes: 8 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -778,14 +778,15 @@
<module>leptonica</module>
<module>tesseract</module>
<module>tensorflow</module>
<module>tensorflow-lite</module>
<module>bullet</module>
<module>cpu_features</module>
</modules>
<properties>
<javacpp.platform.nativeOutputPath>${javacpp.platform.library.path}</javacpp.platform.nativeOutputPath>
<javacpp.platform>android-arm</javacpp.platform>
<javacpp.platform.root>${user.home}/Android/android-ndk/</javacpp.platform.root>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/clang++</javacpp.platform.compiler>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/armv7a-linux-androideabi24-clang++</javacpp.platform.compiler>
<javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>
<javacpp.platform.android-arm>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-arm>
<javacpp.platform.android-arm64></javacpp.platform.android-arm64>
Expand Down Expand Up @@ -828,14 +829,15 @@
<module>leptonica</module>
<module>tesseract</module>
<module>tensorflow</module>
<module>tensorflow-lite</module>
<module>bullet</module>
<module>cpu_features</module>
</modules>
<properties>
<javacpp.platform.nativeOutputPath>${javacpp.platform.library.path}</javacpp.platform.nativeOutputPath>
<javacpp.platform>android-arm64</javacpp.platform>
<javacpp.platform.root>${user.home}/Android/android-ndk/</javacpp.platform.root>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/clang++</javacpp.platform.compiler>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/aarch64-linux-android24-clang++</javacpp.platform.compiler>
<javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>
<javacpp.platform.android-arm></javacpp.platform.android-arm>
<javacpp.platform.android-arm64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-arm64>
Expand Down Expand Up @@ -878,14 +880,15 @@
<module>leptonica</module>
<module>tesseract</module>
<module>tensorflow</module>
<module>tensorflow-lite</module>
<module>bullet</module>
<module>cpu_features</module>
</modules>
<properties>
<javacpp.platform.nativeOutputPath>${javacpp.platform.library.path}</javacpp.platform.nativeOutputPath>
<javacpp.platform>android-x86</javacpp.platform>
<javacpp.platform.root>${user.home}/Android/android-ndk/</javacpp.platform.root>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/clang++</javacpp.platform.compiler>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/i686-linux-android24-clang++</javacpp.platform.compiler>
<javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>
<javacpp.platform.android-arm></javacpp.platform.android-arm>
<javacpp.platform.android-arm64></javacpp.platform.android-arm64>
Expand Down Expand Up @@ -928,14 +931,15 @@
<module>leptonica</module>
<module>tesseract</module>
<module>tensorflow</module>
<module>tensorflow-lite</module>
<module>bullet</module>
<module>cpu_features</module>
</modules>
<properties>
<javacpp.platform.nativeOutputPath>${javacpp.platform.library.path}</javacpp.platform.nativeOutputPath>
<javacpp.platform>android-x86_64</javacpp.platform>
<javacpp.platform.root>${user.home}/Android/android-ndk/</javacpp.platform.root>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/clang++</javacpp.platform.compiler>
<javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.kernel}-${os.arch}/bin/x86_64-linux-android24-clang++</javacpp.platform.compiler>
<javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>
<javacpp.platform.android-arm></javacpp.platform.android-arm>
<javacpp.platform.android-arm64></javacpp.platform.android-arm64>
Expand Down
12 changes: 12 additions & 0 deletions tensorflow-lite/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,18 @@ mkdir -p build
cd build

case $PLATFORM in
android-arm)
export CMAKE_FLAGS="-DCMAKE_TOOLCHAIN_FILE=${PLATFORM_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=24 $CMAKE_FLAGS"
;;
android-arm64)
export CMAKE_FLAGS="-DCMAKE_TOOLCHAIN_FILE=${PLATFORM_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=24 $CMAKE_FLAGS"
;;
android-x86)
export CMAKE_FLAGS="-DCMAKE_TOOLCHAIN_FILE=${PLATFORM_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86 -DANDROID_NATIVE_API_LEVEL=24 $CMAKE_FLAGS"
;;
android-x86_64)
export CMAKE_FLAGS="-DCMAKE_TOOLCHAIN_FILE=${PLATFORM_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86_64 -DANDROID_NATIVE_API_LEVEL=24 $CMAKE_FLAGS"
;;
linux-armhf)
export CC="arm-linux-gnueabihf-gcc -funsafe-math-optimizations"
export CXX="arm-linux-gnueabihf-g++ -funsafe-math-optimizations"
Expand Down
28 changes: 28 additions & 0 deletions tensorflow-lite/platform/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,30 @@
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.android-arm}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.android-arm64}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.android-x86}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
<version>${project.version}</version>
<classifier>${javacpp.platform.android-x86_64}</classifier>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${javacpp.moduleId}</artifactId>
Expand Down Expand Up @@ -107,6 +131,10 @@
<file>${project.build.directory}/${project.artifactId}.jar</file>
<moduleInfoSource>
module org.bytedeco.${javacpp.packageName}.platform {
// requires static org.bytedeco.${javacpp.moduleId}.android.arm;
// requires static org.bytedeco.${javacpp.moduleId}.android.arm64;
// requires static org.bytedeco.${javacpp.moduleId}.android.x86;
// requires static org.bytedeco.${javacpp.moduleId}.android.x86_64;
requires static org.bytedeco.${javacpp.packageName}.linux.arm64;
requires static org.bytedeco.${javacpp.packageName}.linux.x86_64;
requires static org.bytedeco.${javacpp.packageName}.macosx.x86_64;
Expand Down
21 changes: 21 additions & 0 deletions tensorflow-lite/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
</preloadPaths>
<compilerOptions>
<compilerOption>@${tensorflow.path}/../build/objs</compilerOption>
<compilerOption>-Wl,--allow-multiple-definition</compilerOption>
</compilerOptions>
</configuration>
</plugin>
Expand All @@ -82,6 +83,26 @@
</build>

<profiles>
<profile>
<id>mac</id>
<activation>
<os><family>mac os x</family></os>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<configuration>
<properties>${javacpp.platform}</properties>
<compilerOptions>
<compilerOption>@${tensorflow.path}/../build/objs</compilerOption>
</compilerOptions>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>msvc</id>
<activation>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Samuel Audet
* Copyright (C) 2021-2022 Samuel Audet
*
* Licensed either under the Apache License, Version 2.0, or (at your option)
* under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -40,7 +40,7 @@
@Properties(
value = {
@Platform(
value = {"linux", "macosx", "windows"},
value = {"android", "linux", "macosx", "windows"},
compiler = "cpp11",
define = "UNIQUE_PTR_NAMESPACE std",
include = {
Expand Down

0 comments on commit b0f6270

Please sign in to comment.