Re-generate bindings file. Improved support for Windows+MinGW+MSYS.

pull/15/merge
Robert G. Jakabosky 15 years ago
parent 7242ded710
commit 3bcfd30ddb

@ -0,0 +1,47 @@
Steps to install on Windows XP (using MinGW+MSYS)
-------------------------------------------------
1. Download source code of ZeroMQ-2.1.7
2. Use mingw+msys to compile
>sh configure --prefix=c:/zeromq
>make
>make install
copy the header & lib to c:\mingw\include_or_lib
3. Download source code of luajit-2.0.0-beta7
>make
>make install
copy the header & lib to c:\mingw\include_or_lib
4. Install cmake-2.8.4-win32-x86
5. Download Neopallium-lua-zmq-1.0
6. Use cmake+mingw+msys to build
>mkdir build
>cd build
>cmake -G "MSYS Makefiles" -D ZMQ_PATH=c:/zeromq ..
>make
Warning: conflicting type ... comment line 62, 63, 66, 67 in src/prepre_generated-zmq.nobj.c, and try again
>make
The zmq.dll generated in [build] folder
>make install
3 files zmq.dll, poller.lua and threads.lua are installed in c:\program files\lua-zmq
Author
------
xumingyong@gmail.com
xumingyong@ehdc.com.cn

