aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/DynamicBackendUtils.cpp
diff options
context:
space:
mode:
authorRob Hughes <robert.hughes@arm.com>2019-08-23 10:11:58 +0100
committerRob Hughes <robert.hughes@arm.com>2019-08-23 09:16:16 +0000
commit91e1d89ad35ad081a4d5995d541791fbefdb3060 (patch)
tree57022df335b5ccd38aa697394f97d12e6bfd3db5 /src/backends/backendsCommon/DynamicBackendUtils.cpp
parent1cd451cdd818e7df83cf60935abc54345fbc40e6 (diff)
downloadarmnn-91e1d89ad35ad081a4d5995d541791fbefdb3060.tar.gz
Fix Windows build:
* CMake "install" commands require a RUNTIME argument for platforms with DLLs (e.g. Windows). * Replace use of non-standard variable length array with vector * Remove unnecessary #include of unistd.h * Add #ifdefs to dynamic backend code to disable for non-Unix platforms where you can't use dlopen etc. We could implement this properly for Windows later using LoadLibrary etc., but for now erroring is fine. * Add missing #include of <algorithm> Change-Id: Ic8ef5fd599b37bf8772510157b6e479819f6a1eb
Diffstat (limited to 'src/backends/backendsCommon/DynamicBackendUtils.cpp')
-rw-r--r--src/backends/backendsCommon/DynamicBackendUtils.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/DynamicBackendUtils.cpp b/src/backends/backendsCommon/DynamicBackendUtils.cpp
index fc4336f4ac..da7c3244f1 100644
--- a/src/backends/backendsCommon/DynamicBackendUtils.cpp
+++ b/src/backends/backendsCommon/DynamicBackendUtils.cpp
@@ -16,6 +16,7 @@ namespace armnn
void* DynamicBackendUtils::OpenHandle(const std::string& sharedObjectPath)
{
+#if defined(__unix__)
if (sharedObjectPath.empty())
{
throw RuntimeException("OpenHandle error: shared object path must not be empty");
@@ -28,16 +29,23 @@ void* DynamicBackendUtils::OpenHandle(const std::string& sharedObjectPath)
}
return sharedObjectHandle;
+#else
+ throw RuntimeException("Dynamic backends not supported on this platform");
+#endif
}
void DynamicBackendUtils::CloseHandle(const void* sharedObjectHandle)
{
+#if defined(__unix__)
if (!sharedObjectHandle)
{
return;
}
dlclose(const_cast<void*>(sharedObjectHandle));
+#else
+ throw RuntimeException("Dynamic backends not supported on this platform");
+#endif
}
bool DynamicBackendUtils::IsBackendCompatible(const BackendVersion &backendVersion)
@@ -56,6 +64,7 @@ bool DynamicBackendUtils::IsBackendCompatibleImpl(const BackendVersion &backendA
std::string DynamicBackendUtils::GetDlError()
{
+#if defined(__unix__)
const char* errorMessage = dlerror();
if (!errorMessage)
{
@@ -63,6 +72,9 @@ std::string DynamicBackendUtils::GetDlError()
}
return std::string(errorMessage);
+#else
+ throw RuntimeException("Dynamic backends not supported on this platform");
+#endif
}
std::vector<std::string> DynamicBackendUtils::GetBackendPaths(const std::string& overrideBackendPath)