diff options
author | S.V <svranesevic@users.noreply.github.com> | 2017-03-31 23:10:18 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-03-31 23:10:18 +0200 |
commit | f3d795d8ddd54c7def3e2119cec1abe5c69b43f9 (patch) | |
tree | a63be59c97ee5316b62e7eac452e417beb14923e | |
parent | b9d456fad1e39943502218b3fe065be36810e139 (diff) |
Core/ScriptReloadMgr: Fixed scripts hot swapping on OS X (#19365)
-rw-r--r-- | cmake/macros/ConfigureScripts.cmake | 4 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptReloadMgr.cpp | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/cmake/macros/ConfigureScripts.cmake b/cmake/macros/ConfigureScripts.cmake index f6371a32f96..1658f47e9e2 100644 --- a/cmake/macros/ConfigureScripts.cmake +++ b/cmake/macros/ConfigureScripts.cmake @@ -85,10 +85,12 @@ function(IsDynamicLinkingRequired variable) set(${variable} ${IS_REQUIRED} PARENT_SCOPE) endfunction() -# Stores the native variable name +# Stores the native variable name function(GetNativeSharedLibraryName module variable) if(WIN32) set(${variable} "${module}.dll" PARENT_SCOPE) + elseif(APPLE) + set(${variable} "lib${module}.dylib" PARENT_SCOPE) else() set(${variable} "lib${module}.so" PARENT_SCOPE) endif() diff --git a/src/server/game/Scripting/ScriptReloadMgr.cpp b/src/server/game/Scripting/ScriptReloadMgr.cpp index 9ef0c7681d5..72f935e5cd1 100644 --- a/src/server/game/Scripting/ScriptReloadMgr.cpp +++ b/src/server/game/Scripting/ScriptReloadMgr.cpp @@ -67,6 +67,9 @@ namespace fs = boost::filesystem; #ifdef _WIN32 #include <windows.h> #define HOTSWAP_PLATFORM_REQUIRES_CACHING +#elif __APPLE__ + #include <dlfcn.h> + #define HOTSWAP_PLATFORM_REQUIRES_CACHING #else // Posix #include <dlfcn.h> // #define HOTSWAP_PLATFORM_REQUIRES_CACHING @@ -87,11 +90,13 @@ static char const* GetSharedLibraryPrefix() #endif } -// Returns "dll" on Windows and "so" on posix. +// Returns "dll" on Windows, "dylib" on OS X, and "so" on posix. static char const* GetSharedLibraryExtension() { #ifdef _WIN32 return "dll"; +#elif __APPLE__ + return "dylib"; #else // Posix return "so"; #endif @@ -112,7 +117,7 @@ static fs::path GetDirectoryOfExecutable() if (path.is_absolute()) return path.parent_path(); else - return fs::absolute(path).parent_path(); + return fs::canonical(fs::absolute(path)).parent_path(); } class SharedLibraryUnloader |