@ -41,21 +41,7 @@
/* for MinGW32 compiler need to include <stdint.h> */ /* for MinGW32 compiler need to include <stdint.h> */
#ifdef __GNUC__ #ifdef __GNUC__
#include <stdint.h> #include <stdint.h>
#endif
/* wrap strerror_s(). */
#ifdef __GNUC__
#ifndef strerror_r
#define strerror_r(errno, buf, buflen) do { \
strncpy((buf), strerror(errno), (buflen)-1); \
(buf)[(buflen)-1] = '\0'; \
} while(0)
#endif
#else #else
#ifndef strerror_r
#define strerror_r(errno, buf, buflen) strerror_s((buf), (buflen), (errno))
#endif
#endif
/* define some standard types missing on Windows. */ /* define some standard types missing on Windows. */
#ifndef __INT32_MAX__ #ifndef __INT32_MAX__
@ -74,6 +60,22 @@ typedef int bool;
#define false 1 #define false 1
#endif #endif
#endif
/* wrap strerror_s(). */
#ifdef __GNUC__
#ifndef strerror_r
#define strerror_r(errno, buf, buflen) do { \
strncpy((buf), strerror(errno), (buflen)-1); \
(buf)[(buflen)-1] = '\0'; \
} while(0)
#endif
#else
#ifndef strerror_r
#define strerror_r(errno, buf, buflen) strerror_s((buf), (buflen), (errno))
#endif
#endif
#define FUNC_UNUSED #define FUNC_UNUSED
#define LUA_NOBJ_API __declspec(dllexport) #define LUA_NOBJ_API __declspec(dllexport)
@ -327,9 +329,6 @@ static FUNC_UNUSED void *obj_udata_luadelete(lua_State *L, int _index, obj_type
/* null userdata. */ /* null userdata. */
ud->obj = NULL; ud->obj = NULL;
ud->flags = 0; ud->flags = 0;
/* clear the metatable to invalidate userdata. */
lua_pushnil(L);
lua_setmetatable(L, _index);
return obj; return obj;
} }
@ -361,9 +360,6 @@ static FUNC_UNUSED void *obj_udata_luadelete_weak(lua_State *L, int _index, obj_
/* null userdata. */ /* null userdata. */
ud->obj = NULL; ud->obj = NULL;
ud->flags = 0; ud->flags = 0;
/* clear the metatable to invalidate userdata. */
lua_pushnil(L);
lua_setmetatable(L, _index);
/* get objects weak table. */ /* get objects weak table. */
lua_pushlightuserdata(L, obj_udata_weak_ref_key); lua_pushlightuserdata(L, obj_udata_weak_ref_key);
lua_rawget(L, LUA_REGISTRYINDEX); /* weak ref table. */ lua_rawget(L, LUA_REGISTRYINDEX); /* weak ref table. */
@ -762,6 +758,7 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"local type = type\n" "local type = type\n"
"local tonumber = tonumber\n" "local tonumber = tonumber\n"
"local tostring = tostring\n" "local tostring = tostring\n"
"local rawset = rawset\n"
"\n" "\n"
"-- try loading luajit's ffi\n" "-- try loading luajit's ffi\n"
"local stat, ffi=pcall(require,\"ffi\")\n" "local stat, ffi=pcall(require,\"ffi\")\n"
@ -826,6 +823,14 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
" return ud.obj\n" " return ud.obj\n"
"end\n" "end\n"
"\n" "\n"
"local function obj_udata_to_cdata(objects, ud_obj, c_type, ud_mt)\n"
" -- convert userdata to cdata.\n"
" local c_obj = ffi.cast(c_type, obj_udata_luacheck(ud_obj, ud_mt))\n"
" -- cache converted cdata\n"
" rawset(objects, ud_obj, c_obj)\n"
" return c_obj\n"
"end\n"
"\n"
"local function obj_udata_luadelete(ud_obj, type_mt)\n" "local function obj_udata_luadelete(ud_obj, type_mt)\n"
" local ud = obj_udata_luacheck_internal(ud_obj, type_mt)\n" " local ud = obj_udata_luacheck_internal(ud_obj, type_mt)\n"
" local obj, flags = ud.obj, ud.flags\n" " local obj, flags = ud.obj, ud.flags\n"
@ -912,6 +917,14 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
" error(\"(expected `\" .. type_mt['.name'] .. \"`, got \" .. type(ud_obj) .. \")\", 3)\n" " error(\"(expected `\" .. type_mt['.name'] .. \"`, got \" .. type(ud_obj) .. \")\", 3)\n"
"end\n" "end\n"
"\n" "\n"
"local function obj_simple_udata_to_cdata(objects, ud_obj, c_type, ud_mt)\n"
" -- convert userdata to cdata.\n"
" local c_obj = ffi.cast(c_type, obj_simple_udata_luacheck(ud_obj, ud_mt))\n"
" -- cache converted cdata\n"
" rawset(objects, ud_obj, c_obj)\n"
" return c_obj\n"
"end\n"
"\n"
"local function obj_simple_udata_luadelete(ud_obj, type_mt)\n" "local function obj_simple_udata_luadelete(ud_obj, type_mt)\n"
" local c_obj = obj_simple_udata_luacheck(ud_obj, type_mt)\n" " local c_obj = obj_simple_udata_luacheck(ud_obj, type_mt)\n"
" -- invalid userdata, by setting the metatable to nil.\n" " -- invalid userdata, by setting the metatable to nil.\n"
@ -1054,16 +1067,13 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"\n" "\n"
"(function()\n" "(function()\n"
"local zmq_msg_t_mt = _priv.zmq_msg_t\n" "local zmq_msg_t_mt = _priv.zmq_msg_t\n"
"local zmq_msg_t_objects = setmetatable({}, { __mode = \"k\" })\n" "local zmq_msg_t_objects = setmetatable({}, { __mode = \"k\",\n"
"__index = function(objects, ud_obj)\n"
" return obj_simple_udata_to_cdata(objects, ud_obj, \"zmq_msg_t *\", zmq_msg_t_mt)\n"
"end,\n"
"})\n"
"function obj_type_zmq_msg_t_check(ud_obj)\n" "function obj_type_zmq_msg_t_check(ud_obj)\n"
" local c_obj = zmq_msg_t_objects[ud_obj]\n" " return zmq_msg_t_objects[ud_obj]\n"
" if c_obj == nil then\n"
" -- cdata object not in cache\n"
" c_obj = obj_simple_udata_luacheck(ud_obj, zmq_msg_t_mt)\n"
" c_obj = ffi.cast(\"zmq_msg_t *\", c_obj) -- cast from 'void *'\n"
" zmq_msg_t_objects[ud_obj] = c_obj\n"
" end\n"
" return c_obj\n"
"end\n" "end\n"
"\n" "\n"
"function obj_type_zmq_msg_t_delete(ud_obj)\n" "function obj_type_zmq_msg_t_delete(ud_obj)\n"
@ -1086,16 +1096,13 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"\n" "\n"
"(function()\n" "(function()\n"
"local ZMQ_Socket_mt = _priv.ZMQ_Socket\n" "local ZMQ_Socket_mt = _priv.ZMQ_Socket\n"
"local ZMQ_Socket_objects = setmetatable({}, { __mode = \"k\" })\n" "local ZMQ_Socket_objects = setmetatable({}, { __mode = \"k\",\n"
"__index = function(objects, ud_obj)\n"
" return obj_udata_to_cdata(objects, ud_obj, \"ZMQ_Socket *\", ZMQ_Socket_mt)\n"
"end,\n"
"})\n"
"function obj_type_ZMQ_Socket_check(ud_obj)\n" "function obj_type_ZMQ_Socket_check(ud_obj)\n"
" local c_obj = ZMQ_Socket_objects[ud_obj]\n" " return ZMQ_Socket_objects[ud_obj]\n"
" if c_obj == nil then\n"
" -- cdata object not in cache\n"
" c_obj = obj_udata_luacheck(ud_obj, ZMQ_Socket_mt)\n"
" c_obj = ffi.cast(\"ZMQ_Socket *\", c_obj) -- cast from 'void *'\n"
" ZMQ_Socket_objects[ud_obj] = c_obj\n"
" end\n"
" return c_obj\n"
"end\n" "end\n"
"\n" "\n"
"function obj_type_ZMQ_Socket_delete(ud_obj)\n" "function obj_type_ZMQ_Socket_delete(ud_obj)\n"
@ -1118,16 +1125,13 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"\n" "\n"
"(function()\n" "(function()\n"
"local ZMQ_Poller_mt = _priv.ZMQ_Poller\n" "local ZMQ_Poller_mt = _priv.ZMQ_Poller\n"
"local ZMQ_Poller_objects = setmetatable({}, { __mode = \"k\" })\n" "local ZMQ_Poller_objects = setmetatable({}, { __mode = \"k\",\n"
"__index = function(objects, ud_obj)\n"
" return obj_simple_udata_to_cdata(objects, ud_obj, \"ZMQ_Poller *\", ZMQ_Poller_mt)\n"
"end,\n"
"})\n"
"function obj_type_ZMQ_Poller_check(ud_obj)\n" "function obj_type_ZMQ_Poller_check(ud_obj)\n"
" local c_obj = ZMQ_Poller_objects[ud_obj]\n" " return ZMQ_Poller_objects[ud_obj]\n"
" if c_obj == nil then\n"
" -- cdata object not in cache\n"
" c_obj = obj_simple_udata_luacheck(ud_obj, ZMQ_Poller_mt)\n"
" c_obj = ffi.cast(\"ZMQ_Poller *\", c_obj) -- cast from 'void *'\n"
" ZMQ_Poller_objects[ud_obj] = c_obj\n"
" end\n"
" return c_obj\n"
"end\n" "end\n"
"\n" "\n"
"function obj_type_ZMQ_Poller_delete(ud_obj)\n" "function obj_type_ZMQ_Poller_delete(ud_obj)\n"
@ -1150,16 +1154,13 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"\n" "\n"
"(function()\n" "(function()\n"
"local ZMQ_Ctx_mt = _priv.ZMQ_Ctx\n" "local ZMQ_Ctx_mt = _priv.ZMQ_Ctx\n"
"local ZMQ_Ctx_objects = setmetatable({}, { __mode = \"k\" })\n" "local ZMQ_Ctx_objects = setmetatable({}, { __mode = \"k\",\n"
"__index = function(objects, ud_obj)\n"
" return obj_udata_to_cdata(objects, ud_obj, \"ZMQ_Ctx *\", ZMQ_Ctx_mt)\n"
"end,\n"
"})\n"
"function obj_type_ZMQ_Ctx_check(ud_obj)\n" "function obj_type_ZMQ_Ctx_check(ud_obj)\n"
" local c_obj = ZMQ_Ctx_objects[ud_obj]\n" " return ZMQ_Ctx_objects[ud_obj]\n"
" if c_obj == nil then\n"
" -- cdata object not in cache\n"
" c_obj = obj_udata_luacheck(ud_obj, ZMQ_Ctx_mt)\n"
" c_obj = ffi.cast(\"ZMQ_Ctx *\", c_obj) -- cast from 'void *'\n"
" ZMQ_Ctx_objects[ud_obj] = c_obj\n"
" end\n"
" return c_obj\n"
"end\n" "end\n"
"\n" "\n"
"function obj_type_ZMQ_Ctx_delete(ud_obj)\n" "function obj_type_ZMQ_Ctx_delete(ud_obj)\n"
@ -1182,16 +1183,13 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"\n" "\n"
"(function()\n" "(function()\n"
"local ZMQ_StopWatch_mt = _priv.ZMQ_StopWatch\n" "local ZMQ_StopWatch_mt = _priv.ZMQ_StopWatch\n"
"local ZMQ_StopWatch_objects = setmetatable({}, { __mode = \"k\" })\n" "local ZMQ_StopWatch_objects = setmetatable({}, { __mode = \"k\",\n"
"__index = function(objects, ud_obj)\n"
" return obj_udata_to_cdata(objects, ud_obj, \"ZMQ_StopWatch *\", ZMQ_StopWatch_mt)\n"
"end,\n"
"})\n"
"function obj_type_ZMQ_StopWatch_check(ud_obj)\n" "function obj_type_ZMQ_StopWatch_check(ud_obj)\n"
" local c_obj = ZMQ_StopWatch_objects[ud_obj]\n" " return ZMQ_StopWatch_objects[ud_obj]\n"
" if c_obj == nil then\n"
" -- cdata object not in cache\n"
" c_obj = obj_udata_luacheck(ud_obj, ZMQ_StopWatch_mt)\n"
" c_obj = ffi.cast(\"ZMQ_StopWatch *\", c_obj) -- cast from 'void *'\n"
" ZMQ_StopWatch_objects[ud_obj] = c_obj\n"
" end\n"
" return c_obj\n"
"end\n" "end\n"
"\n" "\n"
"function obj_type_ZMQ_StopWatch_delete(ud_obj)\n" "function obj_type_ZMQ_StopWatch_delete(ud_obj)\n"
@ -1515,6 +1513,7 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"function _meth.ZMQ_Socket.getopt(self, opt2)\n" "function _meth.ZMQ_Socket.getopt(self, opt2)\n"
" local this1 = obj_type_ZMQ_Socket_check(self)\n" " local this1 = obj_type_ZMQ_Socket_check(self)\n"
" \n" " \n"
" local val1\n"
" local err2\n" " local err2\n"
" local ctype = option_types[opt2]\n" " local ctype = option_types[opt2]\n"
" local val\n" " local val\n"
@ -1539,7 +1538,7 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
" end\n" " end\n"
"\n" "\n"
" err2 = error_code__ZMQ_Error__push(err2)\n" " err2 = error_code__ZMQ_Error__push(err2)\n"
" return err2\n" " return val1, err2\n"
"end\n" "end\n"
"\n" "\n"
"-- temp. values for 'events' function.\n" "-- temp. values for 'events' function.\n"
@ -1688,6 +1687,7 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
"-- method: next_revents\n" "-- method: next_revents\n"
"function _meth.ZMQ_Poller.next_revents(self)\n" "function _meth.ZMQ_Poller.next_revents(self)\n"
" local this1 = obj_type_ZMQ_Poller_check(self)\n" " local this1 = obj_type_ZMQ_Poller_check(self)\n"
" local sock1\n"
" local revents2\n" " local revents2\n"
" local sock\n" " local sock\n"
" local idx = this1.next\n" " local idx = this1.next\n"
@ -1721,7 +1721,7 @@ static const char zmq_ffi_lua_code[] = "local error = error\n"
" this1.next = idx\n" " this1.next = idx\n"
"\n" "\n"
" revents2 = revents2\n" " revents2 = revents2\n"
" return revents2\n" " return sock1, revents2\n"
"end\n" "end\n"
"\n" "\n"
"-- method: count\n" "-- method: count\n"

Loading…
Cancel
Save