SDL wrangler: Support loading SDL2 libraries of different names
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 13 Jan 2015 19:25:35 +0000 (00:25 +0500)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 13 Jan 2015 19:26:43 +0000 (00:26 +0500)
Seems different distros might have different naming rules, so need
to adopt our code for that.

extern/sdlew/src/sdlew.c

index 6444e6b60812e56cf0fa78a0aa155ea1942db44f..3b19f0cef473f71ad13ebe87f7cbb1c30cd9ba68 100644 (file)
@@ -565,16 +565,20 @@ int sdlewInit(void) {
   /* Library paths. */
 #ifdef _WIN32
   /* Expected in c:/windows/system or similar, no path needed. */
-  const char *path = "SDL2.dll";
+  const char *paths[] = {"SDL2.dll", NULL};
 #elif defined(__APPLE__)
   /* Default installation path. */
-  const char *path = "/usr/local/cuda/lib/libSDL2.dylib";
+  const char *paths[] = {"/usr/local/cuda/lib/libSDL2.dylib", NULL};
 #else
-  const char *path = "libSDL2.so";
+  const char *paths[] = {"libSDL2.so",
+                         "libSDL2-2.0.so.0",
+                         "libSDL.so",
+                         NULL};
 #endif
   static int initialized = 0;
   static int result = 0;
-  int error;
+  int a, error;
+  SDL_version version;
 
   if (initialized) {
     return result;
@@ -589,7 +593,9 @@ int sdlewInit(void) {
   }
 
   /* Load library. */
-  lib = dynamic_library_open(path);
+  for (a = 0; paths[a] != NULL && lib == NULL; ++a) {
+    lib = dynamic_library_open(paths[a]);
+  }
 
   if (lib == NULL) {
     result = SDLEW_ERROR_OPEN_FAILED;
@@ -1089,7 +1095,18 @@ int sdlewInit(void) {
   SDL_LIBRARY_FIND(SDL_HasClipboardText);
   SDL_LIBRARY_FIND(SDL_GetWindowWMInfo);
 
-  result = SDLEW_SUCCESS;
+  if (SDL_GetVersion == NULL) {
+    result = SDLEW_ERROR_VERSION;
+  }
+  else {
+    SDL_GetVersion(&version);
+    if(version.major < 2) {
+      result = SDLEW_ERROR_VERSION;
+    }
+    else {
+      result = SDLEW_SUCCESS;
+    }
+  }
 
   return result;
 }