From fb46ad5c75f8536db6f47f3ac4f099ca6604695f Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Thu, 26 Dec 2013 14:53:03 +0100 Subject: Added cmake output folders (VC2008) to gitignore. --- .gitignore | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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/ -- cgit v1.2.3 From 2560fb40c60268b1fd4f48e82301cc6aed3f90f1 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Thu, 26 Dec 2013 14:54:46 +0100 Subject: Added proper precompiled headers for MSVC. --- src/CMakeLists.txt | 95 +++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 00c3059b5..107ca60dd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,72 +12,71 @@ 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(PrecompiledBinary "$(IntDir)/Globals.pch") + SET_SOURCE_FILES_PROPERTIES( + Globals.cpp PROPERTIES COMPILE_FLAGS "/Yc\"Globals.h\" /Fp\"${PrecompiledBinary}\"" + ) 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) -endif() + +if (WIN32) + SET_TARGET_PROPERTIES( + ${EXECUTABLE} PROPERTIES COMPILE_FLAGS "/Yu\"Globals.h\" /FI\"${PrecompiledBinary}\" /Fp\"${PrecompiledBinary}\"" + OBJECT_DEPENDS "${PrecompiledBinary}" + ) +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 () target_link_libraries(${EXECUTABLE} md5 luaexpat iniFile jsoncpp cryptopp zlib lua) -- cgit v1.2.3 From 1cf6502be23ff78e07a96b906738c97805120ca0 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Fri, 27 Dec 2013 11:51:08 +0100 Subject: Made cmake compilation possible on Windows. --- CMakeLists.txt | 14 +++++++++----- lib/expat/CMakeLists.txt | 9 +++++++-- lib/lua/CMakeLists.txt | 21 ++++++++++++++++----- lib/sqlite/CMakeLists.txt | 15 +++++++++++++-- src/Bindings/LuaState.cpp | 4 ++-- src/CMakeLists.txt | 20 +++++++++++++++----- src/LeakFinder.cpp | 18 +++++++----------- src/StackWalker.cpp | 6 +++--- 8 files changed, 72 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17eee02bb..fa3658583 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,7 +83,8 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_definitions(-DCRYPTOPP_DISABLE_ASM) endif() -add_definitions(-DLUA_USE_DLOPEN) +add_definitions(-DLUA_BUILD_AS_DLL) +add_definitions(-DXML_STATIC) add_subdirectory(lib/inifile/) add_subdirectory(lib/jsoncpp/) @@ -106,10 +107,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..81d019f00 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(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 107ca60dd..88e469b74 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -49,9 +49,15 @@ else () source_group("" FILES ${SOURCE}) # Precompiled headers (1st part) - SET(PrecompiledBinary "$(IntDir)/Globals.pch") SET_SOURCE_FILES_PROPERTIES( - Globals.cpp PROPERTIES COMPILE_FLAGS "/Yc\"Globals.h\" /Fp\"${PrecompiledBinary}\"" + 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() @@ -66,10 +72,11 @@ endif () add_executable(${EXECUTABLE} ${SOURCE}) +# Precompiled headers (2nd part) if (WIN32) SET_TARGET_PROPERTIES( - ${EXECUTABLE} PROPERTIES COMPILE_FLAGS "/Yu\"Globals.h\" /FI\"${PrecompiledBinary}\" /Fp\"${PrecompiledBinary}\"" - OBJECT_DEPENDS "${PrecompiledBinary}" + ${EXECUTABLE} PROPERTIES COMPILE_FLAGS "/Yu\"Globals.h\"" + OBJECT_DEPENDS "$(IntDir)/$(TargetName.pch)" ) endif () @@ -79,4 +86,7 @@ if (NOT WIN32) target_link_libraries(${EXECUTABLE} Protocol Generating WorldStorage) target_link_libraries(${EXECUTABLE} Mobs Entities Simulator UI BlockEntities) endif () -target_link_libraries(${EXECUTABLE} md5 luaexpat iniFile jsoncpp cryptopp zlib lua) +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 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 -#include // Needed if compiled with "WIN32_LEAN_AND_MEAN" +#include "Globals.h" + #include +#include // Needed if compiled with "WIN32_LEAN_AND_MEAN" #include -#include - -#include -#include - #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 + +#include "Globals.h" + #include -#include -#include #pragma comment(lib, "version.lib") // for "VerQueryValue" #pragma warning(disable:4826) -- cgit v1.2.3 From 66f9fcbb693a929ff35788fede05980cb8bf6cdb Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Fri, 27 Dec 2013 11:56:39 +0100 Subject: Fixed unix Lua dependencies. --- lib/lua/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lua/CMakeLists.txt b/lib/lua/CMakeLists.txt index 81d019f00..63ac18e90 100644 --- a/lib/lua/CMakeLists.txt +++ b/lib/lua/CMakeLists.txt @@ -26,5 +26,5 @@ else() endif() if (UNIX) - target_link_libraries(m dl) + target_link_libraries(lua m dl) endif() -- cgit v1.2.3 From f5c013071eeec698d36971403b19ed39bfa02ffc Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Fri, 27 Dec 2013 12:01:45 +0100 Subject: Lua is built statically on *nix. --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa3658583..0df702b29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,7 +83,12 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_definitions(-DCRYPTOPP_DISABLE_ASM) endif() -add_definitions(-DLUA_BUILD_AS_DLL) +# 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/) -- cgit v1.2.3