From 517c70d8555eac0fdb5cda1cd60aeb7e8f3c6d0b Mon Sep 17 00:00:00 2001 From: matlabbe Date: Thu, 13 Jul 2017 13:36:34 -0400 Subject: [PATCH] CMake: added ANDROID_PREBUILD option --- CMakeLists.txt | 8 +++ corelib/src/CMakeLists.txt | 2 +- docker/xenial/android/Dockerfile | 12 +++-- docker/xenial/android/install_deps.bash | 53 ++++++++++++-------- docker/xenial/android/setup_android_env.bash | 7 +-- docker/xenial/android/tango/Dockerfile | 2 +- docker/xenial/android/tango/build.bash | 33 ++++++++---- 7 files changed, 76 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa1a1247..127d4784 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,14 @@ IF(APPLE) SET(CMAKE_LIBRARY_PATH "/opt/local/lib;${CMAKE_LIBRARY_PATH}") ENDIF() +####### ANDROID_PREBUILD (early exit if true) ####### +OPTION( ANDROID_PREBUILD "Set to ON to build rtabmap resource build tool (required for android build)" OFF ) +IF(ANDROID_PREBUILD) + MESSAGE("Option ANDROID_PREBUILD is set, only rtabmap resource tool will be built. You can use android toolchain after that.") + ADD_SUBDIRECTORY( utilite ) + return() +ENDIF(ANDROID_PREBUILD) + ####### Build libraries as shared or static ####### OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON ) diff --git a/corelib/src/CMakeLists.txt b/corelib/src/CMakeLists.txt index 90216152..93fcc840 100644 --- a/corelib/src/CMakeLists.txt +++ b/corelib/src/CMakeLists.txt @@ -344,7 +344,7 @@ SET(RESOURCES_HEADERS IF(ANDROID) IF(NOT RTABMAP_RES_TOOL) - find_host_program(RTABMAP_RES_TOOL rtabmap-res_tool) + find_host_program(RTABMAP_RES_TOOL rtabmap-res_tool PATHS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) IF(NOT RTABMAP_RES_TOOL) MESSAGE( FATAL_ERROR "RTABMAP_RES_TOOL is not defined (it is the path to \"rtabmap-res_tool\" application created by a non-Android build)." ) ENDIF(NOT RTABMAP_RES_TOOL) diff --git a/docker/xenial/android/Dockerfile b/docker/xenial/android/Dockerfile index 55ed51ea..cddad9ff 100644 --- a/docker/xenial/android/Dockerfile +++ b/docker/xenial/android/Dockerfile @@ -1,6 +1,12 @@ # Image: introlab3it/rtabmap:android-deps -FROM introlab3it/rtabmap +FROM ubuntu:16.04 + +# Install build dependencies +RUN apt-get update && apt-get install -y \ + git \ + cmake \ + software-properties-common ENV ANDROID_HOME=/opt/android-sdk ENV ANDROID_NATIVE_API_LEVEL=android-19 @@ -11,8 +17,8 @@ WORKDIR /root/ ADD setup_android_env.bash /root/setup_android_env.bash RUN chmod +x setup_android_env.bash -RUN /bin/bash -c "./setup_android_env.bash" +RUN /bin/bash -c "./setup_android_env.bash /opt" ADD install_deps.bash /root/install_deps.bash RUN chmod +x install_deps.bash -RUN /bin/bash -c "./install_deps.bash" +RUN /bin/bash -c "./install_deps.bash /opt/android" diff --git a/docker/xenial/android/install_deps.bash b/docker/xenial/android/install_deps.bash index 1e337ad9..9eddd063 100644 --- a/docker/xenial/android/install_deps.bash +++ b/docker/xenial/android/install_deps.bash @@ -1,5 +1,18 @@ #!/bin/bash +if [ $# -ne 1 ]; then + echo "install_deps.bash android_install_prefix # Example: install_deps.bash /opt/android" + exit 1 +fi + +prefix=$1 +pwd=$(pwd) +wget -nv https://github.com/introlab/rtabmap/raw/master/cmake_modules/android.toolchain.cmake + +# Install directory for all dependencies +mkdir -p $prefix/armeabi-v7a +mkdir -p $prefix/arm64-v8a + # Boost echo "wget boost..." wget -nv https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz @@ -9,11 +22,11 @@ wget -nv https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/4 wget -nv https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/e7fbf0e301cfea417a7aa69989a761a4de08b8c3/CMakeLists.txt mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -26,11 +39,11 @@ tar -xzf 3.2.7.tar.gz cd eigen-eigen-b30b87236a1b mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -43,11 +56,11 @@ unzip -qq flann-1.8.4-src.zip cd flann-1.8.4-src mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -62,11 +75,11 @@ wget -nv https://gist.github.com/matlabbe/726b490c658afd3293f4b3f2f501b863/raw/d git apply gtsam_GKlib_android_fix.patch mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -77,11 +90,11 @@ git clone https://github.com/RainerKuemmerle/g2o.git cd g2o mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -100,13 +113,13 @@ cd VTK git checkout tags/v7.1.1 mkdir build cd build -~/cmake-3.7.2-Linux-x86_64/bin/cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DANDROID_ARCH_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +~/cmake-3.7.2-Linux-x86_64/bin/cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DANDROID_ARCH_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make -cp -r CMakeExternals/Install/vtk-android/* /opt/android/armeabi-v7a/. +cp -r CMakeExternals/Install/vtk-android/* $prefix/armeabi-v7a/. rm -r * -~/cmake-3.7.2-Linux-x86_64/bin/cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DANDROID_ARCH_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +~/cmake-3.7.2-Linux-x86_64/bin/cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DANDROID_ARCH_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make -cp -r CMakeExternals/Install/vtk-android/* /opt/android/arm64-v8a/. +cp -r CMakeExternals/Install/vtk-android/* $prefix/arm64-v8a/. cd rm -r VTK cmake-3.7.2-Linux-x86_64 @@ -120,14 +133,14 @@ git apply pcl_1_8_0_vtk_android_support.patch mkdir build cd build # do it 2 times because there is a cmake error on the first time and not the second time!? -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * # do it 2 times because there is a cmake error on the first time and not the second time!? -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd @@ -143,11 +156,11 @@ cd opencv git checkout tags/3.2.0 mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DOPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DOPENCV_EXTRA_MODULES_PATH=$pwd/opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a .. make make install rm -r * -cmake -DCMAKE_TOOLCHAIN_FILE=/root/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DOPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a .. +cmake -DCMAKE_TOOLCHAIN_FILE=$pwd/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DOPENCV_EXTRA_MODULES_PATH=$pwd/opencv_contrib/modules -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a .. make make install cd diff --git a/docker/xenial/android/setup_android_env.bash b/docker/xenial/android/setup_android_env.bash index 794afaec..dedad170 100644 --- a/docker/xenial/android/setup_android_env.bash +++ b/docker/xenial/android/setup_android_env.bash @@ -22,9 +22,4 @@ echo "wget android-ndk..." wget -nv https://dl.google.com/android/repository/android-ndk-r14-linux-x86_64.zip unzip -qq android-ndk-r14-linux-x86_64.zip rm android-ndk-r14-linux-x86_64.zip -mv android-ndk-r14 /opt/. - -# Install directory for all dependencies -mkdir -p /opt/android/armeabi-v7a -mkdir -p /opt/android/arm64-v8a -wget -nv https://github.com/introlab/rtabmap/raw/master/cmake_modules/android.toolchain.cmake \ No newline at end of file +mv android-ndk-r14 $ANDROID_NDK diff --git a/docker/xenial/android/tango/Dockerfile b/docker/xenial/android/tango/Dockerfile index 74ea6fe4..2f25fb1d 100644 --- a/docker/xenial/android/tango/Dockerfile +++ b/docker/xenial/android/tango/Dockerfile @@ -6,6 +6,6 @@ WORKDIR /root/ ADD build.bash /root/build.bash RUN chmod +x build.bash -RUN /bin/bash -c "./build.bash" +RUN /bin/bash -c "./build.bash /opt/android" WORKDIR /root/ diff --git a/docker/xenial/android/tango/build.bash b/docker/xenial/android/tango/build.bash index 4f1817c0..8a07a392 100644 --- a/docker/xenial/android/tango/build.bash +++ b/docker/xenial/android/tango/build.bash @@ -1,5 +1,12 @@ #!/bin/bash +if [ $# -ne 1 ]; then + echo "build.bash android_install_prefix # Example: build.bash /opt/android" + exit 1 +fi + +prefix=$1 + # get rtabmap git clone https://github.com/introlab/rtabmap.git rtabmap-tango @@ -7,33 +14,39 @@ git clone https://github.com/introlab/rtabmap.git rtabmap-tango wget https://developers.google.com/tango/downloads/TangoSDK_Ikariotikos_C.zip unzip -qq TangoSDK_Ikariotikos_C.zip rm TangoSDK_Ikariotikos_C.zip -cp -r lib_tango_client_api/include/* /opt/android/armeabi-v7a/include/. -cp -r lib_tango_client_api/include/* /opt/android/arm64-v8a/include/. -cp -r lib_tango_client_api/lib/armeabi-v7a/* /opt/android/armeabi-v7a/lib/. -cp -r lib_tango_client_api/lib/arm64-v8a/* /opt/android/arm64-v8a/lib/. +cp -r lib_tango_client_api/include/* $prefix/armeabi-v7a/include/. +cp -r lib_tango_client_api/include/* $prefix/arm64-v8a/include/. +cp -r lib_tango_client_api/lib/armeabi-v7a/* $prefix/armeabi-v7a/lib/. +cp -r lib_tango_client_api/lib/arm64-v8a/* $prefix/arm64-v8a/lib/. rm -r lib_tango_client_api wget https://developers.google.com/tango/downloads/TangoSupport_Ikariotikos_C.zip unzip -qq TangoSupport_Ikariotikos_C.zip rm TangoSupport_Ikariotikos_C.zip -cp -r lib_tango_support_api/include/* /opt/android/armeabi-v7a/include/. -cp -r lib_tango_support_api/include/* /opt/android/arm64-v8a/include/. -cp -r lib_tango_support_api/lib/armeabi-v7a/* /opt/android/armeabi-v7a/lib/. -cp -r lib_tango_support_api/lib/arm64-v8a/* /opt/android/arm64-v8a/lib/. +cp -r lib_tango_support_api/include/* $prefix/armeabi-v7a/include/. +cp -r lib_tango_support_api/include/* $prefix/arm64-v8a/include/. +cp -r lib_tango_support_api/lib/armeabi-v7a/* $prefix/armeabi-v7a/lib/. +cp -r lib_tango_support_api/lib/arm64-v8a/* $prefix/arm64-v8a/lib/. cp -r lib_tango_support_api/lib/* rtabmap-tango/app/android/jni/third-party/lib/. rm -r lib_tango_support_api wget https://developers.google.com/tango/downloads/TangoSDK_Ikariotikos_Java.jar mv TangoSDK_Ikariotikos_Java.jar rtabmap-tango/app/android/libs/. +# resource tool +mkdir rtabmap-tango/build +cd rtabmap-tango/build +cmake --DANDROID_PREBUILD=ON .. +make + # rtabmap mkdir rtabmap-tango/build/armeabi-v7a cd rtabmap-tango/build/armeabi-v7a -cmake -DCMAKE_TOOLCHAIN_FILE=../../cmake_modules/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=/opt/android/armeabi-v7a/sdk/native/jni -DCMAKE_INSTALL_PREFIX=/opt/android/armeabi-v7a ../.. +cmake -DCMAKE_TOOLCHAIN_FILE=../../cmake_modules/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$prefix/armeabi-v7a/sdk/native/jni -DCMAKE_INSTALL_PREFIX=$prefix/armeabi-v7a ../.. make cd mkdir rtabmap-tango/build/arm64-v8a cd rtabmap-tango/build/arm64-v8a -cmake -DCMAKE_TOOLCHAIN_FILE=../../cmake_modules/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=/opt/android/arm64-v8a/sdk/native/jni -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a ../.. +cmake -DCMAKE_TOOLCHAIN_FILE=../../cmake_modules/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=$prefix/arm64-v8a/sdk/native/jni -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a ../.. make # package with binaries of both architectures