Skip to content

Commit

Permalink
[8888] Use ACE for access to script lib
Browse files Browse the repository at this point in the history
* This allow have more portable code and resolve some related portability problems.
* Also make default script library name lowcase at Windows in same way as used for Unix case.

Thanks to XTZGZoReX for Unix side testing :)
  • Loading branch information
VladimirMangos committed Nov 29, 2009
1 parent 941281a commit f98f02b
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 62 deletions.
23 changes: 11 additions & 12 deletions src/framework/Platform/Define.h
Expand Up @@ -22,6 +22,8 @@
#include <sys/types.h>

#include <ace/Basic_Types.h>
#include <ace/Default_Constants.h>
#include <ace/OS_NS_dlfcn.h>
#include <ace/ACE_export.h>

#include "Platform/CompilerDefs.h"
Expand All @@ -37,31 +39,28 @@
# endif //ACE_BYTE_ORDER
#endif //MANGOS_ENDIAN

typedef ACE_SHLIB_HANDLE MANGOS_LIBRARY_HANDLE;

#define MANGOS_SCRIPT_NAME "mangosscript"
#define MANGOS_SCRIPT_SUFFIX ACE_DLL_SUFFIX
#define MANGOS_SCRIPT_PREFIX ACE_DLL_PREFIX
#define MANGOS_LOAD_LIBRARY(libname) ACE_OS::dlopen(libname)
#define MANGOS_CLOSE_LIBRARY(hlib) ACE_OS::dlclose(hlib)
#define MANGOS_GET_PROC_ADDR(hlib,name) ACE_OS::dlsym(hlib,name)

#if PLATFORM == PLATFORM_WINDOWS
# define MANGOS_EXPORT __declspec(dllexport)
# define MANGOS_LIBRARY_HANDLE HMODULE
# define MANGOS_LOAD_LIBRARY(a) LoadLibrary(a)
# define MANGOS_CLOSE_LIBRARY FreeLibrary
# define MANGOS_GET_PROC_ADDR GetProcAddress
# define MANGOS_IMPORT __cdecl
# define MANGOS_SCRIPT_EXT ".dll"
# define MANGOS_SCRIPT_NAME "MaNGOSScript"
# define MANGOS_PATH_MAX MAX_PATH
#else //PLATFORM != PLATFORM_WINDOWS
# define MANGOS_LIBRARY_HANDLE void*
# define MANGOS_EXPORT export
# define MANGOS_LOAD_LIBRARY(a) dlopen(a,RTLD_NOW)
# define MANGOS_CLOSE_LIBRARY dlclose
# define MANGOS_GET_PROC_ADDR dlsym
# if defined(__APPLE_CC__) && defined(BIG_ENDIAN)
# define MANGOS_IMPORT __attribute__ ((longcall))
# elif defined(__x86_64__)
# define MANGOS_IMPORT
# else
# define MANGOS_IMPORT __attribute__ ((cdecl))
# endif //__APPLE_CC__ && BIG_ENDIAN
# define MANGOS_SCRIPT_EXT ".so"
# define MANGOS_SCRIPT_NAME "libmangosscript"
# define MANGOS_PATH_MAX PATH_MAX
#endif //PLATFORM

Expand Down
2 changes: 1 addition & 1 deletion src/game/ScriptCalls.cpp
Expand Up @@ -43,7 +43,7 @@ bool LoadScriptingModule(char const* libName)
ScriptsSet testScript=new _ScriptSet;

std::string name = strlen(libName) ? libName : MANGOS_SCRIPT_NAME;
name += MANGOS_SCRIPT_EXT;
name = MANGOS_SCRIPT_PREFIX + name + MANGOS_SCRIPT_SUFFIX;

testScript->hScriptsLib=MANGOS_LOAD_LIBRARY(name.c_str());

