Add implementation in case plaidml isn't found
authorAnatoliy Talamanov <anatoliy.talamanov@intel.com>
Sun, 21 Jun 2020 21:46:41 +0000 (00:46 +0300)
committerAnatoliy Talamanov <anatoliy.talamanov@intel.com>
Sun, 21 Jun 2020 21:46:41 +0000 (00:46 +0300)
modules/gapi/src/backends/plaidml/gplaidmlcore.cpp
modules/gapi/test/gapi_plaidml_pipelines.cpp

index e81e4b7..c15f84c 100644 (file)
@@ -5,12 +5,14 @@
 // Copyright (C) 2019 Intel Corporation
 
 
-#ifdef HAVE_PLAIDML
-
 #include "precomp.hpp"
 
 #include <opencv2/gapi/core.hpp>
+
 #include <opencv2/gapi/plaidml/core.hpp>
+
+#ifdef HAVE_PLAIDML
+
 #include <opencv2/gapi/plaidml/gplaidmlkernel.hpp>
 
 #include <plaidml2/edsl/edsl.h>
@@ -51,4 +53,12 @@ cv::gapi::GKernelPackage cv::gapi::core::plaidml::kernels()
     return pkg;
 }
 
-#endif // HACE_PLAIDML
+#else // HAVE_PLAIDML
+
+cv::gapi::GKernelPackage cv::gapi::core::plaidml::kernels()
+{
+    // Still provide this symbol to avoid linking issues
+    util::throw_error(std::runtime_error("G-API has been compiled without PlaidML2 support"));
+}
+
+#endif // HAVE_PLAIDML
index a090c99..56306b0 100644 (file)
@@ -5,8 +5,6 @@
 // Copyright (C) 2019 Intel Corporation
 
 
-#ifdef HAVE_PLAIDML
-
 #include "test_precomp.hpp"
 
 #include <stdexcept>
@@ -19,6 +17,8 @@
 namespace opencv_test
 {
 
+#ifdef HAVE_PLAIDML
+
 inline cv::gapi::plaidml::config getConfig()
 {
     auto read_var_from_env = [](const char* env)
@@ -173,6 +173,13 @@ TEST(GAPI_PlaidML_Pipelines, TwoOutputOperations)
     EXPECT_EQ(0, cv::norm(out_mat[1], ref_mat[1]));
 }
 
-} // namespace opencv_test
+#else // HAVE_PLAIDML
+
+TEST(GAPI_PlaidML_Pipelines, ThrowIfPlaidMLNotFound)
+{
+    ASSERT_ANY_THROW(cv::gapi::core::plaidml::kernels());
+}
 
 #endif // HAVE_PLAIDML
+
+} // namespace opencv_test