summaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/CMakeLists.txt356
1 files changed, 210 insertions, 146 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9fbaed926..29337cb2e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,120 +1,154 @@
cmake_minimum_required (VERSION 2.8.2)
project (MCServer)
-include_directories (SYSTEM "${PROJECT_SOURCE_DIR}/../lib/")
-include_directories (SYSTEM "${PROJECT_SOURCE_DIR}/../lib/jsoncpp/include")
-include_directories (SYSTEM "${PROJECT_SOURCE_DIR}/../lib/polarssl/include")
+include_directories (SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/../lib/")
+include_directories (SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/../lib/jsoncpp/include")
+include_directories (SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/../lib/polarssl/include")
-set(FOLDERS OSSupport HTTPServer Items Blocks Protocol Generating)
-set(FOLDERS ${FOLDERS} WorldStorage Mobs Entities Simulator UI BlockEntities Generating/Prefabs)
+set(FOLDERS
+ OSSupport HTTPServer Items Blocks Protocol Generating PolarSSL++ Bindings
+ WorldStorage Mobs Entities Simulator UI BlockEntities Generating/Prefabs
+)
+SET (SRCS
+ BiomeDef.cpp
+ BlockArea.cpp
+ BlockID.cpp
+ BlockInfo.cpp
+ BoundingBox.cpp
+ ByteBuffer.cpp
+ ChatColor.cpp
+ Chunk.cpp
+ ChunkData.cpp
+ ChunkMap.cpp
+ ChunkSender.cpp
+ ChunkStay.cpp
+ ClientHandle.cpp
+ CommandOutput.cpp
+ CompositeChat.cpp
+ CraftingRecipes.cpp
+ Cuboid.cpp
+ DeadlockDetect.cpp
+ Enchantments.cpp
+ FastRandom.cpp
+ FurnaceRecipe.cpp
+ Globals.cpp
+ Group.cpp
+ GroupManager.cpp
+ Inventory.cpp
+ Item.cpp
+ ItemGrid.cpp
+ LightingThread.cpp
+ LineBlockTracer.cpp
+ LinearInterpolation.cpp
+ Log.cpp
+ MCLogger.cpp
+ Map.cpp
+ MapManager.cpp
+ MobCensus.cpp
+ MobFamilyCollecter.cpp
+ MobProximityCounter.cpp
+ MobSpawner.cpp
+ MonsterConfig.cpp
+ Noise.cpp
+ ProbabDistrib.cpp
+ RCONServer.cpp
+ Root.cpp
+ Scoreboard.cpp
+ Server.cpp
+ SetChunkData.cpp
+ Statistics.cpp
+ StringCompression.cpp
+ StringUtils.cpp
+ Tracer.cpp
+ VoronoiMap.cpp
+ WebAdmin.cpp
+ World.cpp
+ main.cpp)
+
+SET (HDRS
+ AllocationPool.h
+ BiomeDef.h
+ BlockArea.h
+ BlockID.h
+ BlockInServerPluginInterface.h
+ BlockInfo.h
+ BlockTracer.h
+ BoundingBox.h
+ ByteBuffer.h
+ ChatColor.h
+ Chunk.h
+ ChunkData.h
+ ChunkDataCallback.h
+ ChunkDef.h
+ ChunkMap.h
+ ChunkSender.h
+ ChunkStay.h
+ ClientHandle.h
+ CommandOutput.h
+ CompositeChat.h
+ CraftingRecipes.h
+ Cuboid.h
+ DeadlockDetect.h
+ Defines.h
+ Enchantments.h
+ Endianness.h
+ FastRandom.h
+ ForEachChunkProvider.h
+ FurnaceRecipe.h
+ Globals.h
+ Group.h
+ GroupManager.h
+ Inventory.h
+ Item.h
+ ItemGrid.h
+ LeakFinder.h
+ LightingThread.h
+ LineBlockTracer.h
+ LinearInterpolation.h
+ LinearUpscale.h
+ Log.h
+ MCLogger.h
+ Map.h
+ MapManager.h
+ Matrix4.h
+ MemoryLeak.h
+ MersenneTwister.h
+ MobCensus.h
+ MobFamilyCollecter.h
+ MobProximityCounter.h
+ MobSpawner.h
+ MonsterConfig.h
+ Noise.h
+ ProbabDistrib.h
+ RCONServer.h
+ Root.h
+ Scoreboard.h
+ Server.h
+ SetChunkData.h
+ StackWalker.h
+ Statistics.h
+ StringCompression.h
+ StringUtils.h
+ Tracer.h
+ Vector3.h
+ VoronoiMap.h
+ WebAdmin.h
+ World.h
+ XMLParser.h)
+
+include_directories(".")
if (NOT MSVC)
-
# Bindings need to reference other folders, so they are done here instead
-
# lib dependencies are not included
-
- set(BINDING_DEPENDECIES
- tolua
- ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/virtual_method_hooks.lua
- ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/AllToLua.pkg
- Bindings/LuaFunctions.h
- Bindings/LuaWindow.h
- Bindings/Plugin.h
- Bindings/PluginLua.h
- Bindings/PluginManager.h
- Bindings/WebPlugin.h
- BiomeDef.h
- BlockArea.h
- BlockEntities/BlockEntity.h
- BlockEntities/BlockEntityWithItems.h
- BlockEntities/ChestEntity.h
- BlockEntities/DispenserEntity.h
- BlockEntities/DropSpenserEntity.h
- BlockEntities/DropperEntity.h
- BlockEntities/FurnaceEntity.h
- BlockEntities/HopperEntity.h
- BlockEntities/JukeboxEntity.h
- BlockEntities/NoteEntity.h
- BlockEntities/SignEntity.h
- BlockEntities/MobHeadEntity.h
- BlockEntities/FlowerPotEntity.h
- BlockID.h
- BoundingBox.h
- ChatColor.h
- ChunkDef.h
- ClientHandle.h
- CraftingRecipes.h
- Cuboid.h
- Defines.h
- Enchantments.h
- Entities/Effects.h
- Entities/Entity.h
- Entities/Floater.h
- Entities/Pawn.h
- Entities/Painting.h
- Entities/Pickup.h
- Entities/Player.h
- Entities/ProjectileEntity.h
- Entities/ArrowEntity.h
- Entities/ThrownEggEntity.h
- Entities/ThrownEnderPearlEntity.h
- Entities/ExpBottleEntity.h
- Entities/ThrownSnowballEntity.h
- Entities/FireChargeEntity.h
- Entities/FireworkEntity.h
- Entities/GhastFireballEntity.h
- Entities/TNTEntity.h
- Entities/ExpOrb.h
- Entities/HangingEntity.h
- Entities/ItemFrame.h
- Generating/ChunkDesc.h
- Group.h
- Inventory.h
- Item.h
- ItemGrid.h
- Mobs/Monster.h
- OSSupport/File.h
- Root.h
- Server.h
- StringUtils.h
- Tracer.h
- UI/Window.h
- Vector3.h
- WebAdmin.h
- World.h
- )
-
- include_directories(Bindings)
- include_directories(.)
-
- ADD_CUSTOM_COMMAND(
- # add any new generated bindings here
- OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/Bindings.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/Bindings.h
-
- # command execuded to regerate bindings
- COMMAND tolua -L virtual_method_hooks.lua -o Bindings.cpp -H Bindings.h AllToLua.pkg
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/
-
- # add any new generation dependencies here
- DEPENDS ${BINDING_DEPENDECIES}
- )
- #add cpp files here
- add_library(Bindings
- Bindings/Bindings
- Bindings/DeprecatedBindings
- Bindings/LuaChunkStay
- Bindings/LuaState
- Bindings/LuaWindow
- Bindings/ManualBindings
- Bindings/Plugin
- Bindings/PluginLua
- Bindings/PluginManager
- Bindings/WebPlugin
- )
+ include_directories ("${CMAKE_CURRENT_SOURCE_DIR}/../lib/polarssl/include")
+
+ foreach(folder ${FOLDERS})
+ add_subdirectory(${folder})
+ endforeach(folder)
- target_link_libraries(Bindings lua sqlite tolualib)
+ get_directory_property(BINDING_DEPENDENCIES DIRECTORY "Bindings" DEFINITION BINDING_DEPENDENCIES)
#clear file
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/BindingDependecies.txt)
@@ -125,50 +159,19 @@ if (NOT MSVC)
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "Bindings.cpp Bindings.h")
- foreach(folder ${FOLDERS})
- add_subdirectory(${folder})
- endforeach(folder)
-
- file(GLOB SOURCE
- "*.cpp"
- "*.h"
- )
-
- list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/StackWalker.cpp" "${PROJECT_SOURCE_DIR}/LeakFinder.cpp")
+ list(APPEND SOURCE "${SRCS}")
+ list(APPEND SOURCE "${HDRS}")
# If building a windows version, but not using MSVC, add the resources directly to the makefile:
if (WIN32)
- FILE(GLOB ResourceFiles
- "Resources/*.rc"
- )
- list(APPEND SOURCE "${ResourceFiles}")
+ list(APPEND SOURCE "Resources/MCServer.rc")
endif()
-
-
else ()
# MSVC-specific handling: Put all files into one project, separate by the folders:
- # Generate the Bindings if they don't exist:
- if (NOT EXISTS "${PROJECT_SOURCE_DIR}/Bindings/Bindings.cpp")
- message("Bindings.cpp not found, generating now")
- set(tolua_executable ${PROJECT_SOURCE_DIR}/Bindings/tolua++.exe)
- execute_process(
- COMMAND ${tolua_executable} -L virtual_method_hooks.lua -o Bindings.cpp -H Bindings.h AllToLua.pkg
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/Bindings
- )
- endif()
-
- # Get all files in this folder:
- file(GLOB_RECURSE SOURCE
- "*.cpp"
- "*.h"
- "*.pkg"
- )
- source_group("" FILES ${SOURCE})
+ source_group(Bindings FILES "Bindings/Bindings.cpp" "Bindings/Bindings.h")
# Add all subfolders as solution-folders:
- list(APPEND FOLDERS "Resources")
- list(APPEND FOLDERS "Bindings")
function(includefolder PATH)
FILE(GLOB FOLDER_FILES
"${PATH}/*.cpp"
@@ -181,9 +184,29 @@ else ()
endfunction(includefolder)
foreach(folder ${FOLDERS})
+ add_subdirectory(${folder})
includefolder(${folder})
+
+ # Get all source files in this folder:
+ get_directory_property(FOLDER_SRCS DIRECTORY ${folder} DEFINITION SRCS)
+ foreach (src ${FOLDER_SRCS})
+ list(APPEND SOURCE "${folder}/${src}")
+ endforeach(src)
+
+ # Get all headers in this folder:
+ get_directory_property(FOLDER_HDRS DIRECTORY ${folder} DEFINITION HDRS)
+ foreach (hdr ${FOLDER_HDRS})
+ list(APPEND SOURCE "${folder}/${hdr}")
+ endforeach(hdr)
endforeach(folder)
+ list(APPEND SOURCE "${SRCS}")
+ list(APPEND SOURCE "${HDRS}")
+ list(APPEND SOURCE "Bindings/AllToLua.pkg")
+
+ includefolder("Resources")
+ source_group("" FILES ${SOURCE})
+
include_directories("${PROJECT_SOURCE_DIR}")
# Precompiled headers (1st part)
@@ -207,8 +230,47 @@ else ()
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DEBUG")
endif()
+
+# Generate a list of all source files:
+set(ALLFILES "")
+foreach(folder ${FOLDERS})
+ get_directory_property(FOLDER_SRCS DIRECTORY ${folder} DEFINITION SRCS)
+ foreach (src ${FOLDER_SRCS})
+ list(APPEND ALLFILES "${folder}/${src}")
+ endforeach(src)
+
+ get_directory_property(FOLDER_HDRS DIRECTORY ${folder} DEFINITION HDRS)
+ foreach (hdr ${FOLDER_HDRS})
+ list(APPEND ALLFILES "${folder}/${hdr}")
+ endforeach(hdr)
+endforeach(folder)
+foreach(arg ${ALLFILES})
+ set(ALLFILESLINES "${ALLFILESLINES}${arg}\n")
+endforeach()
+FILE(WRITE "AllFiles.lst" "${ALLFILESLINES}")
+
+
set(EXECUTABLE MCServer)
+if (MSVC)
+ get_directory_property(BINDING_OUTPUTS DIRECTORY "Bindings" DEFINITION BINDING_OUTPUTS)
+ get_directory_property(BINDING_DEPENDENCIES DIRECTORY "Bindings" DEFINITION BINDING_DEPENDENCIES)
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${BINDING_OUTPUTS}
+
+ # Copy the Lua DLL into the Bindings folder, so that tolua can run from there:
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/MCServer/lua51.dll ./lua51.dll
+
+ # Regenerate bindings:
+ COMMAND tolua -L virtual_method_hooks.lua -o Bindings.cpp -H Bindings.h AllToLua.pkg
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Bindings/
+
+ # add any new generation dependencies here
+ DEPENDS ${BINDING_DEPENDENCIES}
+ )
+endif()
+
add_executable(${EXECUTABLE} ${SOURCE})
@@ -240,11 +302,13 @@ endif ()
if (NOT MSVC)
- target_link_libraries(${EXECUTABLE} OSSupport HTTPServer Bindings Items Blocks)
- target_link_libraries(${EXECUTABLE} Protocol Generating Generating_Prefabs WorldStorage)
- target_link_libraries(${EXECUTABLE} Mobs Entities Simulator UI BlockEntities)
+ target_link_libraries(${EXECUTABLE}
+ OSSupport HTTPServer Bindings Items Blocks
+ Protocol Generating Generating_Prefabs WorldStorage
+ Mobs Entities Simulator UI BlockEntities PolarSSL++
+ )
endif ()
if (WIN32)
target_link_libraries(${EXECUTABLE} expat tolualib ws2_32.lib Psapi.lib)
endif()
-target_link_libraries(${EXECUTABLE} md5 luaexpat iniFile jsoncpp polarssl zlib lua sqlite)
+target_link_libraries(${EXECUTABLE} luaexpat iniFile jsoncpp polarssl zlib sqlite lua)