diff options
-rw-r--r-- | CMakeLists.txt | 113 | ||||
-rw-r--r-- | scripts/CMakeLists.txt | 2 | ||||
-rw-r--r-- | scripts/lua/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/CMakeLists.txt | 292 |
4 files changed, 200 insertions, 215 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 218bdd37..3254a7b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,63 +1,64 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -CMAKE_POLICY(VERSION 2.6) +cmake_minimum_required(VERSION 2.6) +cmake_policy(VERSION 2.6) -PROJECT(MANASERV) +project(MANASERV) -IF (NOT VERSION) - SET(VERSION 0.1.0.0) -ENDIF() +if(NOT VERSION) + set(VERSION 0.1.0.0) +endif() # where to look for cmake modules -SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules) +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules) -OPTION(WITH_SQLITE "Enable Sqlite support (used by default)" ON) -OPTION(WITH_MYSQL "Enable MySQL support" OFF) -OPTION(ENABLE_LUA "Enable Lua scripting support" ON) -OPTION(ENABLE_EXTERNAL_ENET "Enable external ENet support" OFF) +option(WITH_SQLITE "Enable Sqlite support (used by default)" ON) +option(WITH_MYSQL "Enable MySQL support" OFF) +option(ENABLE_LUA "Enable Lua scripting support" ON) +option(ENABLE_EXTERNAL_ENET "Enable external ENet support" OFF) # Exclude Sqlite support if the MySQL support was asked. -IF(WITH_MYSQL) - SET(WITH_SQLITE OFF) - SET(WITH_POSTGRESQL OFF) -ENDIF() - -IF(WITH_POSTGRESQL) - MESSAGE(STATUS "Warning: PostgreSQL support will likely not work...") - SET(WITH_SQLITE OFF) - SET(WITH_MYSQL OFF) -ENDIF() - -IF(WITH_SQLITE) - SET(WITH_MYSQL OFF) - SET(WITH_POSTGRESQL OFF) -ENDIF() - -IF (WIN32) - SET(PKG_DATADIR ".") - SET(PKG_BINDIR ".") - SET(LOCALEDIR ".") - STRING(REPLACE "." " " _VERSION ${VERSION}) - SEPARATE_ARGUMENTS(_VERSION) - LIST(LENGTH _VERSION _LEN) - IF(NOT _LEN EQUAL 4) - MESSAGE(FATAL_ERROR "Version needs to be in the form MAJOR.MINOR.RELEASE.BUILD") - ENDIF() - LIST(GET _VERSION 0 VER_MAJOR) - LIST(GET _VERSION 1 VER_MINOR) - LIST(GET _VERSION 2 VER_RELEASE) - LIST(GET _VERSION 3 VER_BUILD) - CONFIGURE_FILE(src/common/winver.h.in src/common/winver.h) -ELSE (WIN32) - SET(PKG_DATADIR ${CMAKE_INSTALL_PREFIX}/share/manaserv) - SET(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale) - SET(PKG_BINDIR ${CMAKE_INSTALL_PREFIX}/bin) -ENDIF (WIN32) - -IF (ENABLE_EXTERNAL_ENET) - FIND_PACKAGE(ENet) -ELSE (ENABLE_EXTERNAL_ENET) - ADD_SUBDIRECTORY(libs/enet) -ENDIF (ENABLE_EXTERNAL_ENET) - -ADD_SUBDIRECTORY(scripts) -ADD_SUBDIRECTORY(src) +if(WITH_MYSQL) + set(WITH_SQLITE OFF) + set(WITH_POSTGRESQL OFF) +endif() + +if(WITH_POSTGRESQL) + message(STATUS "Warning: PostgreSQL support will likely not work...") + set(WITH_SQLITE OFF) + set(WITH_MYSQL OFF) +endif() + +if(WITH_SQLITE) + set(WITH_MYSQL OFF) + set(WITH_POSTGRESQL OFF) +endif() + +if(WIN32) + set(PKG_DATADIR ".") + set(PKG_BINDIR ".") + set(LOCALEDIR ".") + string(REPLACE "." " " _VERSION ${VERSION}) + separate_arguments(_VERSION) + list(LENGTH _VERSION _LEN) + if(NOT _LEN EQUAL 4) + message( + FATAL_ERROR "Version needs to be in the form MAJOR.MINOR.RELEASE.BUILD") + endif() + list(GET _VERSION 0 VER_MAJOR) + list(GET _VERSION 1 VER_MINOR) + list(GET _VERSION 2 VER_RELEASE) + list(GET _VERSION 3 VER_BUILD) + configure_file(src/common/winver.h.in src/common/winver.h) +else(WIN32) + set(PKG_DATADIR ${CMAKE_INSTALL_PREFIX}/share/manaserv) + set(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale) + set(PKG_BINDIR ${CMAKE_INSTALL_PREFIX}/bin) +endif(WIN32) + +if(ENABLE_EXTERNAL_ENET) + find_package(ENet) +else(ENABLE_EXTERNAL_ENET) + add_subdirectory(libs/enet) +endif(ENABLE_EXTERNAL_ENET) + +add_subdirectory(scripts) +add_subdirectory(src) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index b0e653ec..fc548bd1 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -1 +1 @@ -ADD_SUBDIRECTORY(lua) +add_subdirectory(lua) diff --git a/scripts/lua/CMakeLists.txt b/scripts/lua/CMakeLists.txt index ba58be51..14a02c50 100644 --- a/scripts/lua/CMakeLists.txt +++ b/scripts/lua/CMakeLists.txt @@ -1,7 +1,3 @@ -SET (FILES - libmana-constants.lua - libmana.lua - npclib.lua - ) +set(FILES libmana-constants.lua libmana.lua npclib.lua) -INSTALL(FILES ${FILES} DESTINATION ${PKG_DATADIR}/scripts/lua/) +install(FILES ${FILES} DESTINATION ${PKG_DATADIR}/scripts/lua/) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d9ba4787..b7e7c48a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,120 +1,115 @@ -FIND_PACKAGE(LibXml2 REQUIRED) -FIND_PACKAGE(PhysFS REQUIRED) -FIND_PACKAGE(ZLIB REQUIRED) -FIND_PACKAGE(SigC++ REQUIRED) +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(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(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) +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 +# 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() +endif() -SET(FLAGS "${FLAGS} -DPACKAGE_VERSION=\\\"${VERSION}\\\"") -SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"") -SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"") +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") +set(FLAGS "${FLAGS} -std=c++0x") +set(FLAGS "${FLAGS} -Woverloaded-virtual") # Prevent clashes with icu namespace -SET(FLAGS "${FLAGS} -DU_USING_ICU_NAMESPACE=0") +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(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(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(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(Lua REQUIRED) - INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR}) - SET(FLAGS "${FLAGS} -DBUILD_LUA") - SET(OPTIONAL_LIBRARIES ${OPTIONAL_LIBRARIES} ${LUA_LIBRARIES}) -ENDIF() +if(ENABLE_LUA) + find_package(Lua 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(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() +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} - ) +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) +mark_as_advanced(PHYSFS_INCLUDE_DIR) +mark_as_advanced(PHYSFS_LIBRARY) -SET(SRCS +set(SRCS common/configuration.h common/configuration.cpp common/defines.h @@ -150,10 +145,9 @@ SET(SRCS utils/tokendispenser.h utils/tokendispenser.cpp utils/xml.h - utils/xml.cpp - ) + utils/xml.cpp) -SET(SRCS_MANASERVACCOUNT +set(SRCS_MANASERVACCOUNT account-server/main-account.cpp account-server/account.h account-server/account.cpp @@ -198,10 +192,9 @@ SET(SRCS_MANASERVACCOUNT utils/sha256.h utils/sha256.cpp utils/throwerror.h - utils/time.h - ) + utils/time.h) -SET(SRCS_MANASERVGAME +set(SRCS_MANASERVGAME game-server/main-game.cpp common/permissionmanager.h common/permissionmanager.cpp @@ -286,66 +279,61 @@ SET(SRCS_MANASERVGAME utils/speedconv.h utils/speedconv.cpp utils/zlib.h - utils/zlib.cpp - ) + utils/zlib.cpp) -IF (WIN32) - SET(SRCS_MANASERVACCOUNT ${SRCS_MANASERVACCOUNT} manaserv-account.rc) - SET(SRCS_MANASERVGAME ${SRCS_MANASERVGAME} manaserv-game.rc) -ENDIF () +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_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_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(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() +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) -SET (PROGRAMS manaserv-account manaserv-game) +add_executable(manaserv-game WIN32 ${SRCS} ${SRCS_MANASERVGAME}) +add_executable(manaserv-account WIN32 ${SRCS} ${SRCS_MANASERVACCOUNT}) -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) -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() -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}") -SET_TARGET_PROPERTIES(manaserv-account PROPERTIES COMPILE_FLAGS "${FLAGS}") -SET_TARGET_PROPERTIES(manaserv-game PROPERTIES COMPILE_FLAGS "${FLAGS}") - -INSTALL(DIRECTORY sql DESTINATION ${PKG_DATADIR})
\ No newline at end of file +install(DIRECTORY sql DESTINATION ${PKG_DATADIR}) |