瀏覽代碼

Support build for Lua 5.1 (for LuaJIT), Lua 5.2 and Lua 5.3 (Step 5/?)

See #195
bel2125 10 年之前
父節點
當前提交
19b7e4d12e
共有 4 個文件被更改,包括 17 次插入10 次删除
  1. 7 7
      resources/Makefile.in-lua
  2. 6 0
      src/mod_lua.inl
  3. 3 3
      src/third_party/LuaXML_lib.c
  4. 1 0
      src/third_party/civetweb_lua.h

+ 7 - 7
resources/Makefile.in-lua

@@ -65,28 +65,28 @@ LUA_SOURCES = $(addprefix $(LUA_DIR)/, $(LUA_SOURCE_FILES))
 LUA_OBJECTS = $(LUA_SOURCES:.c=.o)
 LUA_OBJECTS = $(LUA_SOURCES:.c=.o)
 
 
 SQLITE_DIR = src/third_party
 SQLITE_DIR = src/third_party
-SQLITE_SOURCE_FILES = 
-#SQLITE_SOURCE_FILES = sqlite3.c lsqlite3.c
+# SQLITE_SOURCE_FILES = 
+SQLITE_SOURCE_FILES = sqlite3.c lsqlite3.c
 SQLITE_SOURCES = $(addprefix $(SQLITE_DIR)/, $(SQLITE_SOURCE_FILES))
 SQLITE_SOURCES = $(addprefix $(SQLITE_DIR)/, $(SQLITE_SOURCE_FILES))
 SQLITE_OBJECTS = $(SQLITE_SOURCES:.c=.o)
 SQLITE_OBJECTS = $(SQLITE_SOURCES:.c=.o)
 SQLITE_CFLAGS = -I$(SQLITE_DIR) -DTHREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS
 SQLITE_CFLAGS = -I$(SQLITE_DIR) -DTHREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS
 
 
 LFS_DIR = src/third_party
 LFS_DIR = src/third_party
-LFS_SOURCE_FILES = 
-#LFS_SOURCE_FILES = lfs.c
+# LFS_SOURCE_FILES = 
+LFS_SOURCE_FILES = lfs.c
 LFS_SOURCES = $(addprefix $(LFS_DIR)/, $(LFS_SOURCE_FILES))
 LFS_SOURCES = $(addprefix $(LFS_DIR)/, $(LFS_SOURCE_FILES))
 LFS_OBJECTS = $(LFS_SOURCES:.c=.o)
 LFS_OBJECTS = $(LFS_SOURCES:.c=.o)
 LFS_CFLAGS = -I$(LFS_DIR)
 LFS_CFLAGS = -I$(LFS_DIR)
 
 
 LXML_DIR = src/third_party
 LXML_DIR = src/third_party
-LXML_SOURCE_FILES =
-#LXML_SOURCE_FILES = LuaXML_lib.c
+# LXML_SOURCE_FILES =
+LXML_SOURCE_FILES = LuaXML_lib.c
 LXML_SOURCES = $(addprefix $(LXML_DIR)/, $(LXML_SOURCE_FILES))
 LXML_SOURCES = $(addprefix $(LXML_DIR)/, $(LXML_SOURCE_FILES))
 LXML_OBJECTS = $(LXML_SOURCES:.c=.o)
 LXML_OBJECTS = $(LXML_SOURCES:.c=.o)
 LXML_CFLAGS = -I$(LXML_DIR)
 LXML_CFLAGS = -I$(LXML_DIR)
 
 
 OBJECTS += $(LUA_OBJECTS) $(SQLITE_OBJECTS) $(LFS_OBJECTS) $(LXML_OBJECTS)
 OBJECTS += $(LUA_OBJECTS) $(SQLITE_OBJECTS) $(LFS_OBJECTS) $(LXML_OBJECTS)
 CFLAGS += $(LUA_CFLAGS) $(SQLITE_CFLAGS) $(LFS_CFLAGS) 
 CFLAGS += $(LUA_CFLAGS) $(SQLITE_CFLAGS) $(LFS_CFLAGS) 
-#CFLAGS += -DUSE_LUA_SQLITE3 -DUSE_LUA_FILE_SYSTEM -DUSE_LUA_LUAXML
+CFLAGS += -DUSE_LUA_SQLITE3 -DUSE_LUA_FILE_SYSTEM -DUSE_LUA_LUAXML
 SOURCE_DIRS = $(LUA_DIR)
 SOURCE_DIRS = $(LUA_DIR)
 
 

+ 6 - 0
src/mod_lua.inl

@@ -1145,12 +1145,18 @@ static void prepare_lua_environment(struct mg_context *ctx,
 {
 {
 	civetweb_open_lua_libs(L);
 	civetweb_open_lua_libs(L);
 
 
+#if LUA_VERSION_NUM == 502
+        /* Keep the "connect" method for compatibility, 
+         * but do not backport it to Lua 5.1.
+         * TODO: Redesign the interface.
+         */
 	luaL_newmetatable(L, LUASOCKET);
 	luaL_newmetatable(L, LUASOCKET);
 	lua_pushliteral(L, "__index");
 	lua_pushliteral(L, "__index");
 	luaL_newlib(L, luasocket_methods);
 	luaL_newlib(L, luasocket_methods);
 	lua_rawset(L, -3);
 	lua_rawset(L, -3);
 	lua_pop(L, 1);
 	lua_pop(L, 1);
 	lua_register(L, "connect", lsp_connect);
 	lua_register(L, "connect", lsp_connect);
+#endif
 
 
 	/* Store context in the registry */
 	/* Store context in the registry */
 	if (ctx != NULL) {
 	if (ctx != NULL) {

+ 3 - 3
src/third_party/LuaXML_lib.c

@@ -36,9 +36,9 @@ THE SOFTWARE.
 #ifdef __cplusplus
 #ifdef __cplusplus
 extern "C" {
 extern "C" {
 #endif
 #endif
-#include <lua.h>
-#include <lauxlib.h>
-#include <lualib.h>
+
+#include "civetweb_lua.h"
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 } // extern "C"
 } // extern "C"
 #endif
 #endif

+ 1 - 0
src/third_party/civetweb_lua.h

@@ -43,6 +43,7 @@
 #define lua_newstate(a, b) luaL_newstate() /* Must use luaL_newstate() for 64 bit target */
 #define lua_newstate(a, b) luaL_newstate() /* Must use luaL_newstate() for 64 bit target */
 #define lua_pushinteger lua_pushnumber
 #define lua_pushinteger lua_pushnumber
 #define luaL_newlib(L, t) {luaL_Reg const *r = t; while (r->name) {lua_register(L, r->name, r->func); r++;}}
 #define luaL_newlib(L, t) {luaL_Reg const *r = t; while (r->name) {lua_register(L, r->name, r->func); r++;}}
+#define luaL_setfuncs(L, r, u) lua_register(L, r->name, r->func)
 
 
 
 
 #elif LUA_VERSION_NUM == 502
 #elif LUA_VERSION_NUM == 502