blob: 3ca1f2c33958ed8854a5ea648cabc07bb452e284 (
plain) (
tree)
|
|
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(PhysFS REQUIRED)
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(SigC++ REQUIRED)
IF (CMAKE_COMPILER_IS_GNUCXX)
# Help getting compilation warnings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
IF (WIN32)
# This includes enough debug information to get something useful
# from Dr. Mingw while keeping binary size down. Almost useless
# with gdb, though.
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb0 -gstabs2")
ENDIF()
ENDIF()
IF (POLICY CMP0015)
CMAKE_POLICY(SET CMP0015 OLD)
ENDIF()
IF (ENABLE_EXTERNAL_ENET)
INCLUDE_DIRECTORIES(${ENet_INCLUDE_DIR})
SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${ENet_LIBRARY})
ELSE (ENABLE_EXTERNAL_ENET)
INCLUDE_DIRECTORIES("../libs/enet/include")
LINK_DIRECTORIES("../libs/enet")
SET(INTERNAL_LIBRARIES enet)
ENDIF (ENABLE_EXTERNAL_ENET)
# enable rc-handling with mingw
# most likely this part can be kicked out with some later cmake version
IF (MINGW)
FIND_PATH(MINGW_INCLUDE_DIR windows.h $ENV{INCLUDE})
IF (MINGW_INCLUDE_DIR)
MESSAGE(STATUS "Found mingw headers: ${MINGW_INCLUDE_DIR}")
INCLUDE_DIRECTORIES(${MINGW_INCLUDE_DIR})
ELSE()
MESSAGE(FATAL_ERROR "Unable to find mingw headers. Required for windres")
ENDIF()
SET(CMAKE_RC_COMPILER_INIT windres)
ENABLE_LANGUAGE(RC)
SET(CMAKE_RC_COMPILE_OBJECT
"<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -O coff -o <OBJECT> <SOURCE>")
ENDIF()
SET(FLAGS "${FLAGS} -DPACKAGE_VERSION=\\\"${VERSION}\\\"")
SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"")
SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"")
SET(FLAGS "${FLAGS} -std=c++0x")
SET(FLAGS "${FLAGS} -Woverloaded-virtual")
# Prevent clashes with icu namespace
SET(FLAGS "${FLAGS} -DU_USING_ICU_NAMESPACE=0")
# If the Sqlite option is enabled...
IF (WITH_SQLITE)
FIND_PACKAGE(Sqlite3 REQUIRED)
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
SET(FLAGS "${FLAGS} -DSQLITE_SUPPORT")
SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${SQLITE3_LIBRARIES})
ENDIF(WITH_SQLITE)
# If the MySQL option is enabled...
IF (WITH_MYSQL)
FIND_PACKAGE(MySQL REQUIRED)
INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIR})
SET(FLAGS "${FLAGS} -DMYSQL_SUPPORT")
SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${MYSQL_LIBRARIES})
ENDIF()
# If the postgreSQL option is enabled...
IF (WITH_POSTGRESQL)
FIND_PACKAGE(PostgreSQL REQUIRED)
INCLUDE_DIRECTORIES(${POSTGRESQL_INCLUDE_DIR})
SET(FLAGS "${FLAGS} -DPOSTGRESQL_SUPPORT")
SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${POSTGRESQL_LIBRARIES})
ENDIF()
# If the Lua scripting language support is enabled...
IF (ENABLE_LUA)
FIND_PACKAGE(Lua51 REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
SET(FLAGS "${FLAGS} -DBUILD_LUA")
SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${LUA_LIBRARIES})
ENDIF()
IF (CMAKE_BUILD_TYPE)
STRING(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
IF(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug OR
CMAKE_BUILD_TYPE_TOLOWER MATCHES relwithdebinfo)
SET(FLAGS "${FLAGS} -DDEBUG")
ENDIF()
ENDIF()
IF (WIN32)
SET(EXTRA_LIBRARIES ws2_32 winmm)
# GDI APIs Rectangle clashes with tmwserv classes
SET(FLAGS "${FLAGS} -DNOGDI")
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL SunOS)
# explicit linking to libintl is required on Solaris
SET(EXTRA_LIBRARIES intl)
ENDIF()
INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_SOURCE_DIR}
${PHYSFS_INCLUDE_DIR}
${LIBXML2_INCLUDE_DIR}
${SIGC++_INCLUDE_DIR}
${SIGC++Config_INCLUDE_DIR}
)
# Fix some stuff that gets not hidden by mainline modules
MARK_AS_ADVANCED(PHYSFS_INCLUDE_DIR)
MARK_AS_ADVANCED(PHYSFS_LIBRARY)
SET(SRCS
common/configuration.h
common/configuration.cpp
common/defines.h
common/inventorydata.h
common/manaserv_protocol.h
common/resourcemanager.h
common/resourcemanager.cpp
net/bandwidth.h
net/bandwidth.cpp
net/connection.h
net/connection.cpp
net/connectionhandler.h
net/connectionhandler.cpp
net/messagein.h
net/messagein.cpp
net/messageout.h
net/messageout.cpp
net/netcomputer.h
net/netcomputer.cpp
utils/logger.h
utils/logger.cpp
utils/point.h
utils/processorutils.h
utils/processorutils.cpp
utils/string.h
utils/string.cpp
utils/stringfilter.h
utils/stringfilter.cpp
utils/timer.h
utils/timer.cpp
utils/tokencollector.h
utils/tokencollector.cpp
utils/tokendispenser.h
utils/tokendispenser.cpp
utils/xml.h
utils/xml.cpp
)
SET(SRCS_MANASERVACCOUNT
account-server/main-account.cpp
account-server/account.h
account-server/account.cpp
account-server/accountclient.h
account-server/accountclient.cpp
account-server/accounthandler.h
account-server/accounthandler.cpp
account-server/character.h
account-server/character.cpp
account-server/flooritem.h
account-server/mapmanager.h
account-server/mapmanager.cpp
account-server/serverhandler.h
account-server/serverhandler.cpp
account-server/storage.h
account-server/storage.cpp
chat-server/chathandler.h
chat-server/chathandler.cpp
chat-server/chatclient.h
chat-server/chatchannel.h
chat-server/chatchannel.cpp
chat-server/chatchannelmanager.h
chat-server/chatchannelmanager.cpp
chat-server/guild.h
chat-server/guild.cpp
chat-server/guildhandler.cpp
chat-server/guildmanager.h
chat-server/guildmanager.cpp
chat-server/party.cpp
chat-server/party.h
chat-server/partyhandler.cpp
chat-server/post.cpp
chat-server/post.h
dal/dalexcept.h
dal/dataprovider.h
dal/dataprovider.cpp
dal/dataproviderfactory.h
dal/dataproviderfactory.cpp
dal/recordset.h
dal/recordset.cpp
utils/functors.h
utils/sha256.h
utils/sha256.cpp
utils/throwerror.h
utils/time.h
)
SET(SRCS_MANASERVGAME
game-server/main-game.cpp
common/permissionmanager.h
common/permissionmanager.cpp
game-server/abilitycomponent.cpp
game-server/abilitycomponent.h
game-server/abilitymanager.cpp
game-server/abilitymanager.h
game-server/accountconnection.h
game-server/accountconnection.cpp
game-server/actorcomponent.h
game-server/actorcomponent.cpp
game-server/attribute.h
game-server/attribute.cpp
game-server/attributemanager.h
game-server/attributemanager.cpp
game-server/being.h
game-server/being.cpp
game-server/buysell.h
game-server/buysell.cpp
game-server/charactercomponent.h
game-server/charactercomponent.cpp
game-server/collisiondetection.h
game-server/collisiondetection.cpp
game-server/commandhandler.cpp
game-server/commandhandler.h
game-server/component.h
game-server/effect.h
game-server/effect.cpp
game-server/emotemanager.h
game-server/emotemanager.cpp
game-server/entity.h
game-server/entity.cpp
game-server/gamehandler.h
game-server/gamehandler.cpp
game-server/inventory.h
game-server/inventory.cpp
game-server/item.h
game-server/item.cpp
game-server/itemmanager.h
game-server/itemmanager.cpp
game-server/map.h
game-server/map.cpp
game-server/mapcomposite.h
game-server/mapcomposite.cpp
game-server/mapmanager.h
game-server/mapmanager.cpp
game-server/mapreader.h
game-server/mapreader.cpp
game-server/monster.h
game-server/monster.cpp
game-server/monstermanager.h
game-server/monstermanager.cpp
game-server/npc.h
game-server/npc.cpp
game-server/postman.h
game-server/quest.h
game-server/quest.cpp
game-server/settingsmanager.h
game-server/settingsmanager.cpp
game-server/spawnareacomponent.h
game-server/spawnareacomponent.cpp
game-server/state.h
game-server/state.cpp
game-server/statuseffect.h
game-server/statuseffect.cpp
game-server/statusmanager.h
game-server/statusmanager.cpp
game-server/timeout.h
game-server/timeout.cpp
game-server/trade.h
game-server/trade.cpp
game-server/triggerareacomponent.h
game-server/triggerareacomponent.cpp
scripting/script.h
scripting/script.cpp
scripting/scriptmanager.h
scripting/scriptmanager.cpp
utils/base64.h
utils/base64.cpp
utils/mathutils.h
utils/mathutils.cpp
utils/speedconv.h
utils/speedconv.cpp
utils/zlib.h
utils/zlib.cpp
)
IF (WIN32)
SET(SRCS_MANASERVACCOUNT ${SRCS_MANASERVACCOUNT} manaserv-account.rc)
SET(SRCS_MANASERVGAME ${SRCS_MANASERVGAME} manaserv-game.rc)
ENDIF ()
IF (WITH_MYSQL)
SET(SRCS_MANASERVACCOUNT ${SRCS_MANASERVACCOUNT}
dal/mysqldataprovider.h
dal/mysqldataprovider.cpp)
ENDIF()
IF (WITH_POSTGRESQL)
SET(SRCS_MANASERVACCOUNT ${SRCS_MANASERVACCOUNT}
dal/pqdataprovider.h
dal/pqdataprovider.cpp)
ENDIF()
IF (WITH_SQLITE)
SET(SRCS_MANASERVACCOUNT ${SRCS_MANASERVACCOUNT}
dal/sqlitedataprovider.h
dal/sqlitedataprovider.cpp)
ENDIF()
IF (ENABLE_LUA)
SET(SRCS_MANASERVGAME ${SRCS_MANASERVGAME}
scripting/lua.cpp
scripting/luascript.cpp
scripting/luascript.h
scripting/luautil.cpp
scripting/luautil.h)
ENDIF()
SET (PROGRAMS manaserv-account manaserv-game)
ADD_EXECUTABLE(manaserv-game WIN32 ${SRCS} ${SRCS_MANASERVGAME})
ADD_EXECUTABLE(manaserv-account WIN32 ${SRCS} ${SRCS_MANASERVACCOUNT})
FOREACH(program ${PROGRAMS})
TARGET_LINK_LIBRARIES(${program} ${INTERNAL_LIBRARIES}
${PHYSFS_LIBRARY}
${LIBXML2_LIBRARIES}
${ZLIB_LIBRARIES}
${SIGC++_LIBRARIES}
${OPTIONAL_LIBRARIES}
${EXTRA_LIBRARIES})
INSTALL(TARGETS ${program} RUNTIME DESTINATION ${PKG_BINDIR})
ENDFOREACH(program)
IF (CMAKE_SYSTEM_NAME STREQUAL SunOS)
# we expect the SMCgtxt package to be present on Solaris;
# the Solaris gettext is not API-compatible to GNU gettext
SET_TARGET_PROPERTIES(manaserv-account PROPERTIES LINK_FLAGS "-L/usr/local/lib")
SET_TARGET_PROPERTIES(manaserv-game PROPERTIES LINK_FLAGS "-L/usr/local/lib")
ENDIF()
SET_TARGET_PROPERTIES(manaserv-account PROPERTIES COMPILE_FLAGS "${FLAGS}")
SET_TARGET_PROPERTIES(manaserv-game PROPERTIES COMPILE_FLAGS "${FLAGS}")
|