diff options
author | Bertram <bertram@cegetel.net> | 2010-01-29 00:14:29 +0100 |
---|---|---|
committer | Bertram <bertram@cegetel.net> | 2010-01-29 00:14:29 +0100 |
commit | 9b6377b7d34805535b810a54c5b09c3fd23b3ca8 (patch) | |
tree | caab37efa17d72d1205e929a9886070edeb356cb | |
parent | f7f0f36c3fec7786e15ee79c7aa184c50caa3cd7 (diff) | |
download | manaserv-9b6377b7d34805535b810a54c5b09c3fd23b3ca8.tar.gz manaserv-9b6377b7d34805535b810a54c5b09c3fd23b3ca8.tar.bz2 manaserv-9b6377b7d34805535b810a54c5b09c3fd23b3ca8.tar.xz manaserv-9b6377b7d34805535b810a54c5b09c3fd23b3ca8.zip |
Upgraded CMakeLists.txt files to deal with compile option. I have still one problem with Lua...
There must be something wrong in the FindLua.cmake module because the FIND_PACKAGE(Lua) doesn't work
and is currently commented out.
-rw-r--r-- | CMake/Modules/FindLua.cmake | 46 | ||||
-rw-r--r-- | CMake/Modules/FindMySQL.cmake | 44 | ||||
-rw-r--r-- | CMake/Modules/FindPostgreSQL.cmake | 53 | ||||
-rw-r--r-- | CMake/Modules/FindSqlite.cmake | 49 | ||||
-rw-r--r-- | CMakeLists.txt | 21 | ||||
-rw-r--r-- | src/CMakeLists.txt | 158 |
6 files changed, 306 insertions, 65 deletions
diff --git a/CMake/Modules/FindLua.cmake b/CMake/Modules/FindLua.cmake new file mode 100644 index 00000000..6a2f8e42 --- /dev/null +++ b/CMake/Modules/FindLua.cmake @@ -0,0 +1,46 @@ +# Find the Lua 5.1 includes and library +# +# LUA_INCLUDE_DIR - where to find lua.h +# LUA_LIBRARIES - List of fully qualified libraries to link against +# LUA_FOUND - Set to TRUE if found + +IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) + SET(LUA_FIND_QUIETLY TRUE) +ENDIF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) + +# for Windows we rely on the environement variables +# %INCLUDE% and %LIB%; FIND_LIBRARY checks %LIB% +# automatically on Windows +IF(WIN32) + FIND_PATH(LUA_INCLUDE_DIR lua/lua.h + $ENV{INCLUDE} + ) + FIND_LIBRARY(LUA_LIBRARIES + NAMES lua + ) +ELSE() + FIND_PATH(LUA_INCLUDE_DIR lua.h ) + + FIND_LIBRARY(LUA_LIBRARIES NAMES lua ) +ENDIF() + +IF(LUA_INCLUDE_DIR AND LUA_LIBRARIES) + SET(LUA_FOUND TRUE) + INCLUDE(CheckLibraryExists) + CHECK_LIBRARY_EXISTS(${LUA_LIBRARIES} lua_close "" LUA_NEED_PREFIX) +ELSE(LUA_INCLUDE_DIR AND LUA_LIBRARIES) + SET(LUA_FOUND FALSE) +ENDIF (LUA_INCLUDE_DIR AND LUA_LIBRARIES) + +IF(LUA_FOUND) + IF (NOT LUA_FIND_QUIETLY) + MESSAGE(STATUS "Found Lua library: ${LUA_LIBRARIES}") + MESSAGE(STATUS "Found Lua headers: ${LUA_INCLUDE_DIR}") + ENDIF (NOT LUA_FIND_QUIETLY) +ELSE(LUA_FOUND) + IF(LUA_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could NOT find Lua") + ENDIF(LUA_FIND_REQUIRED) +ENDIF(LUA_FOUND) + +MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES) diff --git a/CMake/Modules/FindMySQL.cmake b/CMake/Modules/FindMySQL.cmake new file mode 100644 index 00000000..7464cfb8 --- /dev/null +++ b/CMake/Modules/FindMySQL.cmake @@ -0,0 +1,44 @@ +# - Find MySQL +# Find the MySQL includes and client library +# This module defines +# MYSQL_INCLUDE_DIR, where to find mysql.h +# MYSQL_LIBRARIES, the libraries needed to use MySQL. +# MYSQL_FOUND, If false, do not try to use MySQL. + +IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + SET(MYSQL_FOUND TRUE) + +ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + + FIND_PATH(MYSQL_INCLUDE_DIR mysql.h + /usr/include/mysql + /usr/local/include/mysql + $ENV{ProgramFiles}/MySQL/*/include + $ENV{SystemDrive}/MySQL/*/include + ) + + IF(WIN32 AND MSVC) + FIND_LIBRARY(MYSQL_LIBRARIES NAMES libmysql + PATHS + $ENV{ProgramFiles}/MySQL/*/lib/opt + $ENV{SystemDrive}/MySQL/*/lib/opt + ) + ELSE(WIN32 AND MSVC) + FIND_LIBRARY(MYSQL_LIBRARIES NAMES mysqlclient + PATHS + /usr/lib/mysql + /usr/local/lib/mysql + ) + ENDIF(WIN32 AND MSVC) + + IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + SET(MYSQL_FOUND TRUE) + MESSAGE(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}") + ELSE(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + SET(MYSQL_FOUND FALSE) + MESSAGE(STATUS "MySQL not found.") + ENDIF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) + + MARK_AS_ADVANCED(MYSQL_INCLUDE_DIR MYSQL_LIBRARIES) + +ENDIF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES) diff --git a/CMake/Modules/FindPostgreSQL.cmake b/CMake/Modules/FindPostgreSQL.cmake new file mode 100644 index 00000000..1052440f --- /dev/null +++ b/CMake/Modules/FindPostgreSQL.cmake @@ -0,0 +1,53 @@ +# - Find PostgreSQL +# Find the PostgreSQL includes and client library +# This module defines +# POSTGRESQL_INCLUDE_DIR, where to find POSTGRESQL.h +# POSTGRESQL_LIBRARIES, the libraries needed to use POSTGRESQL. +# POSTGRESQL_FOUND, If false, do not try to use PostgreSQL. + +# Eventually add the postgresql include paths here + +if(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) + set(POSTGRESQL_FOUND TRUE) + +else(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) + +# When using libpqfe, use this: +# find_path(POSTGRESQL_INCLUDE_DIR libpq-fe.h + + FIND_PATH(POSTGRESQL_INCLUDE_DIR postgres.h + /usr/include/server + /usr/include/pgsql/server + /usr/local/include/pgsql/server + /usr/include/postgresql/server + /usr/include/postgresql/*/server + /usr/local/include/postgresql/server + /usr/local/include/postgresql/*/server + $ENV{ProgramFiles}/PostgreSQL/*/include/server + $ENV{SystemDrive}/PostgreSQL/*/include/server + ) + + find_library(POSTGRESQL_LIBRARIES NAMES pq libpq + PATHS + /usr/lib + /usr/local/lib + /usr/lib/postgresql + /usr/lib64 + /usr/local/lib64 + /usr/lib64/postgresql + $ENV{ProgramFiles}/PostgreSQL/*/lib/ms + $ENV{SystemDrive}/PostgreSQL/*/lib/ms + ) + + if(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) + set(POSTGRESQL_FOUND TRUE) + message(STATUS "Found PostgreSQL: ${POSTGRESQL_INCLUDE_DIR}, ${POSTGRESQL_LIBRARIES}") + INCLUDE_DIRECTORIES(${POSTGRESQL_INCLUDE_DIR}) + else(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) + set(POSTGRESQL_FOUND FALSE) + message(STATUS "PostgreSQL not found.") + endif(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) + + mark_as_advanced(POSTGRESQL_INCLUDE_DIR POSTGRESQL_LIBRARIES) + +endif(POSTGRESQL_INCLUDE_DIR AND POSTGRESQL_LIBRARIES) diff --git a/CMake/Modules/FindSqlite.cmake b/CMake/Modules/FindSqlite.cmake new file mode 100644 index 00000000..725098d8 --- /dev/null +++ b/CMake/Modules/FindSqlite.cmake @@ -0,0 +1,49 @@ +# Find Sqlite 3 libraries +# SQLITE3_INCLUDE_DIR - Where to find Sqlite 3 header files (directory) +# SQLITE3_LIBRARIES - Sqlite 3 libraries +# SQLITE3_LIBRARY_RELEASE - Where the release library is +# SQLITE3_LIBRARY_DEBUG - Where the debug library is +# SQLITE3_FOUND - Set to TRUE if we found everything (library, includes and executable) + +IF( SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY_RELEASE AND SQLITE3_LIBRARY_DEBUG ) + SET(SQLITE3_FIND_QUIETLY TRUE) +ENDIF( SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY_RELEASE AND SQLITE3_LIBRARY_DEBUG ) + +FIND_PATH( SQLITE3_INCLUDE_DIR sqlite3.h ) + +FIND_LIBRARY(SQLITE3_LIBRARY_RELEASE NAMES sqlite3 ) + +FIND_LIBRARY(SQLITE3_LIBRARY_DEBUG NAMES sqlite3 sqlite3d HINTS /usr/lib/debug/usr/lib/ ) + +IF( SQLITE3_LIBRARY_RELEASE OR SQLITE3_LIBRARY_DEBUG AND SQLITE3_INCLUDE_DIR ) + SET( SQLITE3_FOUND TRUE ) +ENDIF( SQLITE3_LIBRARY_RELEASE OR SQLITE3_LIBRARY_DEBUG AND SQLITE3_INCLUDE_DIR ) + +IF( SQLITE3_LIBRARY_DEBUG AND SQLITE3_LIBRARY_RELEASE ) + # if the generator supports configuration types then set + # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value + IF( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + SET( SQLITE3_LIBRARIES optimized ${SQLITE3_LIBRARY_RELEASE} debug ${SQLITE3_LIBRARY_DEBUG} ) + ELSE( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + # if there are no configuration types and CMAKE_BUILD_TYPE has no value + # then just use the release libraries + SET( SQLITE3_LIBRARIES ${SQLITE3_LIBRARY_RELEASE} ) + ENDIF( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) +ELSEIF( SQLITE3_LIBRARY_RELEASE ) + SET( SQLITE3_LIBRARIES ${SQLITE3_LIBRARY_RELEASE} ) +ELSE( SQLITE3_LIBRARY_DEBUG AND SQLITE3_LIBRARY_RELEASE ) + SET( SQLITE3_LIBRARIES ${SQLITE3_LIBRARY_DEBUG} ) +ENDIF( SQLITE3_LIBRARY_DEBUG AND SQLITE3_LIBRARY_RELEASE ) + +IF( SQLITE3_FOUND ) + IF( NOT SQLITE3_FIND_QUIETLY ) + MESSAGE( STATUS "Found Sqlite3 header file in ${SQLITE3_INCLUDE_DIR}") + MESSAGE( STATUS "Found Sqlite3 libraries: ${SQLITE3_LIBRARIES}") + ENDIF( NOT SQLITE3_FIND_QUIETLY ) +ELSE(SQLITE3_FOUND) + IF( SQLITE3_FIND_REQUIRED) + MESSAGE( FATAL_ERROR "Could not find Sqlite3" ) + ELSE( SQLITE3_FIND_REQUIRED) + MESSAGE( STATUS "Optional package Sqlite3 was not found" ) + ENDIF( SQLITE3_FIND_REQUIRED) +ENDIF(SQLITE3_FOUND) diff --git a/CMakeLists.txt b/CMakeLists.txt index d365b8ae..8bc69a76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,26 @@ ENDIF() # where to look for 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 building of tranlations" OFF) +OPTION(ENABLE_LUA "Enable Lua scripting 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) + 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 ".") @@ -31,4 +51,3 @@ ELSE (WIN32) ENDIF (WIN32) ADD_SUBDIRECTORY(src) - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 34a82f7e..30a4c43e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,6 +17,34 @@ SET(FLAGS "-DPACKAGE_VERSION=\\\"${VERSION}\\\"") SET(FLAGS "${FLAGS} -DPKG_DATADIR=\\\"${PKG_DATADIR}/\\\"") SET(FLAGS "${FLAGS} -DLOCALEDIR=\\\"${LOCALEDIR}/\\\"") +# If the Sqlite option is enabled... +IF (WITH_SQLITE) + FIND_PACKAGE(Sqlite REQUIRED) + INCLUDE_DIRECTORIES(${SQLITE_INCLUDE_DIR}) + SET(FLAGS "${FLAGS} -DBUILD_SQLITE") +ENDIF(WITH_SQLITE) + +# If the MySQL option is enabled... +IF (WITH_MYSQL) + FIND_PACKAGE(MySQL REQUIRED) + INCLUDE_DIRECTORIES(${MYSQL_INCLUDE_DIR}) + SET(FLAGS "${FLAGS} -DBUILD_MYSQL") +ENDIF() + +# If the postgreSQL option is enabled... +IF (WITH_POSTGRESQL) + FIND_PACKAGE(PostgreSQL REQUIRED) + INCLUDE_DIRECTORIES(${POSTGRESQL_INCLUDE_DIR}) + SET(FLAGS "${FLAGS} -DBUILD_POSTGRESQL") +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") +# #ENDIF() + IF (CMAKE_BUILD_TYPE) STRING(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER) IF((CMAKE_BUILD_TYPE_TOLOWER MATCHES debug) OR @@ -44,11 +72,45 @@ INCLUDE_DIRECTORIES( MARK_AS_ADVANCED(PHYSFS_INCLUDE_DIR) MARK_AS_ADVANCED(PHYSFS_LIBRARY) -SET(SRCS_MANASERVACCOUNT - account-server/main-account.cpp +SET(SRCS defines.h protocol.h point.h + common/configuration.hpp + common/configuration.cpp + common/inventorydata.hpp + net/bandwidth.hpp + net/bandwidth.cpp + net/connection.hpp + net/connection.cpp + net/connectionhandler.hpp + net/connectionhandler.cpp + net/messagein.hpp + net/messagein.cpp + net/messageout.hpp + net/messageout.cpp + net/netcomputer.hpp + net/netcomputer.cpp + serialize/characterdata.hpp + utils/logger.h + utils/logger.cpp + utils/processorutils.hpp + utils/processorutils.cpp + utils/stringfilter.h + utils/stringfilter.cpp + utils/timer.h + utils/timer.cpp + utils/tokencollector.hpp + utils/tokencollector.cpp + utils/tokendispenser.hpp + utils/tokendispenser.cpp + utils/xml.hpp + utils/xml.cpp + utils/string.cpp + ) + +SET(SRCS_MANASERVACCOUNT + account-server/main-account.cpp account-server/account.hpp account-server/account.cpp account-server/accountclient.hpp @@ -78,9 +140,6 @@ SET(SRCS_MANASERVACCOUNT chat-server/partyhandler.cpp chat-server/post.cpp chat-server/post.hpp - common/configuration.hpp - common/configuration.cpp - common/inventorydata.hpp dal/dalexcept.h dal/dataprovider.h dal/dataprovider.cpp @@ -88,46 +147,15 @@ SET(SRCS_MANASERVACCOUNT dal/dataproviderfactory.cpp dal/recordset.h dal/recordset.cpp - net/bandwidth.hpp - net/bandwidth.cpp - net/connectionhandler.hpp - net/connectionhandler.cpp - net/messagein.hpp - net/messagein.cpp - net/messageout.hpp - net/messageout.cpp - net/netcomputer.hpp - net/netcomputer.cpp - serialize/characterdata.hpp utils/functors.h utils/encryption.h utils/encryption.cpp - utils/logger.h - utils/logger.cpp - utils/processorutils.hpp - utils/processorutils.cpp utils/sha256.h utils/sha256.cpp - utils/stringfilter.h - utils/stringfilter.cpp - utils/timer.cpp - utils/tokencollector.hpp - utils/tokencollector.cpp - utils/tokendispenser.hpp - utils/tokendispenser.cpp - utils/xml.hpp - utils/xml.cpp - utils/string.cpp ) SET(SRCS_MANASERVGAME game-server/main-game.cpp - defines.h - protocol.h - point.h - common/configuration.hpp - common/configuration.cpp - common/inventorydata.hpp common/permissionmanager.hpp common/permissionmanager.cpp game-server/accountconnection.hpp @@ -191,45 +219,44 @@ SET(SRCS_MANASERVGAME game-server/trade.cpp game-server/trigger.hpp game-server/trigger.cpp - net/bandwidth.hpp - net/bandwidth.cpp - net/connection.hpp - net/connection.cpp - net/connectionhandler.hpp - net/connectionhandler.cpp - net/messagein.hpp - net/messagein.cpp - net/messageout.hpp - net/messageout.cpp - net/netcomputer.hpp - net/netcomputer.cpp scripting/script.hpp scripting/script.cpp - serialize/characterdata.hpp utils/base64.h utils/base64.cpp utils/mathutils.h utils/mathutils.cpp - utils/logger.h - utils/logger.cpp - utils/processorutils.hpp - utils/processorutils.cpp - utils/stringfilter.h - utils/stringfilter.cpp - utils/timer.h - utils/timer.cpp utils/trim.hpp - utils/tokencollector.hpp - utils/tokencollector.cpp - utils/tokendispenser.hpp - utils/tokendispenser.cpp - utils/xml.hpp - utils/xml.cpp utils/zlib.hpp utils/zlib.cpp - utils/string.cpp ) +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.hpp + scripting/luautil.cpp + scripting/luautil.hpp) +ENDIF() + SET (PROGRAMS manaserv-account manaserv-game) @@ -250,3 +277,6 @@ IF (CMAKE_SYSTEM_NAME STREQUAL SunOS) 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}") |