summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/DynamicLibrary.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2012-02-22 17:06:42 +0100
committerJose <jose@zeroc.com>2012-02-22 17:06:42 +0100
commitb462100d19a7afbdddee50300343dfa99604afa8 (patch)
tree64182254db8f6d0bb5a211ff49f95923c766a522 /cpp/src/Ice/DynamicLibrary.cpp
parentICE-4753 - Remove StaticMutex & RWRecMutex (diff)
downloadice-b462100d19a7afbdddee50300343dfa99604afa8.tar.bz2
ice-b462100d19a7afbdddee50300343dfa99604afa8.tar.xz
ice-b462100d19a7afbdddee50300343dfa99604afa8.zip
ICE-4798 - OSX DynamicLibrary fallback to .so/.bundle if .dylib fails
Diffstat (limited to 'cpp/src/Ice/DynamicLibrary.cpp')
-rw-r--r--cpp/src/Ice/DynamicLibrary.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/cpp/src/Ice/DynamicLibrary.cpp b/cpp/src/Ice/DynamicLibrary.cpp
index 7cefbcebeea..314fc71f9ff 100644
--- a/cpp/src/Ice/DynamicLibrary.cpp
+++ b/cpp/src/Ice/DynamicLibrary.cpp
@@ -119,7 +119,6 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc
{
lib += "." + version;
}
- lib += ".dylib";
#elif defined(__hpux)
lib = "lib" + libName;
if(!version.empty())
@@ -145,10 +144,31 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc
}
#endif
+#ifdef __APPLE__
+ //
+ // On OS X fallback to .so and .bundle extensions if the default
+ // .dylib fails.
+ //
+ if(!load(lib + ".dylib"))
+ {
+ string errMsg = _err;
+ if(!load(lib + ".so"))
+ {
+ errMsg += "; " + _err;
+ if(!load(lib + ".bundle"))
+ {
+ _err = errMsg + "; " + _err;
+ return 0;
+ }
+ }
+ _err = "";
+ }
+#else
if(!load(lib))
{
return 0;
}
+#endif
return getSymbol(funcName);
}