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
|
||||
|
||||
project(MaNGOS)
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
set(MANGOS_VERSION 0.21)
|
||||
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(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
@ -91,12 +80,6 @@ find_package(Git)
|
||||
find_package(PCHSupport)
|
||||
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)
|
||||
find_package(ACE)
|
||||
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."
|
||||
)
|
||||
endif()
|
||||
if(EXISTS ${ACE_INCLUDE_DIR}/ace/Stack_Trace.h)
|
||||
add_definitions(-DHAVE_ACE_STACK_TRACE_H)
|
||||
endif()
|
||||
else()
|
||||
include(cmake/ImportACE.cmake)
|
||||
if(NOT(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD"))
|
||||
add_definitions(-DHAVE_ACE_STACK_TRACE_H)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(POSTGRESQL)
|
||||
@ -128,7 +105,7 @@ endif()
|
||||
#Include platform/compiler-specific definitions
|
||||
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 configs to : ${CONF_INSTALL_DIR}")
|
||||
|
@ -10,36 +10,32 @@
|
||||
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||
set(MYSQL_FOUND TRUE)
|
||||
else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||
if(WIN32)
|
||||
SET(PROGRAM_FILES_ARCH_PATH)
|
||||
if(PLATFORM EQUAL 32)
|
||||
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramFiles})
|
||||
elseif(PLATFORM EQUAL 64)
|
||||
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramW6432})
|
||||
endif()
|
||||
|
||||
SET(PROGRAM_FILES_ARCH_PATH)
|
||||
if(PLATFORM EQUAL 32)
|
||||
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramFiles})
|
||||
elseif(PLATFORM EQUAL 64)
|
||||
SET(PROGRAM_FILES_ARCH_PATH $ENV{ProgramW6432})
|
||||
endif()
|
||||
if (${PROGRAM_FILES_ARCH_PATH})
|
||||
STRING(REPLACE "\\\\" "/" PROGRAM_FILES_ARCH_PATH ${PROGRAM_FILES_ARCH_PATH})
|
||||
endif(${PROGRAM_FILES_ARCH_PATH})
|
||||
|
||||
if (${PROGRAM_FILES_ARCH_PATH})
|
||||
STRING(REPLACE "\\\\" "/" PROGRAM_FILES_ARCH_PATH ${PROGRAM_FILES_ARCH_PATH})
|
||||
endif(${PROGRAM_FILES_ARCH_PATH})
|
||||
|
||||
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.1/include"
|
||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.2/include"
|
||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.3/include"
|
||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.4/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.7/include"
|
||||
)
|
||||
|
||||
if(WIN32 AND MSVC)
|
||||
find_path(MYSQL_INCLUDE_DIR mysql.h
|
||||
"${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.2/include"
|
||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.3/include"
|
||||
"${PROGRAM_FILES_ARCH_PATH}/MySQL/MySQL Server 5.4/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.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"
|
||||
)
|
||||
find_library(MYSQL_LIBRARY
|
||||
NAMES
|
||||
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.6/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
|
||||
NAMES
|
||||
mysqlclient
|
||||
@ -66,7 +75,7 @@ else(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||
/usr/local/mysql/lib
|
||||
/opt/local/lib/mysql*/mysql
|
||||
)
|
||||
endif(WIN32 AND MSVC)
|
||||
endif(WIN32)
|
||||
|
||||
if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
|
||||
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
|
||||
#
|
||||
# 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
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# Specify ace lib that was build externally
|
||||
# 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)
|
||||
add_definitions(-DACE_AS_STATIC_LIBS)
|
||||
|
||||
set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dep/acelite)
|
||||
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
|
||||
#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()
|
||||
link_directories(${ACE_LIBRARIES_DIR})
|
||||
|
2
dep
2
dep
@ -1 +1 @@
|
||||
Subproject commit e3ecb858995946bff96170d924a2a6577dfb4988
|
||||
Subproject commit e2ee48ca3862fe8450114a233472df08d918db2e
|
@ -50,4 +50,12 @@ endif()
|
||||
# If we want the tools for map/vmap/mmap extraction
|
||||
if(BUILD_TOOLS)
|
||||
add_subdirectory(tools)
|
||||
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,22 +36,19 @@ endif()
|
||||
|
||||
if(WIN32)
|
||||
include(generate_product_version)
|
||||
generate_product_version(
|
||||
VersionFilesOutputVariable
|
||||
NAME "mangosd.exe"
|
||||
ICON ${CMAKE_SOURCE_DIR}/src/mangosd/mangosd.ico
|
||||
VERSION_MAJOR 0
|
||||
VERSION_MINOR 21
|
||||
VERSION_PATH ${BUILD_COUNTER}
|
||||
VERSION_REVISION ${BUILD_REVISION}
|
||||
COMPANY_NAME "getmangos.eu"
|
||||
# Do not alter, remove or prevent COMPANY_COPYRIGHT from displaying
|
||||
COMPANY_COPYRIGHT
|
||||
FILE_DESCRIPTION "Mangos Zero Server Daemon"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
generate_product_version(
|
||||
VersionFilesOutputVariable
|
||||
NAME "mangosd.exe"
|
||||
ICON ${CMAKE_SOURCE_DIR}/src/mangosd/mangosd.ico
|
||||
VERSION_MAJOR 0
|
||||
VERSION_MINOR 21
|
||||
VERSION_PATH ${BUILD_COUNTER}
|
||||
VERSION_REVISION ${BUILD_REVISION}
|
||||
COMPANY_NAME "getmangos.eu"
|
||||
# Do not alter, remove or prevent COMPANY_COPYRIGHT from displaying
|
||||
COMPANY_COPYRIGHT
|
||||
FILE_DESCRIPTION "Mangos Zero Server Daemon"
|
||||
)
|
||||
# add resource file to windows build
|
||||
set(EXECUTABLE_SRCS ${EXECUTABLE_SRCS} VersionResource.rc)
|
||||
endif()
|
||||
@ -105,13 +102,6 @@ endif()
|
||||
|
||||
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}
|
||||
game
|
||||
shared
|
||||
@ -120,6 +110,13 @@ target_link_libraries(${EXECUTABLE_NAME}
|
||||
${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)
|
||||
include_directories(${PostgreSQL_INCLUDE_DIR})
|
||||
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)
|
||||
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()
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit e383ec6a1ec82cb661164b36d92902dcd2bd6e47
|
||||
Subproject commit d34662ce29fdb0904ab5bfa00d9b7a892dd3f697
|
Loading…
x
Reference in New Issue
Block a user