From 0b3f1a0e088575988beaaea11b3e32a0bd26f63a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 14 Oct 2014 10:58:50 +0200 Subject: tolua test runs on Windows --- makefiles/gmake/platform.mk | 3 +- makefiles/nmake/config.mk | 12 ++++++++ src/libluaglue/LuaVM.cpp | 8 ++++-- src/libluaglue/Makefile.W32 | 1 + tests/tolua/Makefile.W32 | 4 ++- tests/tolua/exec_test.cmd | 5 ++-- tests/tolua/libtest1/GNUmakefile | 3 ++ tests/tolua/libtest1/Makefile.W32 | 21 +++++++++++--- tests/tolua/test1.MUST | 2 ++ tests/tolua/test1.cpp | 4 +++ tolua/src/bin/Makefile.W32 | 59 +++++++++++++++++++++++++++++++++++++++ 11 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 tests/tolua/test1.MUST create mode 100644 tolua/src/bin/Makefile.W32 diff --git a/makefiles/gmake/platform.mk b/makefiles/gmake/platform.mk index 7c53844..8e99baa 100644 --- a/makefiles/gmake/platform.mk +++ b/makefiles/gmake/platform.mk @@ -364,8 +364,9 @@ endif ifeq ($(WITH_LUA),1) TOLUA_DIR = $(TOPDIR)/tolua +LUA_DIR = $(TOPDIR)/lua TOLUA = $(TOLUA_DIR)/bin/tolua -TOLUA_INCLUDES = -I$(TOLUA_DIR)/include +TOLUA_INCLUDES = -I$(TOLUA_DIR)/include -I$(LUA_DIR)/src TOLUA_LDFLAGS = TOLUA_LIBS = $(TOLUA_DIR)/lib/libtolua.a endif diff --git a/makefiles/nmake/config.mk b/makefiles/nmake/config.mk index 5593036..cb15837 100755 --- a/makefiles/nmake/config.mk +++ b/makefiles/nmake/config.mk @@ -68,3 +68,15 @@ DOXYGEN = C:\Program Files\Doxygen\bin\doxygen.exe ########################################################################## HHC_LOCATION = C:\Program Files\HTML Help Workshop\hhc.exe + +# tolua and Lua +############### + +TOLUA_DIR = $(TOPDIR)\tolua +LUA_DIR = $(TOPDIR)\lua +TOLUA = $(TOLUA_DIR)\bin\tolua +TOLUA_CFLAGS = /DSHARED /DLUA_LIB +TOLUA_INCLUDES = /I$(TOLUA_DIR)\include /I$(LUA_DIR)\src +TOLUA_LDFLAGS = +TOLUA_LIBS = $(TOLUA_DIR)\lib\tolua.lib $(LUA_DIR)\src\lua52.lib + diff --git a/src/libluaglue/LuaVM.cpp b/src/libluaglue/LuaVM.cpp index e75a1c9..637f668 100644 --- a/src/libluaglue/LuaVM.cpp +++ b/src/libluaglue/LuaVM.cpp @@ -1,6 +1,10 @@ #include "LuaVM.hpp" #include "StringUtils.hpp" +#ifdef _WIN32 +#define snprintf _snprintf +#endif +#define __STDC_FORMAT_MACROS #include "util/IntTypes.hpp" #include @@ -226,7 +230,7 @@ int LuaVM::findValue( const string &key ) } lua_getglobal( m_lua, parts[0].c_str( ) ); - for( size_t i = 1; i <= parts.size( ) - 1; i++ ) { + for( int i = 1; i <= (int)parts.size( ) - 1; i++ ) { if( !lua_istable( m_lua, -1 ) ) { lua_pop( m_lua, i ); ostringstream ss; @@ -237,7 +241,7 @@ int LuaVM::findValue( const string &key ) } if( lua_isnil( m_lua, -1 ) ) { - lua_pop( m_lua, parts.size( ) ); + lua_pop( m_lua, (int)parts.size( ) ); ostringstream ss; ss << "key '" << key << "' refers to an empty element"; throw runtime_error( ss.str( ) ); diff --git a/src/libluaglue/Makefile.W32 b/src/libluaglue/Makefile.W32 index fa7a015..855a7a7 100755 --- a/src/libluaglue/Makefile.W32 +++ b/src/libluaglue/Makefile.W32 @@ -18,6 +18,7 @@ INCLUDE_DIRS = \ INCLUDE_LDFLAGS = \ INCLUDE_LIBS = \ + $(TOPDIR)\src\libutil\util.lib \ $(TOPDIR)\lua\src\lua52.lib CPP_OBJS = \ diff --git a/tests/tolua/Makefile.W32 b/tests/tolua/Makefile.W32 index aedc3e2..5513cca 100644 --- a/tests/tolua/Makefile.W32 +++ b/tests/tolua/Makefile.W32 @@ -35,10 +35,12 @@ OBJS = test1.exe: test1.obj +local_all: + local_clean: @-erase -f *.RES *.DIFF *.ERR 2>NUL local_distclean: local_test: - @-exec_test test1 "ToLua binding in module" + @-exec_test.cmd test1 test1.lua "ToLua binding in module" diff --git a/tests/tolua/exec_test.cmd b/tests/tolua/exec_test.cmd index 49d6168..3c4c627 100644 --- a/tests/tolua/exec_test.cmd +++ b/tests/tolua/exec_test.cmd @@ -1,7 +1,8 @@ @echo off set BINARY=%1 -set TITLE=%2 +set LUA=%2 +set TITLE=3 copy libcommon\common.dll . >NUL copy ..\..\src\libcrawler\crawler.dll . >NUL @@ -9,7 +10,7 @@ copy ..\..\src\liblogger\logger.dll . >NUL copy ..\..\src\libutil\util.dll . >NUL copy ..\..\src\libluaglue\luaglue.dll . >NUL copy ..\..\lua\src\lua52.dll . >NUL -%BINARY% >%BINARY%.OUT 2>%BINARY%.ERR +%BINARY% %LUA% >%BINARY%.OUT 2>%BINARY%.ERR ..\..\utils\win32\dos2unix <%BINARY%.OUT >%BINARY%.RES erase /q %BINARY%.OUT echo n | comp %BINARY%.MUST %BINARY%.RES > %BINARY%.DIFF 2>NUL diff --git a/tests/tolua/libtest1/GNUmakefile b/tests/tolua/libtest1/GNUmakefile index 2a83f6e..4845035 100755 --- a/tests/tolua/libtest1/GNUmakefile +++ b/tests/tolua/libtest1/GNUmakefile @@ -37,6 +37,9 @@ CPP_OBJS = \ TestModLua.cpp: TestMod.pkg $(TOLUA) -H TestModLua.hpp -o TestModLua.cpp TestMod.pkg +TestModLua.hpp: TestMod.pkg + $(TOLUA) -H TestModLua.hpp -o TestModLua.cpp TestMod.pkg + local_all: local_clean: diff --git a/tests/tolua/libtest1/Makefile.W32 b/tests/tolua/libtest1/Makefile.W32 index 407d9ae..368fc78 100644 --- a/tests/tolua/libtest1/Makefile.W32 +++ b/tests/tolua/libtest1/Makefile.W32 @@ -5,7 +5,8 @@ SUBDIRS = !INCLUDE $(TOPDIR)\makefiles\nmake\platform.mk INCLUDE_CXXFLAGS = \ - /D_WIN32_WINNT=0x504 + /D_WIN32_WINNT=0x504 \ + $(TOLUA_CFLAGS) INCLUDE_DIRS = \ /I. \ @@ -14,13 +15,16 @@ INCLUDE_DIRS = \ /I$(TOPDIR)\include\module \ /I$(TOPDIR)\include\util \ /I$(TOPDIR)\include\luaglue \ - /I.. + /I.. \ + $(TOLUA_INCLUDES) INCLUDE_LDFLAGS = \ - + $(TOLUA_LDFLAGS) + INCLUDE_LIBS = \ $(TOPDIR)\src\libutil\util.lib \ - $(TOPDIR)\src\libluaglue\luaglue.lib + $(TOPDIR)\src\libluaglue\luaglue.lib \ + $(TOLUA_LIBS) DYNAMIC_MODULE = \ mod_test.dll @@ -46,7 +50,16 @@ $(DYNAMIC_MODULE): $(SHARED_CPP_OBJS) local_all: $(STATIC_LIB) $(DYNAMIC_MODULE) +TestMod.cpp: TestModLua.hpp + +TestModLua.cpp: TestMod.pkg + $(TOLUA) -H TestModLua.hpp -o TestModLua.cpp TestMod.pkg + +TestModLua.hpp: TestMod.pkg + $(TOLUA) -H TestModLua.hpp -o TestModLua.cpp TestMod.pkg + local_clean: + @-erase TestModLua.cpp TestModLua.hpp 2>NUL local_distclean: diff --git a/tests/tolua/test1.MUST b/tests/tolua/test1.MUST new file mode 100644 index 0000000..5cd91bf --- /dev/null +++ b/tests/tolua/test1.MUST @@ -0,0 +1,2 @@ +hello +Show this string diff --git a/tests/tolua/test1.cpp b/tests/tolua/test1.cpp index a3810e2..4ee26ff 100755 --- a/tests/tolua/test1.cpp +++ b/tests/tolua/test1.cpp @@ -17,7 +17,11 @@ int main( int /* argc */, char *argv[] ) LuaVM luaVm; vector modules; +#ifndef _WIN32 modules.push_back( "./libtest1/mod_test.so" ); +#else + modules.push_back( ".\\libtest1\\mod_test.dll" ); +#endif ModuleLoader loader( modules, CLOSE_DEFERRED, (void *)&luaVm ); luaVm.loadSource( argv[1] ); diff --git a/tolua/src/bin/Makefile.W32 b/tolua/src/bin/Makefile.W32 new file mode 100644 index 0000000..8511146 --- /dev/null +++ b/tolua/src/bin/Makefile.W32 @@ -0,0 +1,59 @@ +# makefile for tolua executable + +LINK= link.exe +CC= cl.exe +INCLUDE_DIRS=/I$(TOLUA)\include /I$(TOLUA)\..\lua\src +COMMON_CFLAGS= /W2 /WX /nologo /O2 /EHsc /c $(INCLUDE_DIRS) + +!IFDEF DEBUG +CFLAGS= /MDd /Zi $(COMMON_CFLAGS) +!ELSE +CFLAGS= /MD $(COMMON_CFLAGS) +!ENDIF + +LIBS= \ + $(TOLUA)\lib\tolua.lib \ + $(TOLUA)\..\lua\src\lua52.lib + +.SUFFIXES: .c .obj + +.c.obj: + $(CC) $(CFLAGS) /Fo$@ $< + +!IFDEF DEBUG +CFLAGS= /MDd /Zi $(COMMON_CFLAGS) +LDFLAGS = /nologo /manifest /debug +!ELSE +CFLAGS= /MD $(COMMON_CFLAGS) +LDFLAGS = /nologo /manifest +!ENDIF + +TOLUA=..\.. + +OBJS= \ + tolua.obj \ + toluabind.obj + +OBJS_D= \ + tolua_lua.obj + +T= $(TOLUA)\bin\tolua.exe +T_D = $(TOLUA)\bin\tolua_lua.exe + +all: $(T) + +$(T): $(OBJS) + $(LINK) $(LDFLAGS) /nologo /out:$@ $(OBJS) $(LIBS) + +toluabind.c: $(T_D) + copy $(TOLUA)\..\lua\src\lua52.dll $(TOLUA)\bin + $(T_D) -o toluabind.c tolua.pkg + +$(T_D): $(OBJS_D) + $(LINK) $(LDFLAGS) /nologo /out:$@ $(OBJS_D) $(LIBS) + +tolua_lua.obj: tolua.c + $(CC) /c /DLUA_SOURCE $(CFLAGS) /Fo$@ $? + +clean: + @-erase tolua_lua.obj $(OBJS) $(OBJS_D) $(T) $(T_D) 2>NUL -- cgit v1.2.3-54-g00ecf