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