Replace Schema.s with generated .cpp file
authorRob Hughes <robert.hughes@arm.com>
Fri, 20 Dec 2019 17:43:16 +0000 (17:43 +0000)
committerDerek Lamberti <derek.lamberti@arm.com>
Tue, 31 Dec 2019 09:54:23 +0000 (09:54 +0000)
This removes the dependency on an assembler (which must support .incbin).
Instead we use xxd as a custom build command to generate a .cpp file
which is included in the build.

This makes it possible to build on Windows, for which you need
cp.exe (from GNU Core Utils) and xxd.exe (from Vim).

Change-Id: I3a929640b1fdbfc27e2c38abd05bf3a298245ba5
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
CMakeLists.txt
cmake/GlobalConfig.cmake
src/armnnTfLiteParser/test/ParserFlatbuffersFixture.hpp
src/armnnTfLiteParser/test/Schema.hpp
src/armnnTfLiteParser/test/Schema.s [deleted file]

index 7af6a94..d0f3d7a 100644 (file)
@@ -696,7 +696,6 @@ if(BUILD_UNIT_TESTS)
     endif()
 
     if(BUILD_TF_LITE_PARSER AND ARMNNREF)
-        enable_language(ASM)
         list(APPEND unittest_sources
              src/armnnTfLiteParser/test/Activations.cpp
              src/armnnTfLiteParser/test/Addition.cpp
@@ -738,10 +737,18 @@ if(BUILD_UNIT_TESTS)
              src/armnnTfLiteParser/test/GetTensorIds.cpp
              src/armnnTfLiteParser/test/GetSubgraphInputsOutputs.cpp
              src/armnnTfLiteParser/test/GetInputsOutputs.cpp
-             src/armnnTfLiteParser/test/Schema.s
              )
-        set_source_files_properties(src/armnnTfLiteParser/test/Schema.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")
-
+                
+        # Generate SchemaText.cpp file which contains the TfLite schema text as a 
+        # static C-array of bytes. This is needed at runtime for TfLite parser tests.
+        add_custom_command(
+            OUTPUT  SchemaText.cpp
+            COMMAND cp ${TF_LITE_SCHEMA_INCLUDE_PATH}/schema.fbs g_TfLiteSchemaText
+            COMMAND xxd -i g_TfLiteSchemaText SchemaText.cpp
+            WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+            DEPENDS ${TF_LITE_SCHEMA_INCLUDE_PATH}/schema.fbs 
+        )
+        list(APPEND unittest_sources ${CMAKE_CURRENT_BINARY_DIR}/SchemaText.cpp)
     endif()
 
     if(BUILD_CAFFE_PARSER AND ARMNNREF)
index e8b57d7..4a2c026 100644 (file)
@@ -201,7 +201,6 @@ if(BUILD_TF_LITE_PARSER)
     message(STATUS "Tf Lite generated header found at: ${TF_LITE_SCHEMA_INCLUDE_PATH}")
 
     add_definitions(-DARMNN_TF_LITE_PARSER)
-    add_definitions(-DARMNN_TF_LITE_SCHEMA_PATH="${TF_LITE_SCHEMA_INCLUDE_PATH}/schema.fbs")
 endif()
 
 if(BUILD_ARMNN_SERIALIZER)
index acca01b..797e11e 100644 (file)
@@ -101,7 +101,7 @@ struct ParserFlatbuffersFixture
 
     bool ReadStringToBinary()
     {
-        std::string schemafile(&tflite_schema_start, &tflite_schema_end);
+        std::string schemafile(g_TfLiteSchemaText, g_TfLiteSchemaText + g_TfLiteSchemaText_len);
 
         // parse schema first, so we can use it to parse the data after
         flatbuffers::Parser parser;
index 49ecc0e..2438115 100644 (file)
@@ -3,7 +3,5 @@
 // SPDX-License-Identifier: MIT
 //
 
-extern "C" {
-extern const char tflite_schema_start;
-extern const char tflite_schema_end;
-}
+extern unsigned char g_TfLiteSchemaText[];
+extern unsigned int g_TfLiteSchemaText_len;
diff --git a/src/armnnTfLiteParser/test/Schema.s b/src/armnnTfLiteParser/test/Schema.s
deleted file mode 100644 (file)
index 6e1959b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-.section .rodata
-
-.global tflite_schema_start
-.global tflite_schema_end
-
-tflite_schema_start:
-.incbin ARMNN_TF_LITE_SCHEMA_PATH
-tflite_schema_end: