summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBertram <bertram@cegetel.net>2010-01-29 00:14:29 +0100
committerBertram <bertram@cegetel.net>2010-01-29 00:14:29 +0100
commit9b6377b7d34805535b810a54c5b09c3fd23b3ca8 (patch)
treecaab37efa17d72d1205e929a9886070edeb356cb
parentf7f0f36c3fec7786e15ee79c7aa184c50caa3cd7 (diff)
downloadmanaserv-9b6377b7d34805535b810a54c5b09c3fd23b3ca8.tar.gz
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.cmake46
-rw-r--r--CMake/Modules/FindMySQL.cmake44
-rw-r--r--CMake/Modules/FindPostgreSQL.cmake53
-rw-r--r--CMake/Modules/FindSqlite.cmake49
-rw-r--r--CMakeLists.txt21
-rw-r--r--src/CMakeLists.txt158
6 files changed, 306 insertions, 65 deletions
diff --git a/CMake/Modules/FindLua.cmake b/CMake/Modules/FindLua.cmake
new file mode 100644
index 0000000..6a2f8e4
--- /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 0000000..7464cfb
--- /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 0000000..1052440
--- /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 0000000..725098d
--- /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 d365b8a..8bc69a7 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 34a82f7..30a4c43 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}")