Added the Lua Proxy DLL.
This builds the lua5.1.dll file on Windows, making it 64-bit if so required.
This commit is contained in:
parent
a1d2c114cf
commit
e96a774f59
@ -64,6 +64,10 @@ add_subdirectory(lib/expat/)
|
|||||||
add_subdirectory(lib/luaexpat/)
|
add_subdirectory(lib/luaexpat/)
|
||||||
add_subdirectory(lib/md5/)
|
add_subdirectory(lib/md5/)
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
add_subdirectory(lib/luaproxy/)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# We use EXCLUDE_FROM_ALL so that only the explicit dependencies are used
|
# We use EXCLUDE_FROM_ALL so that only the explicit dependencies are used
|
||||||
# (PolarSSL also has test and example programs in their CMakeLists.txt, we don't want those)
|
# (PolarSSL also has test and example programs in their CMakeLists.txt, we don't want those)
|
||||||
|
Binary file not shown.
58
lib/luaproxy/CMakeLists.txt
Normal file
58
lib/luaproxy/CMakeLists.txt
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
|
||||||
|
# This project adds a Lua Proxy DLL on Windows
|
||||||
|
# By an unfortunate choice in the popular LuaBinaries distribution, there are two names for the Lua DLL on Windows: lua51.dll and lua5.1.dll.
|
||||||
|
# Some binary Lua packages are built for one, the others for the other. Messy!
|
||||||
|
# In order to support both package flavors, we create a "proxy DLL":
|
||||||
|
# Basically the lua5.1.dll has its PE Exports section manipulated so that it points each exported function to its lua51.dll implementation.
|
||||||
|
# Effectively, this forwards all calls from lua5.1.dll to lua51.dll without any performance costs (the forwarding is done in the Windows PE loader on app start).
|
||||||
|
|
||||||
|
# This project creates the proxy DLL by using a specially crafted .DEF file that is used to link the Proxy DLL.
|
||||||
|
# Note that it has been tested only on MSVC, it might not work with other compilers.
|
||||||
|
# The initial implementation was taken from http://lua-users.org/wiki/LuaProxyDllFour , but adapted to MSVC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
# Tell the linker to use the DEF file to generate the proxy:
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} /NOENTRY /DEF:lua5.1.def /MANIFEST:NO")
|
||||||
|
else()
|
||||||
|
message ("This code has not been tested on your compiler. Please report your success or failure in the forum.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(luaproxy SHARED "lua5.1.def" "Dummy.c")
|
||||||
|
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/MCServer)
|
||||||
|
set_target_properties(luaproxy PROPERTIES
|
||||||
|
OUTPUT_NAME "lua5.1"
|
||||||
|
)
|
||||||
|
target_link_libraries(luaproxy lua)
|
||||||
|
|
||||||
|
# Output the executable into the $/MCServer folder, so that MCServer can find it:
|
||||||
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/MCServer)
|
||||||
|
SET_TARGET_PROPERTIES(luaproxy PROPERTIES
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_DEBUGPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
ARCHIVE_OUTPUT_DIRECTORY_RELEASEPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_DEBUGPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY_RELEASEPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_DEBUGPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY_RELEASEPROFILE ${CMAKE_SOURCE_DIR}/MCServer
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
|
||||||
|
message (FATAL_ERROR "This project is needed only for Windows, modify your cmake file not to include it on Linux")
|
||||||
|
|
||||||
|
endif()
|
4
lib/luaproxy/Dummy.c
Normal file
4
lib/luaproxy/Dummy.c
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
// Dummy.c
|
||||||
|
|
||||||
|
// Because the MSVC compiler needs at least one C file to compile the project
|
115
lib/luaproxy/lua5.1.def
Normal file
115
lib/luaproxy/lua5.1.def
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
EXPORTS
|
||||||
|
luaL_addlstring=lua51.luaL_addlstring
|
||||||
|
luaL_addstring=lua51.luaL_addstring
|
||||||
|
luaL_addvalue=lua51.luaL_addvalue
|
||||||
|
luaL_argerror=lua51.luaL_argerror
|
||||||
|
luaL_buffinit=lua51.luaL_buffinit
|
||||||
|
luaL_callmeta=lua51.luaL_callmeta
|
||||||
|
luaL_checkany=lua51.luaL_checkany
|
||||||
|
luaL_checkinteger=lua51.luaL_checkinteger
|
||||||
|
luaL_checklstring=lua51.luaL_checklstring
|
||||||
|
luaL_checknumber=lua51.luaL_checknumber
|
||||||
|
luaL_checkoption=lua51.luaL_checkoption
|
||||||
|
luaL_checkstack=lua51.luaL_checkstack
|
||||||
|
luaL_checktype=lua51.luaL_checktype
|
||||||
|
luaL_checkudata=lua51.luaL_checkudata
|
||||||
|
luaL_error=lua51.luaL_error
|
||||||
|
luaL_findtable=lua51.luaL_findtable
|
||||||
|
luaL_getmetafield=lua51.luaL_getmetafield
|
||||||
|
luaL_gsub=lua51.luaL_gsub
|
||||||
|
luaL_loadbuffer=lua51.luaL_loadbuffer
|
||||||
|
luaL_loadfile=lua51.luaL_loadfile
|
||||||
|
luaL_loadstring=lua51.luaL_loadstring
|
||||||
|
luaL_newmetatable=lua51.luaL_newmetatable
|
||||||
|
luaL_newstate=lua51.luaL_newstate
|
||||||
|
luaL_openlib=lua51.luaL_openlib
|
||||||
|
luaL_openlibs=lua51.luaL_openlibs
|
||||||
|
luaL_optinteger=lua51.luaL_optinteger
|
||||||
|
luaL_optlstring=lua51.luaL_optlstring
|
||||||
|
luaL_optnumber=lua51.luaL_optnumber
|
||||||
|
luaL_prepbuffer=lua51.luaL_prepbuffer
|
||||||
|
luaL_pushresult=lua51.luaL_pushresult
|
||||||
|
luaL_ref=lua51.luaL_ref
|
||||||
|
luaL_register=lua51.luaL_register
|
||||||
|
luaL_typerror=lua51.luaL_typerror
|
||||||
|
luaL_unref=lua51.luaL_unref
|
||||||
|
luaL_where=lua51.luaL_where
|
||||||
|
lua_atpanic=lua51.lua_atpanic
|
||||||
|
lua_call=lua51.lua_call
|
||||||
|
lua_checkstack=lua51.lua_checkstack
|
||||||
|
lua_close=lua51.lua_close
|
||||||
|
lua_concat=lua51.lua_concat
|
||||||
|
lua_cpcall=lua51.lua_cpcall
|
||||||
|
lua_createtable=lua51.lua_createtable
|
||||||
|
lua_dump=lua51.lua_dump
|
||||||
|
lua_equal=lua51.lua_equal
|
||||||
|
lua_error=lua51.lua_error
|
||||||
|
lua_gc=lua51.lua_gc
|
||||||
|
lua_getallocf=lua51.lua_getallocf
|
||||||
|
lua_getfenv=lua51.lua_getfenv
|
||||||
|
lua_getfield=lua51.lua_getfield
|
||||||
|
lua_gethook=lua51.lua_gethook
|
||||||
|
lua_gethookcount=lua51.lua_gethookcount
|
||||||
|
lua_gethookmask=lua51.lua_gethookmask
|
||||||
|
lua_getinfo=lua51.lua_getinfo
|
||||||
|
lua_getlocal=lua51.lua_getlocal
|
||||||
|
lua_getmetatable=lua51.lua_getmetatable
|
||||||
|
lua_getstack=lua51.lua_getstack
|
||||||
|
lua_gettable=lua51.lua_gettable
|
||||||
|
lua_gettop=lua51.lua_gettop
|
||||||
|
lua_getupvalue=lua51.lua_getupvalue
|
||||||
|
lua_insert=lua51.lua_insert
|
||||||
|
lua_iscfunction=lua51.lua_iscfunction
|
||||||
|
lua_isnumber=lua51.lua_isnumber
|
||||||
|
lua_isstring=lua51.lua_isstring
|
||||||
|
lua_isuserdata=lua51.lua_isuserdata
|
||||||
|
lua_lessthan=lua51.lua_lessthan
|
||||||
|
lua_load=lua51.lua_load
|
||||||
|
lua_newstate=lua51.lua_newstate
|
||||||
|
lua_newthread=lua51.lua_newthread
|
||||||
|
lua_newuserdata=lua51.lua_newuserdata
|
||||||
|
lua_next=lua51.lua_next
|
||||||
|
lua_objlen=lua51.lua_objlen
|
||||||
|
lua_pcall=lua51.lua_pcall
|
||||||
|
lua_pushboolean=lua51.lua_pushboolean
|
||||||
|
lua_pushcclosure=lua51.lua_pushcclosure
|
||||||
|
lua_pushfstring=lua51.lua_pushfstring
|
||||||
|
lua_pushinteger=lua51.lua_pushinteger
|
||||||
|
lua_pushlightuserdata=lua51.lua_pushlightuserdata
|
||||||
|
lua_pushlstring=lua51.lua_pushlstring
|
||||||
|
lua_pushnil=lua51.lua_pushnil
|
||||||
|
lua_pushnumber=lua51.lua_pushnumber
|
||||||
|
lua_pushstring=lua51.lua_pushstring
|
||||||
|
lua_pushthread=lua51.lua_pushthread
|
||||||
|
lua_pushvalue=lua51.lua_pushvalue
|
||||||
|
lua_pushvfstring=lua51.lua_pushvfstring
|
||||||
|
lua_rawequal=lua51.lua_rawequal
|
||||||
|
lua_rawget=lua51.lua_rawget
|
||||||
|
lua_rawgeti=lua51.lua_rawgeti
|
||||||
|
lua_rawset=lua51.lua_rawset
|
||||||
|
lua_rawseti=lua51.lua_rawseti
|
||||||
|
lua_remove=lua51.lua_remove
|
||||||
|
lua_replace=lua51.lua_replace
|
||||||
|
lua_resume=lua51.lua_resume
|
||||||
|
lua_setallocf=lua51.lua_setallocf
|
||||||
|
lua_setfenv=lua51.lua_setfenv
|
||||||
|
lua_setfield=lua51.lua_setfield
|
||||||
|
lua_sethook=lua51.lua_sethook
|
||||||
|
lua_setlocal=lua51.lua_setlocal
|
||||||
|
lua_setmetatable=lua51.lua_setmetatable
|
||||||
|
lua_settable=lua51.lua_settable
|
||||||
|
lua_settop=lua51.lua_settop
|
||||||
|
lua_setupvalue=lua51.lua_setupvalue
|
||||||
|
lua_status=lua51.lua_status
|
||||||
|
lua_toboolean=lua51.lua_toboolean
|
||||||
|
lua_tocfunction=lua51.lua_tocfunction
|
||||||
|
lua_tointeger=lua51.lua_tointeger
|
||||||
|
lua_tolstring=lua51.lua_tolstring
|
||||||
|
lua_tonumber=lua51.lua_tonumber
|
||||||
|
lua_topointer=lua51.lua_topointer
|
||||||
|
lua_tothread=lua51.lua_tothread
|
||||||
|
lua_touserdata=lua51.lua_touserdata
|
||||||
|
lua_type=lua51.lua_type
|
||||||
|
lua_typename=lua51.lua_typename
|
||||||
|
lua_xmove=lua51.lua_xmove
|
||||||
|
lua_yield=lua51.lua_yield
|
140
lib/luaproxy/lua5.1.lua
Normal file
140
lib/luaproxy/lua5.1.lua
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
|
||||||
|
-- lua5.1.lua
|
||||||
|
-- Generates the lua5.1.def file from the list of Lua symbols below
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local symbols =
|
||||||
|
{
|
||||||
|
"luaL_addlstring",
|
||||||
|
"luaL_addstring",
|
||||||
|
"luaL_addvalue",
|
||||||
|
"luaL_argerror",
|
||||||
|
"luaL_buffinit",
|
||||||
|
"luaL_callmeta",
|
||||||
|
"luaL_checkany",
|
||||||
|
"luaL_checkinteger",
|
||||||
|
"luaL_checklstring",
|
||||||
|
"luaL_checknumber",
|
||||||
|
"luaL_checkoption",
|
||||||
|
"luaL_checkstack",
|
||||||
|
"luaL_checktype",
|
||||||
|
"luaL_checkudata",
|
||||||
|
"luaL_error",
|
||||||
|
"luaL_findtable",
|
||||||
|
"luaL_getmetafield",
|
||||||
|
"luaL_gsub",
|
||||||
|
"luaL_loadbuffer",
|
||||||
|
"luaL_loadfile",
|
||||||
|
"luaL_loadstring",
|
||||||
|
"luaL_newmetatable",
|
||||||
|
"luaL_newstate",
|
||||||
|
"luaL_openlib",
|
||||||
|
"luaL_openlibs",
|
||||||
|
"luaL_optinteger",
|
||||||
|
"luaL_optlstring",
|
||||||
|
"luaL_optnumber",
|
||||||
|
"luaL_prepbuffer",
|
||||||
|
"luaL_pushresult",
|
||||||
|
"luaL_ref",
|
||||||
|
"luaL_register",
|
||||||
|
"luaL_typerror",
|
||||||
|
"luaL_unref",
|
||||||
|
"luaL_where",
|
||||||
|
"lua_atpanic",
|
||||||
|
"lua_call",
|
||||||
|
"lua_checkstack",
|
||||||
|
"lua_close",
|
||||||
|
"lua_concat",
|
||||||
|
"lua_cpcall",
|
||||||
|
"lua_createtable",
|
||||||
|
"lua_dump",
|
||||||
|
"lua_equal",
|
||||||
|
"lua_error",
|
||||||
|
"lua_gc",
|
||||||
|
"lua_getallocf",
|
||||||
|
"lua_getfenv",
|
||||||
|
"lua_getfield",
|
||||||
|
"lua_gethook",
|
||||||
|
"lua_gethookcount",
|
||||||
|
"lua_gethookmask",
|
||||||
|
"lua_getinfo",
|
||||||
|
"lua_getlocal",
|
||||||
|
"lua_getmetatable",
|
||||||
|
"lua_getstack",
|
||||||
|
"lua_gettable",
|
||||||
|
"lua_gettop",
|
||||||
|
"lua_getupvalue",
|
||||||
|
"lua_insert",
|
||||||
|
"lua_iscfunction",
|
||||||
|
"lua_isnumber",
|
||||||
|
"lua_isstring",
|
||||||
|
"lua_isuserdata",
|
||||||
|
"lua_lessthan",
|
||||||
|
"lua_load",
|
||||||
|
"lua_newstate",
|
||||||
|
"lua_newthread",
|
||||||
|
"lua_newuserdata",
|
||||||
|
"lua_next",
|
||||||
|
"lua_objlen",
|
||||||
|
"lua_pcall",
|
||||||
|
"lua_pushboolean",
|
||||||
|
"lua_pushcclosure",
|
||||||
|
"lua_pushfstring",
|
||||||
|
"lua_pushinteger",
|
||||||
|
"lua_pushlightuserdata",
|
||||||
|
"lua_pushlstring",
|
||||||
|
"lua_pushnil",
|
||||||
|
"lua_pushnumber",
|
||||||
|
"lua_pushstring",
|
||||||
|
"lua_pushthread",
|
||||||
|
"lua_pushvalue",
|
||||||
|
"lua_pushvfstring",
|
||||||
|
"lua_rawequal",
|
||||||
|
"lua_rawget",
|
||||||
|
"lua_rawgeti",
|
||||||
|
"lua_rawset",
|
||||||
|
"lua_rawseti",
|
||||||
|
"lua_remove",
|
||||||
|
"lua_replace",
|
||||||
|
"lua_resume",
|
||||||
|
"lua_setallocf",
|
||||||
|
"lua_setfenv",
|
||||||
|
"lua_setfield",
|
||||||
|
"lua_sethook",
|
||||||
|
"lua_setlocal",
|
||||||
|
"lua_setmetatable",
|
||||||
|
"lua_settable",
|
||||||
|
"lua_settop",
|
||||||
|
"lua_setupvalue",
|
||||||
|
"lua_status",
|
||||||
|
"lua_toboolean",
|
||||||
|
"lua_tocfunction",
|
||||||
|
"lua_tointeger",
|
||||||
|
"lua_tolstring",
|
||||||
|
"lua_tonumber",
|
||||||
|
"lua_topointer",
|
||||||
|
"lua_tothread",
|
||||||
|
"lua_touserdata",
|
||||||
|
"lua_type",
|
||||||
|
"lua_typename",
|
||||||
|
"lua_xmove",
|
||||||
|
"lua_yield",
|
||||||
|
-- "luaopen_base",
|
||||||
|
-- "luaopen_debug",
|
||||||
|
-- "luaopen_io",
|
||||||
|
-- "luaopen_math",
|
||||||
|
-- "luaopen_os",
|
||||||
|
-- "luaopen_package",
|
||||||
|
-- "luaopen_string",
|
||||||
|
-- "luaopen_table",
|
||||||
|
}
|
||||||
|
|
||||||
|
local def = io.open("lua5.1.def", "w")
|
||||||
|
def:write("EXPORTS\n")
|
||||||
|
for _,symbol in ipairs(symbols) do
|
||||||
|
def:write("\t" .. symbol .. "=lua51." .. symbol .. "\n")
|
||||||
|
end
|
||||||
|
def:close()
|
Loading…
Reference in New Issue
Block a user