Load sibling libraries from the same directory When libEGL and either libGLESv2 or libGLES_CM are in a different folder from the executable's folder, libEGL wasn't successfully finding libGLESv2/libGLES_CM (or vice versa). Since these libraries are generally in the same folder, using the current library's folder as a starting location to find another library solves this issue. Change-Id: Ice9217411de4e269d511549411297b57fc1a4bbb Reviewed-on: https://swiftshader-review.googlesource.com/18548 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.hpp b/src/OpenGL/libGLES_CM/libGLES_CM.hpp index d6740ec..b9c29f5 100644 --- a/src/OpenGL/libGLES_CM/libGLES_CM.hpp +++ b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
@@ -229,10 +229,8 @@ class LibGLES_CM { public: - LibGLES_CM() + LibGLES_CM(const std::string libraryDirectory) : libraryDirectory(libraryDirectory) { - libGLES_CM = nullptr; - libGLES_CMexports = nullptr; } ~LibGLES_CM() @@ -285,7 +283,7 @@ #error "libGLES_CM::loadExports unimplemented for this platform" #endif - libGLES_CM = loadLibrary(libGLES_CM_lib, "libGLES_CM_swiftshader"); + libGLES_CM = loadLibrary(libraryDirectory, libGLES_CM_lib, "libGLES_CM_swiftshader"); if(libGLES_CM) { @@ -297,8 +295,9 @@ return libGLES_CMexports; } - void *libGLES_CM; - LibGLES_CMexports *libGLES_CMexports; + void *libGLES_CM = nullptr; + LibGLES_CMexports *libGLES_CMexports = nullptr; + const std::string libraryDirectory; }; #endif // libGLES_CM_hpp