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/md5/)
|
||||
|
||||
if (WIN32)
|
||||
add_subdirectory(lib/luaproxy/)
|
||||
endif()
|
||||
|
||||
|
||||
# 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)
|
||||
|
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