Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-08-23 13:23:37 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-08-23 13:23:37 +0300
commitf7322931471a3161ca32dc0ca47fe013d56cf566 (patch)
treeda913b12faf68173630557cd45a77483422d1e40 /extern/clew
parente2f323c3ec2352c11d16a4fb2920184491300166 (diff)
OpenCL: Support multiple ABI libraries on Linux
Solves issue reported in T49144.
Diffstat (limited to 'extern/clew')
-rw-r--r--extern/clew/README.blender2
-rw-r--r--extern/clew/src/clew.c23
2 files changed, 20 insertions, 5 deletions
diff --git a/extern/clew/README.blender b/extern/clew/README.blender
index e500a1bef7d..8355a96db8e 100644
--- a/extern/clew/README.blender
+++ b/extern/clew/README.blender
@@ -1,5 +1,5 @@
Project: OpenCL Wrangler
URL: https://github.com/OpenCLWrangler/clew
License: Apache 2.0
-Upstream version: 277db43
+Upstream version: 309a653
Local modifications: None
diff --git a/extern/clew/src/clew.c b/extern/clew/src/clew.c
index e3adabd829c..3717c74f1a0 100644
--- a/extern/clew/src/clew.c
+++ b/extern/clew/src/clew.c
@@ -137,6 +137,17 @@ PFNCLCREATEFROMGLTEXTURE3D __clewCreateFromGLTexture3D = NULL;
#endif
PFNCLGETGLCONTEXTINFOKHR __clewGetGLContextInfoKHR = NULL;
+static CLEW_DYNLIB_HANDLE dynamic_library_open_find(const char **paths) {
+ int i = 0;
+ while (paths[i] != NULL) {
+ CLEW_DYNLIB_HANDLE lib = CLEW_DYNLIB_OPEN(paths[i]);
+ if (lib != NULL) {
+ return lib;
+ }
+ ++i;
+ }
+ return NULL;
+}
static void clewExit(void)
{
@@ -151,11 +162,15 @@ static void clewExit(void)
int clewInit()
{
#ifdef _WIN32
- const char *path = "OpenCL.dll";
+ const char *paths[] = {"OpenCL.dll", NULL};
#elif defined(__APPLE__)
- const char *path = "/Library/Frameworks/OpenCL.framework/OpenCL";
+ const char *paths[] = {"/Library/Frameworks/OpenCL.framework/OpenCL", NULL};
#else
- const char *path = "libOpenCL.so";
+ const char *paths[] = {"libOpenCL.so",
+ "libOpenCL.so.0",
+ "libOpenCL.so.1",
+ "libOpenCL.so.2",
+ NULL};
#endif
int error = 0;
@@ -167,7 +182,7 @@ int clewInit()
}
// Load library
- module = CLEW_DYNLIB_OPEN(path);
+ module = dynamic_library_open_find(paths);
// Check for errors
if (module == NULL)