# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # We require CMake >= 3.2 cmake_minimum_required(VERSION 3.8) # add this options before PROJECT keyword set(CMAKE_DISABLE_SOURCE_CHANGES ON) set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) # Set projectname (must be done AFTER setting configurationtypes) project(AshamaneCore) # CMake policies (can not be handled elsewhere) cmake_policy(SET CMP0005 NEW) if (CMAKE_VERSION VERSION_LESS "3.16.0") cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_ properties' else() cmake_policy(SET CMP0043 NEW) # Cotire isn't used so set to NEW endif() cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as variables or keywords when unquoted - prevents intepreting if (SOME_STRING_VARIABLE MATCHES "MSVC") as if (SOME_STRING_VARIABLE MATCHES "1") if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) # find_package() uses _ROOT variables endif() # Set RPATH-handing (CMake parameters) set(CMAKE_SKIP_BUILD_RPATH 0) set(CMAKE_BUILD_WITH_INSTALL_RPATH 0) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) # set macro-directory list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/macros") if (CMAKE_VERSION VERSION_LESS "3.16.0") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/dep/cotire/CMake") endif() # build in Release-mode by default if not explicitly set if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config") set(CMAKE_DEFAULT_BUILD_TYPE "RelWithDebInfo" CACHE INTERNAL "") endif() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo") endif() include(CheckCXXSourceRuns) include(CheckIncludeFiles) include(ConfigureScripts) # set default buildoptions and print them include(cmake/options.cmake) # turn off PCH totally if enabled (hidden setting, mainly for devs) if( NOPCH ) set(USE_COREPCH 0) set(USE_SCRIPTPCH 0) endif() include(ConfigureBaseTargets) include(CheckPlatform) include(GroupSources) include(AutoCollect) find_package(PCHSupport) find_package(MySQL) if(NOT WITHOUT_GIT) find_package(Git) endif() # Find revision ID and hash of the sourcetree include(cmake/genrev.cmake) # print out the results before continuing include(cmake/showoptions.cmake) # add dependencies add_subdirectory(dep) # add core sources add_subdirectory(src)