From 2c08fdb93ca7241f534df3a1c157f948e4e013ec Mon Sep 17 00:00:00 2001 From: Tom Finegan Date: Thu, 26 Apr 2018 13:47:33 -0700 Subject: [PATCH] Add Android arm toolchains files. --- README.md | 26 +++++++++++++++++++ .../arm64-android-clang-libstdc++.cmake | 18 +++++++++++++ .../armv7-android-clang-libstdc++.cmake | 18 +++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 cmake/toolchains/arm64-android-clang-libstdc++.cmake create mode 100644 cmake/toolchains/armv7-android-clang-libstdc++.cmake diff --git a/README.md b/README.md index 83e382c..340a069 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ _**Contents**_ * [Googletest Integration](#googletest-integration) * [Javascript Encoder/Decoder](#javascript-encoderdecoder) * [Android Studio Project Integration](#android-studio-project-integration) + * [Native Android Builds](#native-android-builds) * [Usage](#usage) * [Command Line Applications](#command-line-applications) * [Encoding Tool](#encoding-tool) @@ -310,6 +311,31 @@ To add Draco to your project: } } +Native Android Builds +--------------------- + +It's sometimes useful to build Draco command line tools and run them directly on +Android devices via adb. + +~~~~~ bash +# arm +$ cmake path/to/draco -DCMAKE_TOOLCHAIN_FILE=path/to/draco/cmake/toolchains/armv7-android-clang-libstdc++.cmake +$ make + +# arm64 +$ cmake path/to/draco -DCMAKE_TOOLCHAIN_FILE=path/to/draco/cmake/toolchains/arm64-android-clang-libstdc++.cmake +$ make +~~~~~ + +Note: The above assumes that make_standalone_toolchain.py has been used to +generate a standalone NDK toolchain for arm or arm64. In addition, Draco, as of +this writing, requires that libc++ is used for the stl argument when the +toolchain is generated. + +After building the tools they can be moved to an android device via the use of +`adb push`, and then run with an `adb shell` instance. + + Usage ====== diff --git a/cmake/toolchains/arm64-android-clang-libstdc++.cmake b/cmake/toolchains/arm64-android-clang-libstdc++.cmake new file mode 100644 index 0000000..919d271 --- /dev/null +++ b/cmake/toolchains/arm64-android-clang-libstdc++.cmake @@ -0,0 +1,18 @@ +if (NOT DRACO_CMAKE_TOOLCHAINS_ARM64_ANDROID_CLANG_LIBSTDCPP_CMAKE_) +set(DRACO_CMAKE_TOOLCHAINS_ARM64_ANDROID_CLANG_LIBSTDCPP_CMAKE_ 1) + +set(CMAKE_SYSTEM_NAME "Linux") + +if ("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. + set(CROSS aarch64-linux-android-) +endif () + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CMAKE_C_COMPILER ${CROSS}clang) +set(CMAKE_CXX_COMPILER ${CROSS}clang++) +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie -static-libstdc++") +set(AS_EXECUTABLE ${CROSS}as) +set(CMAKE_SYSTEM_PROCESSOR "arm64") + +endif () # DRACO_CMAKE_TOOLCHAINS_ARM64_ANDROID_CLANG_LIBSTDCPP_CMAKE_ diff --git a/cmake/toolchains/armv7-android-clang-libstdc++.cmake b/cmake/toolchains/armv7-android-clang-libstdc++.cmake new file mode 100644 index 0000000..5f8d9bd --- /dev/null +++ b/cmake/toolchains/armv7-android-clang-libstdc++.cmake @@ -0,0 +1,18 @@ +if (NOT DRACO_CMAKE_TOOLCHAINS_ARMV7_ANDROID_CLANG_LIBSTDCPP_CMAKE_) +set(DRACO_CMAKE_TOOLCHAINS_ARMV7_ANDROID_CLANG_LIBSTDCPP_CMAKE_ 1) + +set(CMAKE_SYSTEM_NAME "Linux") + +if ("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. + set(CROSS arm-linux-androideabi-) +endif () + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CMAKE_C_COMPILER ${CROSS}clang) +set(CMAKE_CXX_COMPILER ${CROSS}clang++) +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie -static-libstdc++") +set(AS_EXECUTABLE ${CROSS}as) +set(CMAKE_SYSTEM_PROCESSOR "armv7") + +endif () # DRACO_CMAKE_TOOLCHAINS_ARMV7_ANDROID_CLANG_LIBSTDCPP_CMAKE_