aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2022-05-20 17:18:50 +0100
committerMike Kelly <mike.kelly@arm.com>2022-05-26 16:19:48 +0100
commita3ba4bef6edfbc5203c0476e20524fc83142a4d4 (patch)
treecfc5d74c7b53d38a5bbbfd004ed1400cc8e393ef
parent3fe3a54c3071dabcbbe2bb44da1aa5a920e6e1f7 (diff)
downloadandroid-nn-driver-a3ba4bef6edfbc5203c0476e20524fc83142a4d4.tar.gz
GitHub #644 fails to build with flatbuffers 2.0.6
* Fixed bug where flatbuffers was downloaded every time setup.sh was run. * setup.sh will attempt to use the version of flatbuffers used by android if one is available. * setup.sh will now generate ArmnnSchema_generated.h where one does not exist !armnn:7625 Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: I62f3be6ebfc7fbef39597295dca194d70294646c
-rw-r--r--Android.bp10
-rw-r--r--Android.mk10
-rwxr-xr-xsetup.sh66
3 files changed, 72 insertions, 14 deletions
diff --git a/Android.bp b/Android.bp
index b8826cbc..f7cdadcf 100644
--- a/Android.bp
+++ b/Android.bp
@@ -11,10 +11,10 @@
cc_defaults {
name: "libflatbuffers-defaults",
proprietary: true,
- export_include_dirs: [ "flatbuffers-1.12.0/",
- "flatbuffers-1.12.0/include",
+ export_include_dirs: [ "flatbuffers/",
+ "flatbuffers/include",
],
- local_include_dirs: ["flatbuffers-1.12.0/include",],
+ local_include_dirs: ["flatbuffers/include",],
cflags: [
"-O3",
"-fexceptions",
@@ -31,8 +31,8 @@ cc_library_static {
name: "libflatbuffers-framework",
defaults: ["libflatbuffers-defaults"],
srcs: [
- "flatbuffers-1.12.0/src/flatc.cpp",
- "flatbuffers-1.12.0/src/flatc_main.cpp",
+ "flatbuffers/src/flatc.cpp",
+ "flatbuffers/src/flatc_main.cpp",
],
}
diff --git a/Android.mk b/Android.mk
index cab4a45f..585d8357 100644
--- a/Android.mk
+++ b/Android.mk
@@ -68,6 +68,7 @@ CPP_VERSION := c++17
endif
# Configure these paths if you move the source or Khronos headers
+ARMNN_GENERATED_HEADER_PATH := $(LOCAL_PATH)/armnn/generated
ARMNN_PROFILING_HEADER_PATH := $(LOCAL_PATH)/armnn/profiling
ARMNN_COMMON_PROFILING_HEADER_PATH := $(LOCAL_PATH)/armnn/profiling/common/include
ARMNN_CLIENT_PROFILING_HEADER_PATH := $(LOCAL_PATH)/armnn/profiling/client/include
@@ -77,7 +78,6 @@ ARMNN_BACKEND_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_MAKEFILE_
ARMNN_BACKEND_MAKEFILE_DIRS := $(subst /backend.mk,,$(ARMNN_BACKEND_MAKEFILE_PATHS))
ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/armnn/third-party
ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils
-ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/armnn/third-party
OPENCL_HEADER_PATH := $(LOCAL_PATH)/clframework/include
NN_HEADER_PATH := $(LOCAL_PATH)/../../../frameworks/ml/nn/runtime/include
ifeq ($(S_OR_LATER),1)
@@ -152,6 +152,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -285,6 +286,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -414,6 +416,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -543,6 +546,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -678,6 +682,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -784,6 +789,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -882,6 +888,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
@@ -976,6 +983,7 @@ LOCAL_PROPRIETARY_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_C_INCLUDES := \
+ $(ARMNN_GENERATED_HEADER_PATH) \
$(ARMNN_THIRD_PARTY_PATH) \
$(ARMNN_PROFILING_HEADER_PATH) \
$(ARMNN_COMMON_PROFILING_HEADER_PATH) \
diff --git a/setup.sh b/setup.sh
index bf444cad..1dc9d8c2 100755
--- a/setup.sh
+++ b/setup.sh
@@ -9,18 +9,59 @@ function AssertZeroExitCode {
fi
}
-if [ ! -d v1.12.0 ]; then
- echo "++ Downloading FlatBuffers"
+BUILD_DIR=build-x86_64
+FLATBUFFERS_DIR=$PWD/flatbuffers
- FLATBUFFERS_PKG=v1.12.0.tar.gz
+function BuildFlatbuffers {
+ pushd flatbuffers
+ rm -rf $BUILD_DIR
+ rm -f CMakeCache.txt
+ FLATBUFFERS_DIR=$PWD
- curl -LOk https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz
- AssertZeroExitCode "Downloading FlatBuffers failed"
+ mkdir -p $BUILD_DIR
+ cd $BUILD_DIR
- tar xzf $FLATBUFFERS_PKG
- AssertZeroExitCode "Unpacking FlatBuffers failed"
+ echo "+++ Building Google Flatbufers"
+ CMD="cmake -DFLATBUFFERS_BUILD_FLATC=1 -DCMAKE_INSTALL_PREFIX:PATH=$FLATBUFFERS_DIR .."
+ # Force -fPIC to allow relocatable linking.
+ CXXFLAGS="-fPIC" $CMD
+ AssertZeroExitCode "cmake Google Flatbuffers failed. command was: ${CMD}"
+ make all install
+ AssertZeroExitCode "Building Google Flatbuffers failed"
+ mkdir -p $FLATBUFFERS_DIR/bin
+ cp -f flatc $FLATBUFFERS_DIR/bin
+ AssertZeroExitCode "Failed to copy the Flatbuffers Compiler"
+ popd
+}
+
+if [ ! -d flatbuffers ]; then
+ # Check if the AOSP has a flatbuffers we can use
+ if [ -d ../../../external/flatbuffers/ ]; then
+ echo "+++ Using AOSP Flatbufers"
+ FLATBUFFERS_DIR=$PWD
+ # Have to make a copy of the AOSP flatbuffers and delete a few files to avoid issues with the android build
+ cp -r ../../../external/flatbuffers/ flatbuffers
+ # Remove Android build files to avoid build issues
+ rm flatbuffers/Android.*
+
+ BuildFlatbuffers
+
+ # If not then download flatbuffers
+ else
+ echo "++ Downloading FlatBuffers v1.12.0"
+
+ FLATBUFFERS_PKG=v1.12.0.tar.gz
+
+ curl -LOk https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz
+ AssertZeroExitCode "Downloading FlatBuffers failed"
+ mkdir -p flatbuffers
+ tar xzf $FLATBUFFERS_PKG -C flatbuffers --strip-components 1
+ AssertZeroExitCode "Unpacking FlatBuffers failed"
- rm -rf $FLATBUFFERS_PKG
+ BuildFlatbuffers
+
+ rm -rf $FLATBUFFERS_PKG
+ fi
fi
if [ ! -d armnn ]; then
@@ -51,3 +92,12 @@ scons os=android build=embed_only neon=0 opencl=1 embed_kernels=1 validation_tes
AssertZeroExitCode "Precompiling clframework failed for v8a."
popd
+if [ ! -d armnn/generated ]; then
+ mkdir -p armnn/generated
+fi
+
+if [ ! -f armnn/generated/ArmnnSchema_generated.h ]; then
+ echo "+++ Generating new ArmnnSchema_generated.h"
+ $FLATBUFFERS_DIR/bin/flatc -o armnn/generated --cpp armnn/src/armnnSerializer/ArmnnSchema.fbs
+ AssertZeroExitCode "Generating ArmnnSchema_generated.h failed."
+fi