summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore37
-rw-r--r--CMakeLists.txt19
-rw-r--r--lib/expat/CMakeLists.txt9
-rw-r--r--lib/lua/CMakeLists.txt21
-rw-r--r--lib/sqlite/CMakeLists.txt15
-rw-r--r--src/Bindings/LuaState.cpp4
-rw-r--r--src/CMakeLists.txt105
-rw-r--r--src/LeakFinder.cpp18
-rw-r--r--src/StackWalker.cpp6
9 files changed, 156 insertions, 78 deletions
diff --git a/.gitignore b/.gitignore
index 7eb0a218a..4367fea56 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,7 +57,44 @@ MCServer.dir/
#win32 cmake stuff
*.vcxproj
+*.vcproj
*.vcxproj.filters
*.opensdf
*.sdf
*.sln
+
+#cmake output folders
+ZERO_CHECK.dir/
+lib/cryptopp/Debug/
+lib/cryptopp/Release/
+lib/cryptopp/cryptopp.dir/
+lib/expat/Debug/
+lib/expat/Release/
+lib/expat/expat.dir/
+lib/inifile/Debug/
+lib/inifile/Release/
+lib/inifile/inifile.dir/
+lib/jsoncpp/Debug/
+lib/jsoncpp/Release/
+lib/jsoncpp/jsoncpp.dir/
+lib/lua/Debug/
+lib/lua/Release/
+lib/lua/lua.dir/
+lib/luaexpat/Debug/
+lib/luaexpat/Release/
+lib/luaexpat/luaexpat.dir/
+lib/md5/Debug/
+lib/md5/Release/
+lib/md5/md5.dir/
+lib/sqlite/Debug/
+lib/sqlite/Release/
+lib/sqlite/sqlite.dir/
+lib/tolua++/Debug/
+lib/tolua++/Release/
+lib/tolua++/tolua.dir/
+lib/tolua++/tolualib.dir/
+lib/zlib/Debug/
+lib/zlib/Release/
+lib/zlib/zlib.dir/
+src/Debug/
+src/Release/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17eee02bb..0df702b29 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -83,7 +83,13 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_definitions(-DCRYPTOPP_DISABLE_ASM)
endif()
-add_definitions(-DLUA_USE_DLOPEN)
+# Under Windows, we need Lua as DLL; on *nix we need it linked statically:
+if (WIN32)
+ add_definitions(-DLUA_BUILD_AS_DLL)
+endif()
+
+# The Expat library is linked in statically, make the source files aware of that:
+add_definitions(-DXML_STATIC)
add_subdirectory(lib/inifile/)
add_subdirectory(lib/jsoncpp/)
@@ -106,10 +112,13 @@ else()
add_flags("/Wall")
endif()
set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_BAK}")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -rdynamic")
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -rdynamic")
-set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_PROFILE} -rdynamic")
+
+if (NOT WIN32)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -rdynamic")
+ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -rdynamic")
+ set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_PROFILE} -rdynamic")
+endif()
add_subdirectory (src)
diff --git a/lib/expat/CMakeLists.txt b/lib/expat/CMakeLists.txt
index df9e8d57c..667804b9a 100644
--- a/lib/expat/CMakeLists.txt
+++ b/lib/expat/CMakeLists.txt
@@ -2,10 +2,15 @@
cmake_minimum_required (VERSION 2.6)
project (expat)
-include_directories ("${PROJECT_SOURCE_DIR}/../../src/")
-
file(GLOB SOURCE
"*.c"
)
+# add headers to MSVC project files:
+if (WIN32)
+ file(GLOB HEADERS "*.h")
+ set(SOURCE ${SOURCE} ${HEADERS})
+ source_group("Sources" FILES ${SOURCE})
+endif()
+
add_library(expat ${SOURCE})
diff --git a/lib/lua/CMakeLists.txt b/lib/lua/CMakeLists.txt
index 4787b6aa6..63ac18e90 100644
--- a/lib/lua/CMakeLists.txt
+++ b/lib/lua/CMakeLists.txt
@@ -8,12 +8,23 @@ file(GLOB SOURCE
"src/*.c"
)
-if(${STATIC_LUA})
-add_library(lua ${SOURCE})
+list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/src/lua.c" "${PROJECT_SOURCE_DIR}/src/luac.c")
+
+# add headers to MSVC project files:
+if (WIN32)
+ file(GLOB HEADERS "src/*.h")
+ list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/src/lua.h" "${PROJECT_SOURCE_DIR}/src/luac.h")
+ set(SOURCE ${SOURCE} ${HEADERS})
+ source_group("Sources" FILES ${SOURCE})
+endif()
+
+# Lua needs to be linked dynamically on Windows and statically on *nix, so that LuaRocks work
+if (WIN32)
+ add_library(lua SHARED ${SOURCE})
else()
-add_library(lua SHARED ${SOURCE})
+ add_library(lua ${SOURCE})
endif()
-if(UNIX)
-target_link_libraries(lua m dl)
+if (UNIX)
+ target_link_libraries(lua m dl)
endif()
diff --git a/lib/sqlite/CMakeLists.txt b/lib/sqlite/CMakeLists.txt
index 8596e2d9c..07e5a22cb 100644
--- a/lib/sqlite/CMakeLists.txt
+++ b/lib/sqlite/CMakeLists.txt
@@ -2,13 +2,24 @@
cmake_minimum_required (VERSION 2.6)
project (sqlite)
-include_directories ("${PROJECT_SOURCE_DIR}/../../src/")
include_directories ("${PROJECT_SOURCE_DIR}/../")
file(GLOB SOURCE
"*.c"
)
+
+# add headers to MSVC project files:
+if (WIN32)
+ file(GLOB HEADERS "src/*.h")
+ list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/src/lua.h" "${PROJECT_SOURCE_DIR}/src/luac.h")
+ set(SOURCE ${SOURCE} ${HEADERS})
+ source_group("Sources" FILES ${SOURCE})
+endif()
+
+
add_library(sqlite ${SOURCE})
-target_link_libraries(sqlite dl)
+if (UNIX)
+ target_link_libraries(sqlite dl)
+endif()
diff --git a/src/Bindings/LuaState.cpp b/src/Bindings/LuaState.cpp
index cfa3f70ca..64a818a60 100644
--- a/src/Bindings/LuaState.cpp
+++ b/src/Bindings/LuaState.cpp
@@ -18,7 +18,7 @@ extern "C"
// fwd: SQLite/lsqlite3.c
extern "C"
{
- LUALIB_API int luaopen_lsqlite3(lua_State * L);
+ int luaopen_lsqlite3(lua_State * L);
}
// fwd: LuaExpat/lxplib.c:
@@ -309,7 +309,7 @@ void cLuaState::Push(const AStringVector & a_Vector)
{
ASSERT(IsValid());
- lua_createtable(m_LuaState, a_Vector.size(), 0);
+ lua_createtable(m_LuaState, (int)a_Vector.size(), 0);
int newTable = lua_gettop(m_LuaState);
int index = 1;
for (AStringVector::const_iterator itr = a_Vector.begin(), end = a_Vector.end(); itr != end; ++itr, ++index)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 00c3059b5..88e469b74 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -12,72 +12,81 @@ include_directories (SYSTEM "${PROJECT_SOURCE_DIR}/../lib/jsoncpp/include")
set(FOLDERS OSSupport HTTPServer Bindings Items Blocks Protocol Generating)
set(FOLDERS ${FOLDERS} WorldStorage Mobs Entities Simulator UI BlockEntities)
-if(NOT WIN32)
-foreach(folder ${FOLDERS})
- add_subdirectory(${folder})
-endforeach(folder)
-file(GLOB SOURCE
- "*.cpp"
-)
-else()
+if (NOT WIN32)
+ foreach(folder ${FOLDERS})
+ add_subdirectory(${folder})
+ endforeach(folder)
-function(includefolder PATH)
- FILE(GLOB FOLDER_FILES
- "${PATH}/*.cpp"
- "${PATH}/*.h"
+ file(GLOB SOURCE
+ "*.cpp"
)
- source_group("${PATH}" FILES ${FOLDER_FILES})
-endfunction(includefolder)
+ list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/StackWalker.cpp" "${PROJECT_SOURCE_DIR}/LeakFinder.cpp")
-foreach(folder ${FOLDERS})
- includefolder(${folder})
-endforeach(folder)
+else ()
-file(GLOB_RECURSE SOURCE
- "*.cpp"
- "*.h"
-)
+ function(includefolder PATH)
+ FILE(GLOB FOLDER_FILES
+ "${PATH}/*.cpp"
+ "${PATH}/*.h"
+ )
+ source_group("${PATH}" FILES ${FOLDER_FILES})
+ endfunction(includefolder)
-include_directories("${PROJECT_SOURCE_DIR}")
+ foreach(folder ${FOLDERS})
+ includefolder(${folder})
+ endforeach(folder)
-source_group("" FILES ${SOURCE})
-
-#precompiledheaders
+ file(GLOB_RECURSE SOURCE
+ "*.cpp"
+ "*.h"
+ )
-file(GLOB_RECURSE HEADERS
- "*.h"
-)
+ include_directories("${PROJECT_SOURCE_DIR}")
-foreach(header ${HEADERS})
- set(FLAGS "/Yu ${header} /Yc ${header}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${FLAGS}")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${FLAGS}")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${FLAGS}")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${FLAGS}")
- set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_PROFILE} ${FLAGS}")
- set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE} ${FLAGS}")
-endforeach()
+ source_group("" FILES ${SOURCE})
+ # Precompiled headers (1st part)
+ SET_SOURCE_FILES_PROPERTIES(
+ Globals.cpp PROPERTIES COMPILE_FLAGS "/Yc\"Globals.h\""
+ )
+ # CMake cannot "remove" the precompiled header flags, so we use a dummy precompiled header compatible with just this one file:
+ SET_SOURCE_FILES_PROPERTIES(
+ Bindings/Bindings.cpp PROPERTIES COMPILE_FLAGS "/Yc\"string.h\" /Fp\"$(IntDir)/Bindings.pch\""
+ )
+ SET_SOURCE_FILES_PROPERTIES(
+ "StackWalker.cpp LeakFinder.h" PROPERTIES COMPILE_FLAGS "/Yc\"Globals.h\""
+ )
endif()
-list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/StackWalker.cpp" "${PROJECT_SOURCE_DIR}/LeakFinder.cpp")
-if(UNIX)
+if (UNIX)
set(EXECUTABLE ../MCServer/MCServer)
-else()
+else ()
set(EXECUTABLE MCServer)
-endif()
+endif ()
+
add_executable(${EXECUTABLE} ${SOURCE})
-if(NOT WIN32)
-target_link_libraries(${EXECUTABLE} OSSupport HTTPServer Bindings Items Blocks)
-target_link_libraries(${EXECUTABLE} Protocol Generating WorldStorage)
-target_link_libraries(${EXECUTABLE} Mobs Entities Simulator UI BlockEntities)
+
+# Precompiled headers (2nd part)
+if (WIN32)
+ SET_TARGET_PROPERTIES(
+ ${EXECUTABLE} PROPERTIES COMPILE_FLAGS "/Yu\"Globals.h\""
+ OBJECT_DEPENDS "$(IntDir)/$(TargetName.pch)"
+ )
+endif ()
+
+
+if (NOT WIN32)
+ target_link_libraries(${EXECUTABLE} OSSupport HTTPServer Bindings Items Blocks)
+ target_link_libraries(${EXECUTABLE} Protocol Generating WorldStorage)
+ target_link_libraries(${EXECUTABLE} Mobs Entities Simulator UI BlockEntities)
+endif ()
+if (WIN32)
+ target_link_libraries(${EXECUTABLE} expat tolualib ws2_32.lib Psapi.lib)
endif()
-target_link_libraries(${EXECUTABLE} md5 luaexpat iniFile jsoncpp cryptopp zlib lua)
+target_link_libraries(${EXECUTABLE} md5 luaexpat iniFile jsoncpp cryptopp zlib lua sqlite)
diff --git a/src/LeakFinder.cpp b/src/LeakFinder.cpp
index 0f84adb2b..9d7f185ba 100644
--- a/src/LeakFinder.cpp
+++ b/src/LeakFinder.cpp
@@ -95,15 +95,11 @@
*
**********************************************************************/
-#include <windows.h>
-#include <objidl.h> // Needed if compiled with "WIN32_LEAN_AND_MEAN"
+#include "Globals.h"
+
#include <tchar.h>
+#include <objidl.h> // Needed if compiled with "WIN32_LEAN_AND_MEAN"
#include <crtdbg.h>
-#include <stdio.h>
-
-#include <string>
-#include <vector>
-
#include "LeakFinder.h"
@@ -463,11 +459,11 @@ public:
pHashEntry->nDataSize = nDataSize;
pHashEntry->Next = NULL;
#ifdef _M_IX86
- pHashEntry->pCallstackOffset = (LPVOID) min(context.Ebp, context.Esp);
+ pHashEntry->pCallstackOffset = (LPVOID) std::min(context.Ebp, context.Esp);
#elif _M_X64
- pHashEntry->pCallstackOffset = (LPVOID) min(context.Rdi, context.Rsp);
+ pHashEntry->pCallstackOffset = (LPVOID) std::min(context.Rdi, context.Rsp);
#elif _M_IA64
- pHashEntry->pCallstackOffset = (LPVOID) min(context.IntSp, context.RsBSP);
+ pHashEntry->pCallstackOffset = (LPVOID) std::min(context.IntSp, context.RsBSP);
#else
#error "Platform not supported!"
#endif
@@ -490,7 +486,7 @@ public:
if (pHashEntry->nMaxStackSize > 0)
{
SIZE_T len = ((SIZE_T) pHashEntry->pStackBaseAddr + pHashEntry->nMaxStackSize) - (SIZE_T)pHashEntry->pCallstackOffset;
- bytesToRead = min(len, MAX_CALLSTACK_LEN_BUF);
+ bytesToRead = std::min(len, (SIZE_T)MAX_CALLSTACK_LEN_BUF);
}
// Now read the callstack:
if (ReadProcessMemory(GetCurrentProcess(), (LPCVOID) pHashEntry->pCallstackOffset, &(pHashEntry->pcCallstackAddr), bytesToRead, &(pHashEntry->nCallstackLen)) == 0)
diff --git a/src/StackWalker.cpp b/src/StackWalker.cpp
index bf18b9fc9..b4f8ed8c7 100644
--- a/src/StackWalker.cpp
+++ b/src/StackWalker.cpp
@@ -73,10 +73,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
**********************************************************************/
-#include <windows.h>
+
+#include "Globals.h"
+
#include <tchar.h>
-#include <stdio.h>
-#include <stdlib.h>
#pragma comment(lib, "version.lib") // for "VerQueryValue"
#pragma warning(disable:4826)