# 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. cmake_minimum_required(VERSION 3.11) # 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(TrinityCore) # 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 1.7) 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) include(CTest) if(BUILD_TESTING) list(APPEND CMAKE_MODULE_PATH "${Catch2_SOURCE_DIR}/contrib") include(Catch) add_subdirectory(tests) # Catch cmakefile messes with our settings we explicitly leave up to the user # restore user preference if (NOT WITH_SOURCE_TREE STREQUAL "hierarchical-folders") set_property(GLOBAL PROPERTY USE_FOLDERS OFF) endif() endif()