Improvements to the build system
- ACE is now build as static library - Removed useless directives from master CMakeLists - Added support for MariaDB - On Windows builds, the required DLLs are now properly copied to the installation folder
This commit is contained in:
parent
6a16cd8cc6
commit
f49b02611e
@ -18,21 +18,10 @@
|
|||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
project(MaNGOS)
|
project(MaNGOS)
|
||||||
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
set(MANGOS_VERSION 0.21)
|
set(MANGOS_VERSION 0.21)
|
||||||
set(MANGOS_EXP "CLASSIC")
|
set(MANGOS_EXP "CLASSIC")
|
||||||
add_definitions(-DCLASSIC)
|
|
||||||
# CMake policies
|
|
||||||
cmake_minimum_required(VERSION 2.8)
|
|
||||||
# Until CMake 3.0 is the standard
|
|
||||||
# And a solution to set_directory_properties is found.
|
|
||||||
if(POLICY CMP0043)
|
|
||||||
cmake_policy(SET CMP0043 OLD)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
|
||||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
||||||
set(CMAKE_INSTALL_RPATH "${LIBS_DIR}")
|
|
||||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
|
||||||
|
|
||||||
# Set the correct macro directory path
|
# Set the correct macro directory path
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
@ -91,12 +80,6 @@ find_package(Git)
|
|||||||
find_package(PCHSupport)
|
find_package(PCHSupport)
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
|
||||||
# For Unix systems set the rpath so that libraries are found
|
|
||||||
set(CMAKE_INSTALL_RPATH "${LIBS_DIR}")
|
|
||||||
set(CMAKE_INSTALL_NAME_DIR "${LIBS_DIR}")
|
|
||||||
# Run out of build tree
|
|
||||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH OFF)
|
|
||||||
|
|
||||||
if(ACE_USE_EXTERNAL)
|
if(ACE_USE_EXTERNAL)
|
||||||
find_package(ACE)
|
find_package(ACE)
|
||||||
if(NOT ACE_FOUND)
|
if(NOT ACE_FOUND)
|
||||||
@ -104,14 +87,8 @@ if(ACE_USE_EXTERNAL)
|
|||||||
"This project requires ACE installed when ACE_USE_EXTERNAL is set. Please download the ACE Micro Release Kit from http://download.dre.vanderbilt.edu/ and install it. If this script didn't find ACE and it was correctly installed please set ACE_ROOT to the correct path."
|
"This project requires ACE installed when ACE_USE_EXTERNAL is set. Please download the ACE Micro Release Kit from http://download.dre.vanderbilt.edu/ and install it. If this script didn't find ACE and it was correctly installed please set ACE_ROOT to the correct path."
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(EXISTS ${ACE_INCLUDE_DIR}/ace/Stack_Trace.h)
|
|
||||||
add_definitions(-DHAVE_ACE_STACK_TRACE_H)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
include(cmake/ImportACE.cmake)
|
include(cmake/ImportACE.cmake)
|
||||||
if(NOT(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD"))
|
|
||||||
add_definitions(-DHAVE_ACE_STACK_TRACE_H)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(POSTGRESQL)
|
if(POSTGRESQL)
|
||||||
@ -128,7 +105,7 @@ endif()
|
|||||||
#Include platform/compiler-specific definitions
|
#Include platform/compiler-specific definitions
|
||||||
include(${CMAKE_SOURCE_DIR}/cmake/SetDefinitions.cmake)
|
include(${CMAKE_SOURCE_DIR}/cmake/SetDefinitions.cmake)
|
||||||
|
|
||||||
set(DEFINITIONS ${DEFINITIONS} CLASSIC)
|
add_definitions(-DCLASSIC)
|
||||||
|
|
||||||
message(STATUS "Install server to : ${CMAKE_INSTALL_PREFIX}")
|
message(STATUS "Install server to : ${CMAKE_INSTALL_PREFIX}")
|
||||||
message(STATUS "Install configs to : ${CONF_INSTALL_DIR}")
|
message(STATUS "Install configs to : ${CONF_INSTALL_DIR}")
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||||
set(MYSQL_FOUND TRUE)
|
set(MYSQL_FOUND TRUE)
|
||||||
else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||||
|
if(WIN32)
|
||||||
SET(PROGRAM_FILES_ARCH_PATH)
|
SET(PROGRAM_FILES_ARCH_PATH)
|
||||||
if(PLATFORM EQUAL 32)
|
if(PLATFORM EQUAL 32)
|
||||||
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramFiles})
|
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramFiles})
|
||||||
@ -23,12 +23,6 @@ else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
|||||||
endif(${PROGRAM_FILES_ARCH_PATH})
|
endif(${PROGRAM_FILES_ARCH_PATH})
|
||||||
|
|
||||||
find_path(MYSQL_INCLUDE_DIR mysql.h
|
find_path(MYSQL_INCLUDE_DIR mysql.h
|
||||||
/usr/include
|
|
||||||
/usr/include/mysql
|
|
||||||
/usr/local/include
|
|
||||||
/usr/local/include/mysql
|
|
||||||
/usr/local/mysql/include
|
|
||||||
/opt/local/include/mysql*/mysql
|
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.0/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.0/include"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.1/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.1/include"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.2/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.2/include"
|
||||||
@ -37,9 +31,11 @@ else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
|||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.5/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.5/include"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.6/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.6/include"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.7/include"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.7/include"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.0/include/mysql"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.1/include/mysql"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.2/include/mysql"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.3/include/mysql"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WIN32 AND MSVC)
|
|
||||||
find_library(MYSQL_LIBRARY
|
find_library(MYSQL_LIBRARY
|
||||||
NAMES
|
NAMES
|
||||||
libmysql
|
libmysql
|
||||||
@ -52,8 +48,21 @@ else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
|||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.5/lib"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.5/lib"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.6/lib"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.6/lib"
|
||||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.7/lib"
|
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.7/lib"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.0/lib"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.1/lib"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.2/lib"
|
||||||
|
"${PROGRAM_FILES_ARCH_PATH}/MariaDB 10.3/lib"
|
||||||
)
|
)
|
||||||
else(WIN32 AND MSVC)
|
else(WIN32)
|
||||||
|
find_path(MYSQL_INCLUDE_DIR mysql.h
|
||||||
|
/usr/include
|
||||||
|
/usr/include/mysql
|
||||||
|
/usr/local/include
|
||||||
|
/usr/local/include/mysql
|
||||||
|
/usr/local/mysql/include
|
||||||
|
/opt/local/include/mysql*/mysql
|
||||||
|
)
|
||||||
|
|
||||||
find_library(MYSQL_LIBRARY
|
find_library(MYSQL_LIBRARY
|
||||||
NAMES
|
NAMES
|
||||||
mysqlclient
|
mysqlclient
|
||||||
@ -66,7 +75,7 @@ else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
|||||||
/usr/local/mysql/lib
|
/usr/local/mysql/lib
|
||||||
/opt/local/lib/mysql*/mysql
|
/opt/local/lib/mysql*/mysql
|
||||||
)
|
)
|
||||||
endif(WIN32 AND MSVC)
|
endif(WIN32)
|
||||||
|
|
||||||
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||||
set(MYSQL_FOUND TRUE)
|
set(MYSQL_FOUND TRUE)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# - Try to find the OpenSSL encryption library
|
# Try to find the OpenSSL encryption library
|
||||||
# Once done this will define
|
# Once done this will define
|
||||||
#
|
#
|
||||||
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
|
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
|
||||||
|
@ -14,35 +14,9 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
# Specify ace lib that was build externally
|
add_definitions(-DACE_AS_STATIC_LIBS)
|
||||||
# add_library(ace SHARED IMPORTED)
|
|
||||||
# Sadly doesn't work in current version of cmake
|
|
||||||
# add_dependencies(ace ACE_Project)
|
|
||||||
# set_target_properties(ace PROPERTIES DEPENDS ACE_Project)
|
|
||||||
|
|
||||||
set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dep/acelite)
|
set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dep/acelite)
|
||||||
set(ACE_LIBRARIES_DIR ${CMAKE_BINARY_DIR}/dep/acelite/ace)
|
set(ACE_LIBRARIES_DIR ${CMAKE_BINARY_DIR}/dep/acelite/ace)
|
||||||
set(ACE_LIBRARIES optimized ACE debug ACE)
|
|
||||||
|
|
||||||
# Little Hack to remove the link warnings because of not found directories
|
link_directories(${ACE_LIBRARIES_DIR})
|
||||||
#if(XCODE)
|
|
||||||
# foreach(DIR ${ACE_LIBRARIES_DIR})
|
|
||||||
# foreach(CONF ${CMAKE_CONFIGURATION_TYPES})
|
|
||||||
# file(MAKE_DIRECTORY ${DIR}/${CONF})
|
|
||||||
# endforeach(CONF)
|
|
||||||
# endforeach(DIR)
|
|
||||||
#endif()
|
|
||||||
|
|
||||||
link_directories(
|
|
||||||
${ACE_LIBRARIES_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
#if(WIN32)
|
|
||||||
# foreach(DIR ${ACE_LIBRARIES_DIR})
|
|
||||||
# install(
|
|
||||||
# DIRECTORY ${DIR}/ DESTINATION ${LIBS_DIR}
|
|
||||||
# FILES_MATCHING PATTERN "*.dll*" #"*.${LIB_SUFFIX}*"
|
|
||||||
# PATTERN "pkgconfig" EXCLUDE
|
|
||||||
# )
|
|
||||||
# endforeach(DIR)
|
|
||||||
#endif()
|
|
||||||
|
2
dep
2
dep
@ -1 +1 @@
|
|||||||
Subproject commit e3ecb858995946bff96170d924a2a6577dfb4988
|
Subproject commit e2ee48ca3862fe8450114a233472df08d918db2e
|
@ -51,3 +51,11 @@ endif()
|
|||||||
if(BUILD_TOOLS)
|
if(BUILD_TOOLS)
|
||||||
add_subdirectory(tools)
|
add_subdirectory(tools)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_MANGOSD OR BUILD_REALMD)
|
||||||
|
if(WIN32)
|
||||||
|
get_filename_component(MYSQL_LIB_DIR ${MYSQL_LIBRARY} DIRECTORY)
|
||||||
|
install(FILES ${MYSQL_LIB_DIR}/libmysql.dll DESTINATION ${BIN_DIR})
|
||||||
|
install(FILES ${OPENSSL_ROOT_DIR}/libeay32.dll DESTINATION ${BIN_DIR})
|
||||||
|
endif()
|
||||||
|
endif()
|
@ -36,7 +36,7 @@ endif()
|
|||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
include(generate_product_version)
|
include(generate_product_version)
|
||||||
generate_product_version(
|
generate_product_version(
|
||||||
VersionFilesOutputVariable
|
VersionFilesOutputVariable
|
||||||
NAME "mangosd.exe"
|
NAME "mangosd.exe"
|
||||||
ICON ${CMAKE_SOURCE_DIR}/src/mangosd/mangosd.ico
|
ICON ${CMAKE_SOURCE_DIR}/src/mangosd/mangosd.ico
|
||||||
@ -45,13 +45,10 @@ generate_product_version(
|
|||||||
VERSION_PATH ${BUILD_COUNTER}
|
VERSION_PATH ${BUILD_COUNTER}
|
||||||
VERSION_REVISION ${BUILD_REVISION}
|
VERSION_REVISION ${BUILD_REVISION}
|
||||||
COMPANY_NAME "getmangos.eu"
|
COMPANY_NAME "getmangos.eu"
|
||||||
# Do not alter, remove or prevent COMPANY_COPYRIGHT from displaying
|
# Do not alter, remove or prevent COMPANY_COPYRIGHT from displaying
|
||||||
COMPANY_COPYRIGHT
|
COMPANY_COPYRIGHT
|
||||||
FILE_DESCRIPTION "Mangos Zero Server Daemon"
|
FILE_DESCRIPTION "Mangos Zero Server Daemon"
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
# add resource file to windows build
|
# add resource file to windows build
|
||||||
set(EXECUTABLE_SRCS ${EXECUTABLE_SRCS} VersionResource.rc)
|
set(EXECUTABLE_SRCS ${EXECUTABLE_SRCS} VersionResource.rc)
|
||||||
endif()
|
endif()
|
||||||
@ -105,13 +102,6 @@ endif()
|
|||||||
|
|
||||||
add_executable(${EXECUTABLE_NAME} ${EXECUTABLE_SRCS})
|
add_executable(${EXECUTABLE_NAME} ${EXECUTABLE_SRCS})
|
||||||
|
|
||||||
if(NOT ACE_USE_EXTERNAL)
|
|
||||||
add_dependencies(${EXECUTABLE_NAME} ace)
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ace)
|
|
||||||
else()
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ACE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(${EXECUTABLE_NAME}
|
target_link_libraries(${EXECUTABLE_NAME}
|
||||||
game
|
game
|
||||||
shared
|
shared
|
||||||
@ -120,6 +110,13 @@ target_link_libraries(${EXECUTABLE_NAME}
|
|||||||
${OPENSSL_LIBRARIES}
|
${OPENSSL_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(NOT ACE_USE_EXTERNAL)
|
||||||
|
add_dependencies(${EXECUTABLE_NAME} ace)
|
||||||
|
target_link_libraries(${EXECUTABLE_NAME} ace)
|
||||||
|
else()
|
||||||
|
target_link_libraries(${EXECUTABLE_NAME} ACE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(POSTGRESQL)
|
if(POSTGRESQL)
|
||||||
include_directories(${PostgreSQL_INCLUDE_DIR})
|
include_directories(${PostgreSQL_INCLUDE_DIR})
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ${PostgreSQL_LIBRARIES})
|
target_link_libraries(${EXECUTABLE_NAME} ${PostgreSQL_LIBRARIES})
|
||||||
@ -167,22 +164,4 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mangosd.conf.dist DESTINATION ${CONF_I
|
|||||||
|
|
||||||
if(WIN32 AND MSVC)
|
if(WIN32 AND MSVC)
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/\${BUILD_TYPE}/${EXECUTABLE_NAME}.pdb" DESTINATION "${BIN_DIR}" CONFIGURATIONS Debug)
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/\${BUILD_TYPE}/${EXECUTABLE_NAME}.pdb" DESTINATION "${BIN_DIR}" CONFIGURATIONS Debug)
|
||||||
add_custom_command(TARGET ${EXECUTABLE_NAME}
|
|
||||||
POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/mangosd.conf.dist" "${CONF_COPY_DIR}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
#Copy dlls to build dir
|
|
||||||
if(WIN32)
|
|
||||||
if(MSVC)
|
|
||||||
add_custom_command(TARGET ${EXECUTABLE_NAME}
|
|
||||||
POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${MYSQL_LIBRARY}" "${CMAKE_BINARY_DIR}/bin/$(Configuration)/"
|
|
||||||
)
|
|
||||||
elseif(XCODE)
|
|
||||||
add_custom_command(TARGET ${EXECUTABLE_NAME}
|
|
||||||
POST_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${MYSQL_LIBRARY}" "${CMAKE_BINARY_DIR}/bin/"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit e383ec6a1ec82cb661164b36d92902dcd2bd6e47
|
Subproject commit d34662ce29fdb0904ab5bfa00d9b7a892dd3f697
|
Loading…
x
Reference in New Issue
Block a user