Expand Down
2 changes: 1 addition & 1 deletion src/shared/revision_nr.h
@@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "8887"
#define REVISION_NR "8888"
#endif // __REVISION_NR_H__
32 changes: 16 additions & 16 deletions win/VC100/script.vcxproj
Expand Up @@ -91,32 +91,32 @@
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|X64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|X64'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|X64'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|X64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">..\..\bin\$(Platform)_$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">.\script__$(Platform)_$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">MaNGOSScript</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">mangosscript</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">.dll</TargetExt>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|X64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug_NoPCH|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
Expand Down Expand Up @@ -157,12 +157,12 @@
<AdditionalDependencies>mangosd.lib;zlib.lib;libmySQL.lib;libeay32.lib;ws2_32.lib;winmm.lib;odbc32.lib;odbccp32.lib;aced.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\mangosd__$(Platform)_$(Configuration);.\zlib__$(Platform)_$(Configuration);..\..\dep\lib\$(Platform)_$(Configuration);.\$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)MaNGOSScript.pdb</ProgramDatabaseFile>
<ProgramDatabaseFile>$(OutDir)mangosscript.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand All @@ -188,12 +188,12 @@
<AdditionalDependencies>mangosd.lib;zlib.lib;libmySQL.lib;libeay32.lib;ws2_32.lib;winmm.lib;odbc32.lib;odbccp32.lib;aced.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\mangosd__$(Platform)_$(Configuration);.\zlib__$(Platform)_$(Configuration);..\..\dep\lib\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)MaNGOSScript.pdb</ProgramDatabaseFile>
<ProgramDatabaseFile>$(OutDir)mangosscript.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand All @@ -220,7 +220,7 @@
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand Down Expand Up @@ -250,7 +250,7 @@
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand All @@ -273,12 +273,12 @@
<AdditionalDependencies>mangosd.lib;zlib.lib;libmySQL.lib;libeay32.lib;ws2_32.lib;winmm.lib;odbc32.lib;odbccp32.lib;aced.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\mangosd__$(Platform)_$(Configuration);.\zlib__$(Platform)_$(Configuration);..\..\dep\lib\$(Platform)_debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)MaNGOSScript.pdb</ProgramDatabaseFile>
<ProgramDatabaseFile>$(OutDir)mangosscript.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand All @@ -304,12 +304,12 @@
<AdditionalDependencies>mangosd.lib;zlib.lib;libmySQL.lib;libeay32.lib;ws2_32.lib;winmm.lib;odbc32.lib;odbccp32.lib;aced.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\mangosd__$(Platform)_$(Configuration);.\zlib__$(Platform)_$(Configuration);..\..\dep\lib\$(Platform)_debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)MaNGOSScript.pdb</ProgramDatabaseFile>
<ProgramDatabaseFile>$(OutDir)mangosscript.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>$(IntDir)MaNGOSScript.lib</ImportLibrary>
<ImportLibrary>$(IntDir)mangosscript.lib</ImportLibrary>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
Expand Down
32 changes: 16 additions & 16 deletions win/VC80/script.vcproj
Expand Up @@ -65,13 +65,13 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb"
ProgramDatabaseFile="$(OutDir)\mangosscript.pdb"
SubSystem="2"
ImportLibrary="$(OutDir)\MaNGOSScript.lib"
ImportLibrary="$(OutDir)\mangosscript.lib"
TargetMachine="1"
/>
<Tool
Expand Down Expand Up @@ -147,13 +147,13 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb"
ProgramDatabaseFile="$(OutDir)\mangosscript.pdb"
SubSystem="2"
ImportLibrary="$(OutDir)\MaNGOSScript.lib"
ImportLibrary="$(OutDir)\mangosscript.lib"
TargetMachine="17"
/>
<Tool
Expand Down Expand Up @@ -228,13 +228,13 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb"
ProgramDatabaseFile="$(OutDir)\mangosscript.pdb"
SubSystem="2"
ImportLibrary="$(OutDir)\MaNGOSScript.lib"
ImportLibrary="$(OutDir)\mangosscript.lib"
TargetMachine="1"
/>
<Tool
Expand Down Expand Up @@ -310,13 +310,13 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib aced.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_debug"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)\MaNGOSScript.pdb"
ProgramDatabaseFile="$(OutDir)\mangosscript.pdb"
SubSystem="2"
ImportLibrary="$(OutDir)\MaNGOSScript.lib"
ImportLibrary="$(OutDir)\mangosscript.lib"
TargetMachine="17"
/>
<Tool
Expand Down Expand Up @@ -391,14 +391,14 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/MaNGOSScript.lib"
ImportLibrary="$(OutDir)/mangosscript.lib"
TargetMachine="1"
/>
<Tool
Expand Down Expand Up @@ -474,14 +474,14 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="mangosd.lib zlib.lib libmySQL.lib libeay32.lib ws2_32.lib winmm.lib odbc32.lib odbccp32.lib ace.lib"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\MaNGOSScript.dll"
OutputFile="..\..\bin\$(PlatformName)_$(ConfigurationName)\mangosscript.dll"
LinkIncremental="1"
AdditionalLibraryDirectories=";.\mangosd__$(PlatformName)_$(ConfigurationName);.\zlib__$(PlatformName)_$(ConfigurationName);..\..\dep\lib\$(PlatformName)_$(ConfigurationName)"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(OutDir)/MaNGOSScript.lib"
ImportLibrary="$(OutDir)/mangosscript.lib"
TargetMachine="17"
/>
<Tool
Expand Down

0 comments on commit f98f02b

Please sign in to comment.