IVGCVSW-6989 "Merged experimental/armnn_shim_sl"

* Updated Serializer CMakeLists.txt to build armnnSerializerObj
* Added constant tensors as input support to SL

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I22f6cf50147d99a01f7fe70d7446b114a4c57af3
diff --git a/shim/sl/canonical/ModelToINetworkTransformer.hpp b/shim/sl/canonical/ModelToINetworkTransformer.hpp
new file mode 100644
index 0000000..d38320c
--- /dev/null
+++ b/shim/sl/canonical/ModelToINetworkTransformer.hpp
@@ -0,0 +1,59 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+//#include "ArmnnDriver.hpp"
+#include "Converter.hpp"
+
+#include <armnn/ArmNN.hpp>
+
+#include <nnapi/IPreparedModel.h>
+#include <nnapi/Result.h>
+#include <nnapi/TypeUtils.h>
+#include <nnapi/Types.h>
+#include <nnapi/Validation.h>
+
+#include <set>
+#include <map>
+#include <vector>
+
+namespace armnn_driver
+{
+
+using namespace android::nn;
+
+// A helper template class performing the conversion from an AndroidNN driver Model representation,
+// to an armnn::INetwork object
+class ModelToINetworkTransformer
+{
+public:
+    ModelToINetworkTransformer(const std::vector<armnn::BackendId>& backends,
+                               const Model& model,
+                               const std::set<unsigned int>& forcedUnsupportedOperations);
+
+    ConversionResult GetConversionResult() const { return m_ConversionResult; }
+
+    // Returns the ArmNN INetwork corresponding to the input model, if preparation went smoothly, nullptr otherwise.
+    armnn::INetwork* GetINetwork() const { return m_Data.m_Network.get(); }
+
+    bool IsOperationSupported(uint32_t operationIndex) const;
+
+private:
+    void Convert();
+
+    // Shared aggregate input/output/internal data
+    ConversionData m_Data;
+
+    // Input data
+    const Model&                  m_Model;
+    const std::set<unsigned int>& m_ForcedUnsupportedOperations;
+
+    // Output data
+    ConversionResult         m_ConversionResult;
+    std::map<uint32_t, bool> m_OperationSupported;
+};
+
+} // armnn_driver