From a3ba4bef6edfbc5203c0476e20524fc83142a4d4 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Fri, 20 May 2022 17:18:50 +0100 Subject: 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 Change-Id: I62f3be6ebfc7fbef39597295dca194d70294646c --- Android.bp | 10 +++++----- Android.mk | 10 +++++++++- setup.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 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 -- cgit v1.2.1