From dcaeceaf6b3e4cfe16d5c5fbad7473dfb14ba4dd Mon Sep 17 00:00:00 2001 From: click Date: Sat, 28 Aug 2010 18:49:17 +0200 Subject: Buildsystem: Change over to a little more flexible method of using the CMake buildsystem (partially WIP) - REQUIRES RERUNNING CMAKE! For finding out the "standard" parameters examine the cmake/options.cmake file and adjacent files for your platform/compiler. For platform settings -> cmake/platform/*/settings.cmake For compiler settings -> cmake/compiler/*/settings.cmake Some more testing and changes IS required, but I don't have OSX/XCode to kill off the main issues --HG-- branch : trunk rename : cmake/FindPlatform.cmake => cmake/macros/CheckPlatform.cmake rename : cmake/FindACE.cmake => cmake/macros/FindACE.cmake rename : cmake/FindMySQL.cmake => cmake/macros/FindMySQL.cmake rename : cmake/FindOpenSSL.cmake => cmake/macros/FindOpenSSL.cmake rename : cmake/FindPCHSupport.cmake => cmake/macros/FindPCHSupport.cmake rename : cmake/FindReadline.cmake => cmake/macros/FindReadline.cmake rename : cmake/cmake_uninstall.cmake.in => cmake_uninstall.cmake.in --- CMakeLists.txt | 344 +++--------------------------------- cmake/AddCompilerFlag.cmake | 12 -- cmake/FindACE.cmake | 65 ------- cmake/FindMySQL.cmake | 156 ---------------- cmake/FindOpenSSL.cmake | 88 --------- cmake/FindPCHSupport.cmake | 315 --------------------------------- cmake/FindPlatform.cmake | 16 -- cmake/FindReadline.cmake | 22 --- cmake/FindSSE.cmake | 104 ----------- cmake/MacroEnsureVersion.cmake | 117 ------------ cmake/OptimizeForArchitecture.cmake | 224 ----------------------- cmake/SSETests.cmake | 33 ---- cmake/cmake_uninstall.cmake.in | 23 --- cmake/compiler/gcc/settings.cmake | 15 ++ cmake/compiler/msvc/settings.cmake | 49 +++++ cmake/macros/CheckBuildDir.cmake | 23 +++ cmake/macros/CheckPlatform.cmake | 19 ++ cmake/macros/EnsureVersion.cmake | 115 ++++++++++++ cmake/macros/FindACE.cmake | 65 +++++++ cmake/macros/FindMySQL.cmake | 156 ++++++++++++++++ cmake/macros/FindOpenSSL.cmake | 88 +++++++++ cmake/macros/FindPCHSupport.cmake | 315 +++++++++++++++++++++++++++++++++ cmake/macros/FindReadline.cmake | 22 +++ cmake/options.cmake | 99 +++++++++++ cmake/platform/settings.cmake | 5 + cmake/platform/settings.osx.cmake | 3 + cmake/platform/settings.unix.cmake | 24 +++ cmake/platform/settings.win32.cmake | 15 ++ cmake_uninstall.cmake.in | 23 +++ sql/CMakeLists.txt | 16 +- 30 files changed, 1070 insertions(+), 1501 deletions(-) delete mode 100644 cmake/AddCompilerFlag.cmake delete mode 100644 cmake/FindACE.cmake delete mode 100644 cmake/FindMySQL.cmake delete mode 100644 cmake/FindOpenSSL.cmake delete mode 100644 cmake/FindPCHSupport.cmake delete mode 100644 cmake/FindPlatform.cmake delete mode 100644 cmake/FindReadline.cmake delete mode 100644 cmake/FindSSE.cmake delete mode 100644 cmake/MacroEnsureVersion.cmake delete mode 100644 cmake/OptimizeForArchitecture.cmake delete mode 100644 cmake/SSETests.cmake delete mode 100644 cmake/cmake_uninstall.cmake.in create mode 100644 cmake/compiler/gcc/settings.cmake create mode 100644 cmake/compiler/msvc/settings.cmake create mode 100644 cmake/macros/CheckBuildDir.cmake create mode 100644 cmake/macros/CheckPlatform.cmake create mode 100644 cmake/macros/EnsureVersion.cmake create mode 100644 cmake/macros/FindACE.cmake create mode 100644 cmake/macros/FindMySQL.cmake create mode 100644 cmake/macros/FindOpenSSL.cmake create mode 100644 cmake/macros/FindPCHSupport.cmake create mode 100644 cmake/macros/FindReadline.cmake create mode 100644 cmake/options.cmake create mode 100644 cmake/platform/settings.cmake create mode 100644 cmake/platform/settings.osx.cmake create mode 100644 cmake/platform/settings.unix.cmake create mode 100644 cmake/platform/settings.win32.cmake create mode 100644 cmake_uninstall.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 4aae339d57f..0b7c14c4a0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,52 +8,32 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -##### -##### Base setup for project -##### - -# -# Set projectname (must be done AFTER setting configurationtypes btw...) -# - +# Set projectname (must be done AFTER setting configurationtypes) project(TrinityCore) -# CMake policies +# CMake policies (can not be handled elsewhere) cmake_minimum_required(VERSION 2.6) cmake_policy(SET CMP0005 OLD) -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") - -# -# Force out-of-source build -# +# 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) -string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" BUILDING_IN_SOURCE) +# set macro-directory +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/macros") -if( BUILDING_IN_SOURCE ) - message(FATAL_ERROR " - This project requires an out of source build. Remove the file 'CMakeCache.txt' - found in this directory before continuing, create a separate build directory - and run 'cmake path_to_project [options]' from there. - ") +# build in Release-mode by default if not explicitly set +if( NOT CMAKE_BUILD_TYPE ) + set(CMAKE_BUILD_TYPE "Release") endif() -# -# Basic packagesearching and setup (further support will be needed, this is a preliminary release!) -# - -include(MacroEnsureVersion) -include(OptimizeForArchitecture) -include(AddCompilerFlag) include(CheckCXXSourceRuns) - include(CheckIncludeFiles) -include(FindPlatform) - -if(WIN32) - set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dep/acelite) -endif() +include(CheckPlatform) +# basic packagesearching and setup (further support will be needed, this is a preliminary release!) find_package(PCHSupport) find_package(ACE REQUIRED) find_package(MySQL REQUIRED) @@ -64,298 +44,30 @@ if( UNIX ) find_package(BZip2) endif() -include(cmake/SSETests.cmake) - -# -# Optimize for architecture -# - -OptimizeForArchitecture() - -# -# Select the Release build configuration by default. -# - -if( NOT CMAKE_BUILD_TYPE ) - set(CMAKE_BUILD_TYPE "Release") -endif() - -##### -##### Options and settings -##### - -# -# Set up default option-parameters for building -# - -option(SERVERS "Build worldserver and authserver" 1) -option(SCRIPTS "Build worldserver with scripts included" 1) -option(TOOLS "Build map/vmap extraction/assembler tools" 0) -option(COREDEBUG "Build worldserver with additional debug-code included" 0) -option(SCRIPTPCH "Use precompiled headers when compiling scripts project" 1) -option(GAMEPCH "Use precompiled headers when compiling game project" 1) -option(SQL "Copy SQL files during installation" 0) -option(WARNINGS "Enable all compile-warnings during compile" 1) -option(USE_SFMT "Use SFMT for random number generation." 0) - -# -# Search for readline on *nixbased systems (CLI-handler) -# - -if( UNIX ) - find_readline() -endif() - -# -# Set up the installation-prefix -# - -if( PREFIX ) - set(CMAKE_INSTALL_PREFIX "${PREFIX}") -endif() - -# -# Example: Check the CMake preload parameters (Commented out by default) -# -# Overload CMAKE_INSTALL_PREFIX if not being set properly -#if( WIN32 ) -# if( NOT CYGWIN ) -# if( NOT CMAKE_INSTALL_PREFIX ) -# set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/bin") -# endif() -# endif() -#endif() - -# -# Handle core debugmode compilation (this will require further work for proper WIN32-setups) -# - -if( COREDEBUG ) - set(CMAKE_BUILD_TYPE Debug) -endif() - -# -# WINDOWS/MSVC: Set up paths for where we want binaries to end up after compilation -# - -if( MSVC ) - # Set up MSVC to dump files in the /bin// folder for testing builds before install - - # executable binaries (.exe-files, and .dll-files on DLL-capable platforms) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - - # other parts like static libraries etc - commented out as it's not needed - shown here as an example only - #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -endif() - -# -# Set default configuration-directory (used on NIX-based platforms only) -# - -if( NOT CONF_DIR ) - set(CONF_DIR ${CMAKE_INSTALL_PREFIX}/etc) -endif() - -set(LIBSDIR ${CMAKE_INSTALL_PREFIX}/lib) - -##### -##### Build-preparation -##### - -# -# Create genrev object and create revision.h -# (Moved to subfolder to avoid cluttering up the base build-dir) -# - -add_subdirectory(src/genrevision) - -# # Find current revision of downloaded sourcetree -# - execute_process( COMMAND hg tip --template {rev} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE HG_REVISION ) -if(DEFINED NOPCH) - set(SCRIPTPCH 0) - set(GAMEPCH 0) -endif() - -# -# Output some generic information about the core and buildtype chosen -# - -message("") -message("* TrinityCore revision : ${HG_REVISION}") -if( UNIX ) - message("* Build binaries in : ${CMAKE_BUILD_TYPE} mode") -endif() -message("") - -# -# Output information about installation-directories and locations -# - -message("* Install core to : ${CMAKE_INSTALL_PREFIX}") -if( UNIX ) - message("* Install libraries to : ${LIBSDIR}") - message("* Install configs to : ${CONF_DIR}") -endif() -message("") - -# -# Show infomation about the options selected during configuration -# - -if( SERVERS ) - message("* Build servers : Yes (default)") -else() - message("* Build servers : No") -endif() - -if( GAMEPCH ) - message("* Build game w/PCH : Yes (default)") -else() - message("* Build game w/PCH : No") -endif() - -if( SCRIPTS ) - message("* Build with scripts : Yes (default)") - add_definitions(-DSCRIPTS) -else() - message("* Build with scripts : No") - set(SCRIPTPCH 0) -endif() - -if( SCRIPTPCH ) - message("* Build scripts w/PCH : Yes (default)") -else() - message("* Build scripts w/PCH : No") -endif() - -if( TOOLS ) - message("* Build map/vmap tools : Yes") -else() - message("* Build map/vmap tools : No (default)") -endif() - -if( COREDEBUG ) - message("* Use coreside debug : Yes") - add_definitions(-DTRINITY_DEBUG) - if(CMAKE_COMPILER_IS_GNUCXX) - add_definitions(-g) - endif() -else() - message("* Use coreside debug : No (default)") -endif() - -if( WARNINGS ) - message("* Show all warnings : Yes") - if( UNIX ) - add_definitions(-Wall -Wfatal-errors -Wextra) - endif() -else() - message("* Show compile-warnings : No (default)") - if( UNIX ) - add_definitions(--no-warnings) # makes build look nice, no warnings shown at all, only errors - elseif( WIN32 ) - # Disable warnings in Visual Studio 8 and above - if(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") - endif() - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - endif() -endif() - -# -# Inform if we will install SQL-files or not -# - -if( SQL ) - message("* Install SQL-files : Yes") -else() - message("* Install SQL-files : No (default)") +# turn off PCH totally if enabled (hidden setting, mainly for devs) +if( NOPCH ) + set(WITH_COREPCH 0) + set(WITH_SCRIPTPCH 0) endif() -# -# SFMT... -# -if( USE_SFMT ) - add_definitions(-DUSE_SFMT_FOR_RNG) - message("* Use SFMT for RNG : Yes") -else() - message("* Use SFMT for RNG : No (default)") -endif() - -message("") - -##### -##### Tweaks to make things operate well -##### - -# -# Little tweak for OS X -# - -if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) - set(MACOSX 1) - set(OSX_LIBS /usr/lib/libcrypto.dylib) - add_definitions(-D__ASSERTMACROS__) -endif() - -# -# Some small tweaks for Visual Studio 7 and above. -# - -if( MSVC ) - # Mark 32 bit executables large address aware so they can use > 2GB address space - if(CMAKE_SIZEOF_VOID_P MATCHES 4) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") - endif() - # Multithreaded compiling on VS - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") - add_definitions(-D_CRT_SECURE_NO_WARNINGS) -endif() - -# -# Set RPATH-handing (CMake parameters) -# +# set default buildoptions and print them +include(cmake/options.cmake) -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) - -##### -##### Start filling in the blanks, and build the project -##### - -# -# Create uninstall-object for UNIX platforms -# - -if( UNIX ) - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY - ) - add_custom_target(uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - ) -endif() - -# -# Enter the different builddirectories and start working -# +# add and generate revision.h +add_subdirectory(src/genrevision) +# add dependencies add_subdirectory(dep) + +# add core sources add_subdirectory(src) -if( SQL ) - add_subdirectory(sql) -endif() + +# add sql-files +add_subdirectory(sql) diff --git a/cmake/AddCompilerFlag.cmake b/cmake/AddCompilerFlag.cmake deleted file mode 100644 index 5310b5982bc..00000000000 --- a/cmake/AddCompilerFlag.cmake +++ /dev/null @@ -1,12 +0,0 @@ -include (CheckCXXCompilerFlag) -macro(AddCompilerFlag _flag) - string(REGEX REPLACE "[/:= ]" "_" _flag_esc "${_flag}") - check_cxx_compiler_flag("${_flag}" check_compiler_flag_${_flag_esc}) - if(check_compiler_flag_${_flag_esc}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}") - endif(check_compiler_flag_${_flag_esc}) - if(${ARGC} EQUAL 2) - set(${ARGV1} "${check_compiler_flag_${_flag_esc}}") - endif(${ARGC} EQUAL 2) -endmacro(AddCompilerFlag) diff --git a/cmake/FindACE.cmake b/cmake/FindACE.cmake deleted file mode 100644 index 4ade5f64b03..00000000000 --- a/cmake/FindACE.cmake +++ /dev/null @@ -1,65 +0,0 @@ -# -# Find the ACE client includes and library -# - -# This module defines -# ACE_INCLUDE_DIR, where to find ace.h -# ACE_LIBRARIES, the libraries to link against -# ACE_FOUND, if false, you cannot build anything that requires ACE - -# also defined, but not for general use are -# ACE_LIBRARY, where to find the ACE library. - -set( ACE_FOUND 0 ) - -if ( UNIX ) - FIND_PATH( ACE_INCLUDE_DIR - NAMES - ace/ACE.h - PATHS - /usr/include - /usr/include/ace - /usr/local/include - /usr/local/include/ace - $ENV{ACE_ROOT} - $ENV{ACE_ROOT}/include - ${CMAKE_SOURCE_DIR}/externals/ace - DOC - "Specify include-directories that might contain ace.h here." - ) - FIND_LIBRARY( ACE_LIBRARY - NAMES - ace ACE - PATHS - /usr/lib - /usr/lib/ace - /usr/local/lib - /usr/local/lib/ace - /usr/local/ace/lib - $ENV{ACE_ROOT}/lib - $ENV{ACE_ROOT} - DOC "Specify library-locations that might contain the ACE library here." - ) - -# FIND_LIBRARY( ACE_EXTRA_LIBRARIES -# NAMES -# z zlib -# PATHS -# /usr/lib -# /usr/local/lib -# DOC -# "if more libraries are necessary to link into ACE, specify them here." -# ) - - if ( ACE_LIBRARY ) - if ( ACE_INCLUDE_DIR ) - set( ACE_FOUND 1 ) - message( STATUS "Found ACE library: ${ACE_LIBRARY}") - message( STATUS "Found ACE headers: ${ACE_INCLUDE_DIR}") - else ( ACE_INCLUDE_DIR ) - message(FATAL_ERROR "Could not find ACE headers! Please install ACE libraries and headers") - endif ( ACE_INCLUDE_DIR ) - endif ( ACE_LIBRARY ) - - mark_as_advanced( ACE_FOUND ACE_LIBRARY ACE_EXTRA_LIBRARIES ACE_INCLUDE_DIR ) -endif (UNIX) diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake deleted file mode 100644 index bc4edaf1c24..00000000000 --- a/cmake/FindMySQL.cmake +++ /dev/null @@ -1,156 +0,0 @@ -# -# Find the MySQL client includes and library -# - -# This module defines -# MYSQL_INCLUDE_DIR, where to find mysql.h -# MYSQL_LIBRARIES, the libraries to link against to connect to MySQL -# MYSQL_FOUND, if false, you cannot build anything that requires MySQL. - -# also defined, but not for general use are -# MYSQL_LIBRARY, where to find the MySQL library. - -set( MYSQL_FOUND 0 ) - -if( UNIX ) - set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH - "preferred path to MySQL (mysql_config)" - ) - - find_program(MYSQL_CONFIG mysql_config - ${MYSQL_CONFIG_PREFER_PATH} - /usr/local/mysql/bin/ - /usr/local/bin/ - /usr/bin/ - ) - - if( MYSQL_CONFIG ) - message(STATUS "Using mysql-config: ${MYSQL_CONFIG}") - # set INCLUDE_DIR - exec_program(${MYSQL_CONFIG} - ARGS --include - OUTPUT_VARIABLE MY_TMP - ) - - string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}") - set(MYSQL_ADD_INCLUDE_PATH ${MY_TMP} CACHE FILEPATH INTERNAL) - #message("[DEBUG] MYSQL ADD_INCLUDE_PATH : ${MYSQL_ADD_INCLUDE_PATH}") - # set LIBRARY_DIR - exec_program(${MYSQL_CONFIG} - ARGS --libs_r - OUTPUT_VARIABLE MY_TMP - ) - set(MYSQL_ADD_LIBRARIES "") - string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}") - foreach(LIB ${MYSQL_LIB_LIST}) - string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}") - list(APPEND MYSQL_ADD_LIBRARIES "${LIB}") - #message("[DEBUG] MYSQL ADD_LIBRARIES : ${MYSQL_ADD_LIBRARIES}") - endforeach(LIB ${MYSQL_LIB_LIST}) - - set(MYSQL_ADD_LIBRARIES_PATH "") - string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}") - foreach(LIB ${MYSQL_LIBDIR_LIST}) - string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}") - list(APPEND MYSQL_ADD_LIBRARIES_PATH "${LIB}") - #message("[DEBUG] MYSQL ADD_LIBRARIES_PATH : ${MYSQL_ADD_LIBRARIES_PATH}") - endforeach(LIB ${MYSQL_LIBS}) - - else( MYSQL_CONFIG ) - set(MYSQL_ADD_LIBRARIES "") - list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient_r") - endif( MYSQL_CONFIG ) -endif( UNIX ) - -find_path(MYSQL_INCLUDE_DIR - NAMES - mysql.h - PATHS - ${MYSQL_ADD_INCLUDE_PATH} - /usr/include - /usr/include/mysql - /usr/local/include - /usr/local/include/mysql - /usr/local/mysql/include - "C:/Program Files/MySQL/include" - "C:/Program Files/MySQL/MySQL Server 5.0/include" - "C:/Program Files/MySQL/MySQL Server 5.1/include" - "C:/MySQL/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include" - "$ENV{ProgramFiles}/MySQL/*/include" - "$ENV{SystemDrive}/MySQL/*/include" - "c:/msys/local/include" - DOC - "Specify the directory containing mysql.h." -) - -if( UNIX ) -foreach(LIB ${MYSQL_ADD_LIBRARIES}) - find_library( MYSQL_LIBRARY - NAMES - mysql libmysql ${LIB} - PATHS - ${MYSQL_ADD_LIBRARIES_PATH} - /usr/lib - /usr/lib/mysql - /usr/local/lib - /usr/local/lib/mysql - /usr/local/mysql/lib - DOC "Specify the location of the mysql library here." - ) -endforeach(LIB ${MYSQL_ADD_LIBRARY}) -endif( UNIX ) - -if( WIN32 ) - find_library( MYSQL_LIBRARY - NAMES - libmysql - PATHS - ${MYSQL_ADD_LIBRARIES_PATH} - "C:/Program Files/MySQL/lib" - "C:/Program Files/MySQL/MySQL Server 5.0/lib/opt" - "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt" - "C:/MySQL/lib/debug" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt" - "$ENV{ProgramFiles}/MySQL/*/lib/opt" - "$ENV{SystemDrive}/MySQL/*/lib/opt" - "c:/msys/local/include" - DOC "Specify the location of the mysql library here." - ) -endif( WIN32 ) - -# On Windows you typically don't need to include any extra libraries -# to build MYSQL stuff. - -if( NOT WIN32 ) - find_library( MYSQL_EXTRA_LIBRARIES - NAMES - z zlib - PATHS - /usr/lib - /usr/local/lib - DOC - "if more libraries are necessary to link in a MySQL client (typically zlib), specify them here." - ) -else( NOT WIN32 ) - set( MYSQL_EXTRA_LIBRARIES "" ) -endif( NOT WIN32 ) - -if( MYSQL_LIBRARY ) - if( MYSQL_INCLUDE_DIR ) - set( MYSQL_FOUND 1 ) - message(STATUS "Found MySQL library: ${MYSQL_LIBRARY}") - message(STATUS "Found MySQL headers: ${MYSQL_INCLUDE_DIR}") - else( MYSQL_INCLUDE_DIR ) - message(FATAL_ERROR "Could not find MySQL headers! Please install the development-libraries and headers.") - endif( MYSQL_INCLUDE_DIR ) - mark_as_advanced( MYSQL_FOUND MYSQL_LIBRARY MYSQL_EXTRA_LIBRARIES MYSQL_INCLUDE_DIR ) -else( MYSQL_LIBRARY ) - message(FATAL_ERROR "Could not find the MySQL libraries! Please install the development-libraries and headers.") -endif( MYSQL_LIBRARY ) diff --git a/cmake/FindOpenSSL.cmake b/cmake/FindOpenSSL.cmake deleted file mode 100644 index 01f7d20e5d2..00000000000 --- a/cmake/FindOpenSSL.cmake +++ /dev/null @@ -1,88 +0,0 @@ -# -# Find the OpenSSL client includes and library -# - -# This module defines -# OPENSSL_INCLUDE_DIR, where to find openssl.h -# OPENSSL_LIBRARIES, the libraries to link against to connect to MySQL -# OPENSSL_FOUND, if false, you cannot build anything that requires MySQL. - -# also defined, but not for general use are -# OPENSSL_LIBRARY, where to find the MySQL library. - - set(OPENSSL_FOUND 0) - - if( MSVC ) - if(PLATFORM MATCHES X64) - set(TMP_OPENSSL_INCLUDE_DIR - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/include" - ) - set(TMP_OPENSSL_LIBRARIES - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/lib" - ) - else() - set(TMP_OPENSSL_INCLUDE_DIR - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" - ) - set(TMP_OPENSSL_LIBRARIES - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" - ) - endif() - endif() - - find_path(OPENSSL_INCLUDE_DIR - NAMES - openssl/ssl.h - PATHS - ${TMP_OPENSSL_INCLUDE_DIR} - /usr/include - /usr/include/openssl - /usr/local/include - /usr/local/include/openssl - /usr/local/openssl/include - DOC - "Specify the directory containing openssl.h." - ) - - find_library(OPENSSL_LIBRARIES - NAMES - ssleay32 - ssl - PATHS - ${TMP_OPENSSL_LIBRARIES} - /usr/lib - /usr/lib/ssl - /usr/local/lib - /usr/local/lib/ssl - /usr/local/ssl/lib - DOC "Specify the OpenSSL library here." - ) - - if( WIN32 ) - find_library(OPENSSL_EXTRA_LIBRARIES - NAMES - libeay32 - PATHS - ${TMP_OPENSSL_LIBRARIES} - DOC - "if more libraries are necessary to link in a OpenSSL client, specify them here." - ) - endif( WIN32 ) - - if( OPENSSL_LIBRARIES ) - if( OPENSSL_INCLUDE_DIR ) - set( OPENSSL_FOUND 1 ) - message(STATUS "Found OpenSSL library: ${OPENSSL_LIBRARIES}") - message(STATUS "Found OpenSSL headers: ${OPENSSL_INCLUDE_DIR}") - else ( OPENSSL_INCLUDE_DIR ) - message(FATAL_ERROR "Could not find OpenSSL headers! Please install the development-headers") - endif( OPENSSL_INCLUDE_DIR ) - else( OPENSSL_LIBRARIES ) - message(FATAL_ERROR "Could not find OpenSSL libraries! Please install the library before continuing") - endif( OPENSSL_LIBRARIES ) - - mark_as_advanced( OPENSSL_FOUND OPENSSL_LIBRARIES OPENSSL_EXTRA_LIBRARIES OPENSSL_INCLUDE_DIR ) diff --git a/cmake/FindPCHSupport.cmake b/cmake/FindPCHSupport.cmake deleted file mode 100644 index 39a96b6cadb..00000000000 --- a/cmake/FindPCHSupport.cmake +++ /dev/null @@ -1,315 +0,0 @@ -# - Try to find precompiled headers support for GCC 3.4 and 4.x (and MSVC) -# Once done this will define: -# -# Variable: -# PCHSupport_FOUND -# -# Macro: -# ADD_PRECOMPILED_HEADER _targetName _input _dowarn -# ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use _dowarn -# ADD_NATIVE_PRECOMPILED_HEADER _targetName _input _dowarn -# GET_NATIVE_PRECOMPILED_HEADER _targetName _input - -IF(CMAKE_COMPILER_IS_GNUCXX) - - EXEC_PROGRAM( - ${CMAKE_CXX_COMPILER} - ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion - OUTPUT_VARIABLE gcc_compiler_version - ) - #MESSAGE("GCC Version: ${gcc_compiler_version}") - IF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") - SET(PCHSupport_FOUND TRUE) - ELSE(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") - IF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") - SET(PCHSupport_FOUND TRUE) - ENDIF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") - ENDIF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") - - SET(_PCH_include_prefix "-I") - -ELSE(CMAKE_COMPILER_IS_GNUCXX) - - IF(WIN32) - SET(PCHSupport_FOUND TRUE) # for experimental msvc support - SET(_PCH_include_prefix "/I") - ELSE(WIN32) - SET(PCHSupport_FOUND FALSE) - ENDIF(WIN32) - -ENDIF(CMAKE_COMPILER_IS_GNUCXX) - -MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) - - STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) - SET(${_out_compile_flags} ${${_flags_var_name}} ) - - IF(CMAKE_COMPILER_IS_GNUCXX) - GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) - IF(${_targetType} STREQUAL SHARED_LIBRARY AND NOT WIN32) - LIST(APPEND ${_out_compile_flags} -fPIC) - ENDIF() - - ELSE(CMAKE_COMPILER_IS_GNUCXX) - ## TODO ... ? or does it work out of the box - ENDIF(CMAKE_COMPILER_IS_GNUCXX) - - GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) - FOREACH(item ${DIRINC}) - LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}${item}") - ENDFOREACH(item) - - GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) - GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS) - #MESSAGE("_directory_flags ${_directory_flags} ${_global_definitions}" ) - LIST(APPEND ${_out_compile_flags} ${_directory_flags}) - LIST(APPEND ${_out_compile_flags} ${_global_definitions}) - LIST(APPEND ${_out_compile_flags} ${CMAKE_CXX_FLAGS} ) - - SEPARATE_ARGUMENTS(${_out_compile_flags}) - -ENDMACRO(_PCH_GET_COMPILE_FLAGS) - -MACRO(_PCH_WRITE_PCHDEP_CXX _targetName _include_file _dephelp) - - SET(${_dephelp} ${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch_dephelp.cxx) - FILE(WRITE ${${_dephelp}} -"#include \"${_include_file}\" -int testfunction() -{ - return 0; -} -" - ) - -ENDMACRO(_PCH_WRITE_PCHDEP_CXX ) - -MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output) - - FILE(TO_NATIVE_PATH ${_input} _native_input) - FILE(TO_NATIVE_PATH ${_output} _native_output) - - - IF(CMAKE_COMPILER_IS_GNUCXX) - IF(CMAKE_CXX_COMPILER_ARG1) - # remove leading space in compiler argument - STRING(REGEX REPLACE "^ +" "" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1}) - - SET(${out_command} - ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} - ) - ELSE(CMAKE_CXX_COMPILER_ARG1) - SET(${out_command} - ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} - ) - ENDIF(CMAKE_CXX_COMPILER_ARG1) - ELSE(CMAKE_COMPILER_IS_GNUCXX) - - SET(_dummy_str "#include <${_input}>") - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pch_dummy.cpp ${_dummy_str}) - - SET(${out_command} - ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} /c /Fp${_native_output} /Yc${_native_input} pch_dummy.cpp - ) - #/out:${_output} - - ENDIF(CMAKE_COMPILER_IS_GNUCXX) - -ENDMACRO(_PCH_GET_COMPILE_COMMAND ) - - - -MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn ) - - FILE(TO_NATIVE_PATH ${_pch_path} _native_pch_path) - - IF(CMAKE_COMPILER_IS_GNUCXX) - # for use with distcc and gcc >4.0.1 if preprocessed files are accessible - # on all remote machines set - # PCH_ADDITIONAL_COMPILER_FLAGS to -fpch-preprocess - # if you want warnings for invalid header files (which is very inconvenient - # if you have different versions of the headers for different build types - # you may set _pch_dowarn - IF (_dowarn) - SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} -Winvalid-pch " ) - ELSE (_dowarn) - SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} " ) - ENDIF (_dowarn) - ELSE(CMAKE_COMPILER_IS_GNUCXX) - - set(${_cflags} "/Fp${_native_pch_path} /Yu${_header_name}" ) - - ENDIF(CMAKE_COMPILER_IS_GNUCXX) - -ENDMACRO(_PCH_GET_TARGET_COMPILE_FLAGS ) - -MACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input _output) - GET_FILENAME_COMPONENT(_name ${_input} NAME) - GET_FILENAME_COMPONENT(_path ${_input} PATH) - SET(_output "${CMAKE_CURRENT_BINARY_DIR}/${_name}.gch/${_targetName}_${CMAKE_BUILD_TYPE}.gch") -ENDMACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input) - - -MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use ) - - # to do: test whether compiler flags match between target _targetName - # and _pch_output_to_use - GET_FILENAME_COMPONENT(_name ${_input} NAME) - - IF( "${ARGN}" STREQUAL "0") - SET(_dowarn 0) - ELSE( "${ARGN}" STREQUAL "0") - SET(_dowarn 1) - ENDIF("${ARGN}" STREQUAL "0") - - - _PCH_GET_TARGET_COMPILE_FLAGS(_target_cflags ${_name} ${_pch_output_to_use} ${_dowarn}) - # MESSAGE("Add flags ${_target_cflags} to ${_targetName} " ) - SET_TARGET_PROPERTIES(${_targetName} - PROPERTIES - COMPILE_FLAGS ${_target_cflags} - ) - - ADD_CUSTOM_TARGET(pch_Generate_${_targetName} - DEPENDS ${_pch_output_to_use} - ) - - ADD_DEPENDENCIES(${_targetName} pch_Generate_${_targetName} ) - -ENDMACRO(ADD_PRECOMPILED_HEADER_TO_TARGET) - -MACRO(ADD_PRECOMPILED_HEADER _targetName _input) - - SET(_PCH_current_target ${_targetName}) - - IF(NOT CMAKE_BUILD_TYPE) - MESSAGE(FATAL_ERROR - "This is the ADD_PRECOMPILED_HEADER macro. " - "You must set CMAKE_BUILD_TYPE!" - ) - ENDIF(NOT CMAKE_BUILD_TYPE) - - IF( "${ARGN}" STREQUAL "0") - SET(_dowarn 0) - ELSE( "${ARGN}" STREQUAL "0") - SET(_dowarn 1) - ENDIF("${ARGN}" STREQUAL "0") - - GET_FILENAME_COMPONENT(_name ${_input} NAME) - GET_FILENAME_COMPONENT(_path ${_input} PATH) - GET_PRECOMPILED_HEADER_OUTPUT( ${_targetName} ${_input} _output) - - GET_FILENAME_COMPONENT(_outdir ${_output} PATH ) - - GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) - _PCH_WRITE_PCHDEP_CXX(${_targetName} ${_input} _pch_dephelp_cxx) - - IF(${_targetType} STREQUAL SHARED_LIBRARY) - ADD_LIBRARY(${_targetName}_pch_dephelp STATIC ${_pch_dephelp_cxx} ) - ELSE(${_targetType} STREQUAL SHARED_LIBRARY) - ADD_LIBRARY(${_targetName}_pch_dephelp STATIC ${_pch_dephelp_cxx}) - ENDIF(${_targetType} STREQUAL SHARED_LIBRARY) - - FILE(MAKE_DIRECTORY ${_outdir}) - - _PCH_GET_COMPILE_FLAGS(_compile_FLAGS) - - #MESSAGE("_compile_FLAGS: ${_compile_FLAGS}") - #message("COMMAND ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}") - SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${_name} PROPERTIES GENERATED 1) - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name} - COMMAND ${CMAKE_COMMAND} -E copy ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} # ensure same directory! Required by gcc - DEPENDS ${_input} - ) - - #message("_command ${_input} ${_output}") - _PCH_GET_COMPILE_COMMAND(_command ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_output} ) - - #message(${_input} ) - #message("_output ${_output}") - - ADD_CUSTOM_COMMAND( - OUTPUT ${_output} - COMMAND ${_command} - DEPENDS ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_targetName}_pch_dephelp - ) - - ADD_PRECOMPILED_HEADER_TO_TARGET(${_targetName} ${_input} ${_output} ${_dowarn}) -ENDMACRO(ADD_PRECOMPILED_HEADER) - -# Generates the use of precompiled in a target, -# without using depency targets (2 extra for each target) -# Using Visual, must also add ${_targetName}_pch to sources -# Not needed by Xcode - -MACRO(GET_NATIVE_PRECOMPILED_HEADER _targetName _input) - - if(CMAKE_GENERATOR MATCHES Visual*) - - SET(_dummy_str "#include \"${_input}\"\n" - "// This is required to suppress LNK4221. Very annoying.\n" - "void *g_${_targetName}Dummy = 0\;\n") - - # Use of cxx extension for generated files (as Qt does) - SET(${_targetName}_pch ${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch.cxx) - if(EXISTS ${${_targetName}_pch}) - # Check if contents is the same, if not rewrite - # todo - else(EXISTS ${${_targetName}_pch}) - FILE(WRITE ${${_targetName}_pch} ${_dummy_str}) - endif(EXISTS ${${_targetName}_pch}) - endif(CMAKE_GENERATOR MATCHES Visual*) - -ENDMACRO(GET_NATIVE_PRECOMPILED_HEADER) - -MACRO(ADD_NATIVE_PRECOMPILED_HEADER _targetName _input) - - IF( "${ARGN}" STREQUAL "0") - SET(_dowarn 0) - ELSE( "${ARGN}" STREQUAL "0") - SET(_dowarn 1) - ENDIF("${ARGN}" STREQUAL "0") - - if(CMAKE_GENERATOR MATCHES Visual*) - # Auto include the precompile (useful for moc processing, since the use of - # precompiled is specified at the target level - # and I don't want to specifiy /F- for each moc/res/ui generated files (using Qt) - - GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS) - if (${oldProps} MATCHES NOTFOUND) - SET(oldProps "") - endif(${oldProps} MATCHES NOTFOUND) - - SET(newProperties "${oldProps} /Yu\"${_input}.h\" /FI\"${_input}.h\"") - SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS "${newProperties}") - - #also inlude ${oldProps} to have the same compile options - SET_SOURCE_FILES_PROPERTIES(${_input}.cpp PROPERTIES COMPILE_FLAGS "${oldProps} /Yc\"${_input}.h\"") - - else(CMAKE_GENERATOR MATCHES Visual*) - - if (CMAKE_GENERATOR MATCHES Xcode) - # For Xcode, cmake needs my patch to process - # GCC_PREFIX_HEADER and GCC_PRECOMPILE_PREFIX_HEADER as target properties - - GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS) - if (${oldProps} MATCHES NOTFOUND) - SET(oldProps "") - endif(${oldProps} MATCHES NOTFOUND) - - # When buiding out of the tree, precompiled may not be located - # Use full path instead. - GET_FILENAME_COMPONENT(fullPath ${_input} ABSOLUTE) - - SET_TARGET_PROPERTIES(${_targetName} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${fullPath}") - SET_TARGET_PROPERTIES(${_targetName} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES") - - else (CMAKE_GENERATOR MATCHES Xcode) - - #Fallback to the "old" precompiled suppport - #ADD_PRECOMPILED_HEADER(${_targetName} ${_input} ${_dowarn}) - endif(CMAKE_GENERATOR MATCHES Xcode) - endif(CMAKE_GENERATOR MATCHES Visual*) - -ENDMACRO(ADD_NATIVE_PRECOMPILED_HEADER) diff --git a/cmake/FindPlatform.cmake b/cmake/FindPlatform.cmake deleted file mode 100644 index 60ce00149b3..00000000000 --- a/cmake/FindPlatform.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# default to x86 platform. We'll check for X64 in a bit -SET(PLATFORM X86) - -# This definition is necessary to work around a bug with Intellisense described -# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper -# debugger functionality. - -IF(CMAKE_SIZEOF_VOID_P MATCHES 8) - MESSAGE(STATUS "Detected 64-bit platform.") - if(WIN32) - ADD_DEFINITIONS("-D_WIN64") - ENDIF() - SET (PLATFORM X64) -ELSE() - MESSAGE(STATUS "Detected 32-bit platform.") -ENDIF() diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake deleted file mode 100644 index 993ac5126c2..00000000000 --- a/cmake/FindReadline.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# find Readline (terminal input library) includes and library -# -# READLINE_INCLUDE_DIR - where the directory containing the READLINE headers can be found -# READLINE_LIBRARY - full path to the READLINE library -# READLINE_FOUND - TRUE if READLINE was found - -MACRO(FIND_READLINE) - -FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) -FIND_LIBRARY(READLINE_LIBRARY NAMES readline) - -IF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) - SET(READLINE_FOUND TRUE) - MESSAGE(STATUS "Found Readline library: ${READLINE_LIBRARY}") - MESSAGE(STATUS "Include dir is: ${READLINE_INCLUDE_DIR}") - INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) -ELSE (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) - SET(READLINE_FOUND FALSE) - MESSAGE(FATAL_ERROR "** Readline library not found!\n** Your distro may provide a binary for Readline e.g. for ubuntu try apt-get install libreadline5-dev") -ENDIF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) - -ENDMACRO(FIND_READLINE) diff --git a/cmake/FindSSE.cmake b/cmake/FindSSE.cmake deleted file mode 100644 index 6ece8768968..00000000000 --- a/cmake/FindSSE.cmake +++ /dev/null @@ -1,104 +0,0 @@ -# Check if SSE instructions are available on the machine where -# the project is compiled. - -IF(CMAKE_SYSTEM_NAME MATCHES "Linux") - EXEC_PROGRAM(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO) - - STRING(REGEX REPLACE "^.*(sse2).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "sse2" "${SSE_THERE}" SSE2_TRUE) - IF (SSE2_TRUE) - set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") - ELSE (SSE2_TRUE) - set(SSE2_FOUND false CACHE BOOL "SSE2 available on host") - ENDIF (SSE2_TRUE) - - # /proc/cpuinfo apparently omits sse3 :( - STRING(REGEX REPLACE "^.*[^s](sse3).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "sse3" "${SSE_THERE}" SSE3_TRUE) - IF (NOT SSE3_TRUE) - STRING(REGEX REPLACE "^.*(T2300).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "T2300" "${SSE_THERE}" SSE3_TRUE) - ENDIF (NOT SSE3_TRUE) - - STRING(REGEX REPLACE "^.*(ssse3).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "ssse3" "${SSE_THERE}" SSSE3_TRUE) - IF (SSE3_TRUE OR SSSE3_TRUE) - set(SSE3_FOUND true CACHE BOOL "SSE3 available on host") - ELSE (SSE3_TRUE OR SSSE3_TRUE) - set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") - ENDIF (SSE3_TRUE OR SSSE3_TRUE) - IF (SSSE3_TRUE) - set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host") - ELSE (SSSE3_TRUE) - set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") - ENDIF (SSSE3_TRUE) - - STRING(REGEX REPLACE "^.*(sse4_1).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "sse4_1" "${SSE_THERE}" SSE41_TRUE) - IF (SSE41_TRUE) - set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host") - ELSE (SSE41_TRUE) - set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") - ENDIF (SSE41_TRUE) -ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin") - EXEC_PROGRAM("/usr/sbin/sysctl -n machdep.cpu.features" OUTPUT_VARIABLE - CPUINFO) - - STRING(REGEX REPLACE "^.*[^S](SSE2).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "SSE2" "${SSE_THERE}" SSE2_TRUE) - IF (SSE2_TRUE) - set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") - ELSE (SSE2_TRUE) - set(SSE2_FOUND false CACHE BOOL "SSE2 available on host") - ENDIF (SSE2_TRUE) - - STRING(REGEX REPLACE "^.*[^S](SSE3).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "SSE3" "${SSE_THERE}" SSE3_TRUE) - IF (SSE3_TRUE) - set(SSE3_FOUND true CACHE BOOL "SSE3 available on host") - ELSE (SSE3_TRUE) - set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") - ENDIF (SSE3_TRUE) - - STRING(REGEX REPLACE "^.*(SSSE3).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "SSSE3" "${SSE_THERE}" SSSE3_TRUE) - IF (SSSE3_TRUE) - set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host") - ELSE (SSSE3_TRUE) - set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") - ENDIF (SSSE3_TRUE) - - STRING(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" SSE_THERE ${CPUINFO}) - STRING(COMPARE EQUAL "SSE4.1" "${SSE_THERE}" SSE41_TRUE) - IF (SSE41_TRUE) - set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host") - ELSE (SSE41_TRUE) - set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") - ENDIF (SSE41_TRUE) -ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows") - # TODO - set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") - set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") - set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") - set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") -ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") - set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") - set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") - set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") -ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") - -if(NOT SSE2_FOUND) - MESSAGE(STATUS "Could not find hardware support for SSE2 on this machine.") -endif(NOT SSE2_FOUND) -if(NOT SSE3_FOUND) - MESSAGE(STATUS "Could not find hardware support for SSE3 on this machine.") -endif(NOT SSE3_FOUND) -if(NOT SSSE3_FOUND) - MESSAGE(STATUS "Could not find hardware support for SSSE3 on this machine.") -endif(NOT SSSE3_FOUND) -if(NOT SSE4_1_FOUND) - MESSAGE(STATUS "Could not find hardware support for SSE4.1 on this machine.") -endif(NOT SSE4_1_FOUND) - -mark_as_advanced(SSE2_FOUND SSE3_FOUND SSSE3_FOUND SSE4_1_FOUND) diff --git a/cmake/MacroEnsureVersion.cmake b/cmake/MacroEnsureVersion.cmake deleted file mode 100644 index 6797e5b7dbb..00000000000 --- a/cmake/MacroEnsureVersion.cmake +++ /dev/null @@ -1,117 +0,0 @@ -# This file defines the following macros for developers to use in ensuring -# that installed software is of the right version: -# -# MACRO_ENSURE_VERSION - test that a version number is greater than -# or equal to some minimum -# MACRO_ENSURE_VERSION_RANGE - test that a version number is greater than -# or equal to some minimum and less than some -# maximum -# MACRO_ENSURE_VERSION2 - deprecated, do not use in new code -# - -# MACRO_ENSURE_VERSION -# This macro compares version numbers of the form "x.y.z" or "x.y" -# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) -# will set FOO_VERSION_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION -# Leading and trailing text is ok, e.g. -# MACRO_ENSURE_VERSION( "2.5.31" "flex 2.5.4a" VERSION_OK) -# which means 2.5.31 is required and "flex 2.5.4a" is what was found on the system - -# Copyright (c) 2006, David Faure, -# Copyright (c) 2007, Will Stephenson -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -# MACRO_ENSURE_VERSION_RANGE -# This macro ensures that a version number of the form -# "x.y.z" or "x.y" falls within a range defined by -# min_version <= found_version < max_version. -# If this expression holds, FOO_VERSION_OK will be set TRUE -# -# Example: MACRO_ENSURE_VERSION_RANGE3( "0.1.0" ${FOOCODE_VERSION} "0.7.0" FOO_VERSION_OK ) -# -# This macro will break silently if any of x,y,z are greater than 100. -# -# Copyright (c) 2007, Will Stephenson -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -# NORMALIZE_VERSION -# Helper macro to convert version numbers of the form "x.y.z" -# to an integer equal to 10^4 * x + 10^2 * y + z -# -# This macro will break silently if any of x,y,z are greater than 100. -# -# Copyright (c) 2006, David Faure, -# Copyright (c) 2007, Will Stephenson -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -# CHECK_RANGE_INCLUSIVE_LOWER -# Helper macro to check whether x <= y < z -# -# Copyright (c) 2007, Will Stephenson -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - - -MACRO(NORMALIZE_VERSION _requested_version _normalized_version) - STRING(REGEX MATCH "[^0-9]*[0-9]+\\.[0-9]+\\.[0-9]+.*" _threePartMatch "${_requested_version}") - if (_threePartMatch) - # parse the parts of the version string - STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major_vers "${_requested_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor_vers "${_requested_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch_vers "${_requested_version}") - else (_threePartMatch) - STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" _major_vers "${_requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" _minor_vers "${_requested_version}") - set(_patch_vers "0") - endif (_threePartMatch) - - # compute an overall version number which can be compared at once - MATH(EXPR ${_normalized_version} "${_major_vers}*10000 + ${_minor_vers}*100 + ${_patch_vers}") -ENDMACRO(NORMALIZE_VERSION) - -MACRO(MACRO_CHECK_RANGE_INCLUSIVE_LOWER _lower_limit _value _upper_limit _ok) - if (${_value} LESS ${_lower_limit}) - set( ${_ok} FALSE ) - elseif (${_value} EQUAL ${_lower_limit}) - set( ${_ok} TRUE ) - elseif (${_value} EQUAL ${_upper_limit}) - set( ${_ok} FALSE ) - elseif (${_value} GREATER ${_upper_limit}) - set( ${_ok} FALSE ) - else (${_value} LESS ${_lower_limit}) - set( ${_ok} TRUE ) - endif (${_value} LESS ${_lower_limit}) -ENDMACRO(MACRO_CHECK_RANGE_INCLUSIVE_LOWER) - -MACRO(MACRO_ENSURE_VERSION requested_version found_version var_too_old) - NORMALIZE_VERSION( ${requested_version} req_vers_num ) - NORMALIZE_VERSION( ${found_version} found_vers_num ) - - if (found_vers_num LESS req_vers_num) - set( ${var_too_old} FALSE ) - else (found_vers_num LESS req_vers_num) - set( ${var_too_old} TRUE ) - endif (found_vers_num LESS req_vers_num) - -ENDMACRO(MACRO_ENSURE_VERSION) - -MACRO(MACRO_ENSURE_VERSION2 requested_version2 found_version2 var_too_old2) - MACRO_ENSURE_VERSION( ${requested_version2} ${found_version2} ${var_too_old2}) -ENDMACRO(MACRO_ENSURE_VERSION2) - -MACRO(MACRO_ENSURE_VERSION_RANGE min_version found_version max_version var_ok) - NORMALIZE_VERSION( ${min_version} req_vers_num ) - NORMALIZE_VERSION( ${found_version} found_vers_num ) - NORMALIZE_VERSION( ${max_version} max_vers_num ) - - MACRO_CHECK_RANGE_INCLUSIVE_LOWER( ${req_vers_num} ${found_vers_num} ${max_vers_num} ${var_ok}) -ENDMACRO(MACRO_ENSURE_VERSION_RANGE) - - diff --git a/cmake/OptimizeForArchitecture.cmake b/cmake/OptimizeForArchitecture.cmake deleted file mode 100644 index 4f10270b97d..00000000000 --- a/cmake/OptimizeForArchitecture.cmake +++ /dev/null @@ -1,224 +0,0 @@ -include (AddCompilerFlag) -include (MacroEnsureVersion) - -macro(_my_find _list _value _ret) - list(FIND ${_list} "${_value}" _found) - if(_found EQUAL -1) - set(${_ret} FALSE) - else(_found EQUAL -1) - set(${_ret} TRUE) - endif(_found EQUAL -1) -endmacro(_my_find) - -macro(OptimizeForArchitecture) - set(TARGET_ARCHITECTURE "auto" CACHE STRING "CPU architecture to optimize for. Using an incorrect setting here can result in crashes of the resulting binary because of invalid instructions used.\nSetting the value to \"auto\" will try to optimize for the architecture where cmake is called.\nOther supported values are: \"core\", \"merom\" (65nm Core2), \"penryn\" (45nm Core2), \"nehalem\", \"westmere\", \"sandy-bridge\", \"atom\", \"k8\", \"k8-sse3\", \"barcelona\", \"istanbul\", \"magny-cours\".") - string(TOLOWER "${TARGET_ARCHITECTURE}" TARGET_ARCHITECTURE) - - set(_march_flag_list) - set(_available_vector_units_list) - - if(TARGET_ARCHITECTURE STREQUAL "auto") - set(TARGET_ARCHITECTURE "generic") - set(_vendor_id) - set(_cpu_family) - set(_cpu_model) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - file(READ "/proc/cpuinfo" _cpuinfo) - string(REGEX REPLACE ".*vendor_id[ \t]*:[ \t]+([a-zA-Z0-9_-]+).*" "\\1" _vendor_id "${_cpuinfo}") - string(REGEX REPLACE ".*cpu family[ \t]*:[ \t]+([a-zA-Z0-9_-]+).*" "\\1" _cpu_family "${_cpuinfo}") - string(REGEX REPLACE ".*model[ \t]*:[ \t]+([a-zA-Z0-9_-]+).*" "\\1" _cpu_model "${_cpuinfo}") - elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - exec_program("/usr/sbin/sysctl -n machdep.cpu.vendor" OUTPUT_VARIABLE _vendor_id) - exec_program("/usr/sbin/sysctl -n machdep.cpu.model" OUTPUT_VARIABLE _cpu_model) - exec_program("/usr/sbin/sysctl -n machdep.cpu.family" OUTPUT_VARIABLE _cpu_family) - elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") - get_filename_component(_vendor_id "[HKEY_LOCAL_MACHINE\\Hardware\\Description\\System\\CentralProcessor\\0;VendorIdentifier]" NAME CACHE) - get_filename_component(_cpu_id "[HKEY_LOCAL_MACHINE\\Hardware\\Description\\System\\CentralProcessor\\0;Identifier]" NAME CACHE) - mark_as_advanced(_vendor_id _cpu_id) - string(REGEX REPLACE ".* Family ([0-9]+) .*" "\\1" _cpu_family "${_cpu_id}") - string(REGEX REPLACE ".* Model ([0-9]+) .*" "\\1" _cpu_model "${_cpu_id}") - endif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - if(_vendor_id STREQUAL "GenuineIntel") - if(_cpu_family EQUAL 6) - # Any recent Intel CPU except NetBurst - if(_cpu_model EQUAL 37) - set(TARGET_ARCHITECTURE "westmere") - elseif(_cpu_model EQUAL 30) - set(TARGET_ARCHITECTURE "allendale") - elseif(_cpu_model EQUAL 29) - set(TARGET_ARCHITECTURE "penryn") - elseif(_cpu_model EQUAL 28) - set(TARGET_ARCHITECTURE "atom") - elseif(_cpu_model EQUAL 26) - set(TARGET_ARCHITECTURE "nehalem") - elseif(_cpu_model EQUAL 23) - set(TARGET_ARCHITECTURE "penryn") - elseif(_cpu_model EQUAL 15) - set(TARGET_ARCHITECTURE "merom") - elseif(_cpu_model EQUAL 14) - set(TARGET_ARCHITECTURE "core") - endif(_cpu_model EQUAL 37) - elseif(_cpu_family EQUAL 7) # Itanium (not supported) - elseif(_cpu_family EQUAL 15) # NetBurst - list(APPEND _available_vector_units_list "sse" "sse2") - if(_cpu_model GREATER 2) # Not sure whether this must be 3 or even 4 instead - list(APPEND _available_vector_units_list "sse" "sse2" "sse3") - endif(_cpu_model GREATER 2) - endif(_cpu_family EQUAL 6) - elseif(_vendor_id STREQUAL "AuthenticAMD") - if(_cpu_family EQUAL 16) - set(TARGET_ARCHITECTURE "barcelona") - elseif(_cpu_family EQUAL 15) - set(TARGET_ARCHITECTURE "k8") - if(_cpu_model GREATER 64) # I don't know the right number to put here. This is just a guess from the hardware I have access to - set(TARGET_ARCHITECTURE "k8-sse3") - endif(_cpu_model GREATER 64) - endif(_cpu_family EQUAL 16) - endif(_vendor_id STREQUAL "GenuineIntel") - endif(TARGET_ARCHITECTURE STREQUAL "auto") - - if(TARGET_ARCHITECTURE STREQUAL "core") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3") - elseif(TARGET_ARCHITECTURE STREQUAL "merom") - list(APPEND _march_flag_list "merom") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3") - elseif(TARGET_ARCHITECTURE STREQUAL "penryn") - list(APPEND _march_flag_list "penryn") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3" "sse4.1") - elseif(TARGET_ARCHITECTURE STREQUAL "nehalem") - list(APPEND _march_flag_list "nehalem") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3" "sse4.1" "sse4.2") - elseif(TARGET_ARCHITECTURE STREQUAL "allendale") - list(APPEND _march_flag_list "allendale") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3" "sse4.1" "sse4.2") - elseif(TARGET_ARCHITECTURE STREQUAL "westmere") - list(APPEND _march_flag_list "westmere") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3" "sse4.1" "sse4.2") - elseif(TARGET_ARCHITECTURE STREQUAL "sandy-bridge") - list(APPEND _march_flag_list "sandybridge") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3" "sse4.1" "sse4.2" "avx") - elseif(TARGET_ARCHITECTURE STREQUAL "atom") - list(APPEND _march_flag_list "atom") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "ssse3") - elseif(TARGET_ARCHITECTURE STREQUAL "k8") - list(APPEND _march_flag_list "k8") - list(APPEND _available_vector_units_list "sse" "sse2") - elseif(TARGET_ARCHITECTURE STREQUAL "k8-sse3") - list(APPEND _march_flag_list "k8-sse3") - list(APPEND _march_flag_list "k8") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3") - elseif(TARGET_ARCHITECTURE STREQUAL "barcelona") - list(APPEND _march_flag_list "barcelona") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "sse4a") - elseif(TARGET_ARCHITECTURE STREQUAL "istanbul") - list(APPEND _march_flag_list "istanbul") - list(APPEND _march_flag_list "barcelona") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "sse4a") - elseif(TARGET_ARCHITECTURE STREQUAL "magny-cours") - list(APPEND _march_flag_list "magnycours") - list(APPEND _march_flag_list "istanbul") - list(APPEND _march_flag_list "barcelona") - list(APPEND _march_flag_list "core2") - list(APPEND _available_vector_units_list "sse" "sse2" "sse3" "sse4a") - elseif(TARGET_ARCHITECTURE STREQUAL "generic") - list(APPEND _march_flag_list "generic") - else(TARGET_ARCHITECTURE STREQUAL "core") - message(FATAL_ERROR "Unknown target architecture: \"${TARGET_ARCHITECTURE}\". Please set TARGET_ARCHITECTURE to a supported value.") - endif(TARGET_ARCHITECTURE STREQUAL "core") - - set(_disable_vector_unit_list) - set(_enable_vector_unit_list) - _my_find(_available_vector_units_list "sse2" SSE2_FOUND) - set(USE_SSE2 ${SSE2_FOUND} CACHE BOOL "Use SSE2. If SSE2 instructions are not enabled the SSE implementation will be disabled.") - if(USE_SSE2) - list(APPEND _enable_vector_unit_list "sse2") - _my_find(_available_vector_units_list "sse3" SSE3_FOUND) - set(USE_SSE3 ${SSE3_FOUND} CACHE BOOL "Use SSE3. If SSE3 instructions are not enabled they will be emulated.") - if(USE_SSE3) - list(APPEND _enable_vector_unit_list "sse3") - _my_find(_available_vector_units_list "ssse3" SSSE3_FOUND) - _my_find(_available_vector_units_list "sse4a" SSE4a_FOUND) - set(USE_SSSE3 ${SSSE3_FOUND} CACHE BOOL "Use SSSE3. If SSSE3 instructions are not enabled they will be emulated.") - set(USE_SSE4a ${SSE4a_FOUND} CACHE BOOL "Use SSE4a. If SSE4a instructions are not enabled they will be emulated.") - if(USE_SSSE3) - list(APPEND _enable_vector_unit_list "ssse3") - _my_find(_available_vector_units_list "sse4.1" SSE4_1_FOUND) - set(USE_SSE4_1 ${SSE4_1_FOUND} CACHE BOOL "Use SSE4.1. If SSE4.1 instructions are not enabled they will be emulated.") - if(USE_SSE4_1) - list(APPEND _enable_vector_unit_list "sse4.1") - _my_find(_available_vector_units_list "sse4.2" SSE4_2_FOUND) - set(USE_SSE4_2 ${SSE4_2_FOUND} CACHE BOOL "Use SSE4.2. If SSE4.2 instructions are not enabled they will be emulated.") - if(USE_SSE4_2) - list(APPEND _enable_vector_unit_list "sse4.2") - else(USE_SSE4_2) - list(APPEND _disable_vector_unit_list "sse4.2") - endif(USE_SSE4_2) - else(USE_SSE4_1) - list(APPEND _disable_vector_unit_list "sse4.1" "sse4.2") - endif(USE_SSE4_1) - else(USE_SSSE3) - list(APPEND _disable_vector_unit_list "ssse3" "sse4.1" "sse4.2") - endif(USE_SSSE3) - if(USE_SSE4a) - list(APPEND _enable_vector_unit_list "sse4a") - else(USE_SSE4a) - list(APPEND _disable_vector_unit_list "sse4a") - endif(USE_SSE4a) - else(USE_SSE3) - list(APPEND _disable_vector_unit_list "sse3" "ssse3" "sse4.1" "sse4.2" "sse4a") - endif(USE_SSE3) - else(USE_SSE2) - list(APPEND _disable_vector_unit_list "sse2" "sse3" "ssse3" "sse4.1" "sse4.2" "sse4a") - endif(USE_SSE2) - if(CMAKE_C_COMPILER MATCHES "cl(.exe)?$") # MSVC - # MSVC on 32 bit can select only /arch:SSE2 - # MSVC on 64 bit cannot select anything - if(NOT CMAKE_CL_64) - _my_find(_enable_vector_unit_list "sse2" SSE2_FOUND) - AddCompilerFlag("/arch:SSE2") - endif(NOT CMAKE_CL_64) - foreach(_flag ${_enable_vector_unit_list}) - string(TOUPPER "${_flag}" _flag) - string(REPLACE "." "_" _flag "__${_flag}__") - add_definitions("-D${_flag}") - endforeach(_flag) - else(CMAKE_C_COMPILER MATCHES "cl(.exe)?$") - foreach(_flag ${_march_flag_list}) - AddCompilerFlag("-march=${_flag}" _good) - if(_good) - break() - endif(_good) - endforeach(_flag) - foreach(_flag ${_enable_vector_unit_list}) - AddCompilerFlag("-m${_flag}") - endforeach(_flag) - foreach(_flag ${_disable_vector_unit_list}) - AddCompilerFlag("-mno-${_flag}") - endforeach(_flag) - # Not really target architecture specific, but GCC 4.5.[01] fail at inlining some functions, - # creating functions with a single instructions, thus a large overhead. This is a good - # (because central) place to fix the problem - if(CMAKE_COMPILER_IS_GNUCXX) - exec_program(${CMAKE_C_COMPILER} ARGS -dumpversion OUTPUT_VARIABLE _gcc_version) - macro_ensure_version("4.5.0" "${_gcc_version}" GCC_4_5_0) - if(GCC_4_5_0) - macro_ensure_version("4.5.2" "${_gcc_version}" GCC_4_5_2) - if(NOT GCC_4_5_2) - AddCompilerFlag("--param early-inlining-insns=12") - endif(NOT GCC_4_5_2) - endif(GCC_4_5_0) - endif(CMAKE_COMPILER_IS_GNUCXX) - endif(CMAKE_C_COMPILER MATCHES "cl(.exe)?$") - - mark_as_advanced(USE_SSE2 USE_SSE3 USE_SSE4a USE_SSSE3) -endmacro(OptimizeForArchitecture) diff --git a/cmake/SSETests.cmake b/cmake/SSETests.cmake deleted file mode 100644 index dddb565d6c0..00000000000 --- a/cmake/SSETests.cmake +++ /dev/null @@ -1,33 +0,0 @@ -if(CMAKE_COMPILER_IS_GNUCXX) - # check the GCC version - exec_program(${CMAKE_C_COMPILER} ARGS -dumpversion OUTPUT_VARIABLE _gcc_version) - macro_ensure_version("4.4.1" "${_gcc_version}" GCC_4_4_1) - if(NOT GCC_4_4_1) - message(STATUS "\n--\n-- WARNING : Your GCC is older than 4.4.1. This is known to cause problems/bugs.\n-- Please update to the latest GCC if you can.\n--\n--") - macro_ensure_version("4.3.0" "${_gcc_version}" GCC_4_3_0) - if(NOT GCC_4_3_0) - message(STATUS "\n--\n-- WARNING : Your GCC is older than 4.3.0. It is unable to handle all SSE2 intrinsics.\n-- All SSE code will be disabled. Please update to the latest GCC if you can.\n--\n--") - set(SSE_INTRINSICS_BROKEN true) - endif(NOT GCC_4_3_0) - endif(NOT GCC_4_4_1) - - if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - set(ENABLE_STRICT_ALIASING true CACHE BOOL "Enables strict aliasing rules for more aggressive optimizations") - if(NOT ENABLE_STRICT_ALIASING) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing ") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-strict-aliasing ") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing ") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -fno-strict-aliasing ") - endif(NOT ENABLE_STRICT_ALIASING) - endif(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - - # if compiling for 32 bit x86 we need to use the -mfpmath=sse since the x87 is broken by design - CHECK_CXX_SOURCE_RUNS("int main() { return sizeof(void*) != 8; }" VOID_PTR_IS_64BIT) - if(NOT VOID_PTR_IS_64BIT) - exec_program(${CMAKE_C_COMPILER} ARGS -dumpmachine OUTPUT_VARIABLE _gcc_machine) - if(_gcc_machine MATCHES "[x34567]86") - AddCompilerFlag("-mfpmath=sse") - endif(_gcc_machine MATCHES "[x34567]86") - endif(NOT VOID_PTR_IS_64BIT) -endif() - diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in deleted file mode 100644 index 06f9c8263a8..00000000000 --- a/cmake/cmake_uninstall.cmake.in +++ /dev/null @@ -1,23 +0,0 @@ -# from cmake wiki -IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") -ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - -FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) -STRING(REGEX REPLACE "\n" ";" files "${files}") -FOREACH(file ${files}) - MESSAGE(STATUS "Uninstalling \"${file}\"") - IF(EXISTS "${file}") - EXEC_PROGRAM( - "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" - OUTPUT_VARIABLE rm_out - RETURN_VALUE rm_retval - ) - IF("${rm_retval}" STREQUAL 0) - ELSE("${rm_retval}" STREQUAL 0) - MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") - ENDIF("${rm_retval}" STREQUAL 0) - ELSE(EXISTS "${file}") - MESSAGE(STATUS "File \"${file}\" does not exist.") - ENDIF(EXISTS "${file}") -ENDFOREACH(file) diff --git a/cmake/compiler/gcc/settings.cmake b/cmake/compiler/gcc/settings.cmake new file mode 100644 index 00000000000..1d981509972 --- /dev/null +++ b/cmake/compiler/gcc/settings.cmake @@ -0,0 +1,15 @@ +add_definitions(-fno-delete-null-pointer-checks) + +if( USE_SFMT) + add_definitions(-msse2) +endif() + +if( WITH_WARNINGS ) + add_definitions(-Wall -Wfatal-errors -Wextra) +else() + add_definitions(--no-warnings) +endif() + +if( WITH_COREDEBUG ) + add_definitions(-ggdb3) +endif() diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake new file mode 100644 index 00000000000..cea2911084b --- /dev/null +++ b/cmake/compiler/msvc/settings.cmake @@ -0,0 +1,49 @@ +# set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# set up output paths ofr static libraries etc (commented out - shown here as an example only) +#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# mark 32 bit executables large address aware so they can use > 2GB address space +if(CMAKE_SIZEOF_VOID_P MATCHES 4) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") + message(STATUS "- MSVC: Enabled large address awareness") +endif() + +# multithreaded compiling on VS +if((NOT USE_COREPCH) AND (NOT USE_SCRIPTPCH)) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") + message(STATUS "- MSVC: PCH not used - enabled multithreaded compiling") +endif() + +# This definition is necessary to work around a bug with Intellisense described +# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper +# debugger functionality. + +if(${PLATFORM} STREQUAL "X64") + add_definitions("-D_WIN64") + message(STATUS "- MSVC: 64-bit platform, enforced -D_WIN64 parameter") +endif() + +# Defining _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 eliminates the warning by changing the strcpy call to strcpy_s, which prevents buffer overruns +# DISABLED UNTILL FURTHER, NEEDS TESTING AND VERIFICATION +#add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES) +#message(STATUS "- MSVC: Overload standard names") + +# disable warnings in Visual Studio 8 and above if not wanted +if(NOT WITH_WARNINGS) + # Ignore warnings about older, less secure functions + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + message(STATUS "- MSVC: Disabled NON-SECURE warnings") + + #Ignore warnings about POSIX deprecation + add_definitions(-D_CRT_NONSTDC_NO_WARNINGS) + message(STATUS "- MSVC: Disabled POSIX warnings") + + if(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996 /wd4355 /wd4244 /wd4985 /wd4267 /wd4619") + message(STATUS "- MSVC: Disabled generic compiletime warnings") + endif() +endif() diff --git a/cmake/macros/CheckBuildDir.cmake b/cmake/macros/CheckBuildDir.cmake new file mode 100644 index 00000000000..868643285ef --- /dev/null +++ b/cmake/macros/CheckBuildDir.cmake @@ -0,0 +1,23 @@ +# Copyright (C) 2008-2010 Trinity +# +# 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. + +# +# Force out-of-source build +# + +string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" BUILDING_IN_SOURCE) + +if( BUILDING_IN_SOURCE ) + message(FATAL_ERROR " + This project requires an out of source build. Remove the file 'CMakeCache.txt' + found in this directory before continuing, create a separate build directory + and run 'cmake path_to_project [options]' from there. + ") +endif() diff --git a/cmake/macros/CheckPlatform.cmake b/cmake/macros/CheckPlatform.cmake new file mode 100644 index 00000000000..a9c80458c02 --- /dev/null +++ b/cmake/macros/CheckPlatform.cmake @@ -0,0 +1,19 @@ +# default to x86 platform. We'll check for X64 in a bit +set(PLATFORM X86) + +if(CMAKE_SIZEOF_VOID_P MATCHES 8) + set(PLATFORM X64) + MESSAGE(STATUS "Detected 64-bit platform") +else() + MESSAGE(STATUS "Detected 32-bit platform") +endif() + +include("${CMAKE_SOURCE_DIR}/cmake/platform/settings.cmake") + +if(WIN32) + include("${CMAKE_SOURCE_DIR}/cmake/platform/settings.win32.cmake") +elseif(APPLE) + include("${CMAKE_SOURCE_DIR}/cmake/platform/settings.osx.cmake") +elseif(UNIX) + include("${CMAKE_SOURCE_DIR}/cmake/platform/settings.unix.cmake") +endif() diff --git a/cmake/macros/EnsureVersion.cmake b/cmake/macros/EnsureVersion.cmake new file mode 100644 index 00000000000..a85e12abb7f --- /dev/null +++ b/cmake/macros/EnsureVersion.cmake @@ -0,0 +1,115 @@ +# This file defines the following macros for developers to use in ensuring +# that installed software is of the right version: +# +# ENSURE_VERSION - test that a version number is greater than +# or equal to some minimum +# ENSURE_VERSION_RANGE - test that a version number is greater than +# or equal to some minimum and less than some +# maximum +# ENSURE_VERSION2 - deprecated, do not use in new code +# + +# ENSURE_VERSION +# This macro compares version numbers of the form "x.y.z" or "x.y" +# ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) +# will set FOO_VERSION_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION +# Leading and trailing text is ok, e.g. +# ENSURE_VERSION( "2.5.31" "flex 2.5.4a" VERSION_OK) +# which means 2.5.31 is required and "flex 2.5.4a" is what was found on the system + +# Copyright (c) 2006, David Faure, +# Copyright (c) 2007, Will Stephenson +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# ENSURE_VERSION_RANGE +# This macro ensures that a version number of the form +# "x.y.z" or "x.y" falls within a range defined by +# min_version <= found_version < max_version. +# If this expression holds, FOO_VERSION_OK will be set TRUE +# +# Example: ENSURE_VERSION_RANGE3( "0.1.0" ${FOOCODE_VERSION} "0.7.0" FOO_VERSION_OK ) +# +# This macro will break silently if any of x,y,z are greater than 100. +# +# Copyright (c) 2007, Will Stephenson +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# NORMALIZE_VERSION +# Helper macro to convert version numbers of the form "x.y.z" +# to an integer equal to 10^4 * x + 10^2 * y + z +# +# This macro will break silently if any of x,y,z are greater than 100. +# +# Copyright (c) 2006, David Faure, +# Copyright (c) 2007, Will Stephenson +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# CHECK_RANGE_INCLUSIVE_LOWER +# Helper macro to check whether x <= y < z +# +# Copyright (c) 2007, Will Stephenson +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +MACRO(NORMALIZE_VERSION _requested_version _normalized_version) + STRING(REGEX MATCH "[^0-9]*[0-9]+\\.[0-9]+\\.[0-9]+.*" _threePartMatch "${_requested_version}") + if (_threePartMatch) + # parse the parts of the version string + STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" _major_vers "${_requested_version}") + STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" _minor_vers "${_requested_version}") + STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" _patch_vers "${_requested_version}") + else (_threePartMatch) + STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" _major_vers "${_requested_version}") + STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" _minor_vers "${_requested_version}") + set(_patch_vers "0") + endif (_threePartMatch) + + # compute an overall version number which can be compared at once + MATH(EXPR ${_normalized_version} "${_major_vers}*10000 + ${_minor_vers}*100 + ${_patch_vers}") +ENDMACRO(NORMALIZE_VERSION) + +MACRO(CHECK_RANGE_INCLUSIVE_LOWER _lower_limit _value _upper_limit _ok) + if (${_value} LESS ${_lower_limit}) + set( ${_ok} FALSE ) + elseif (${_value} EQUAL ${_lower_limit}) + set( ${_ok} TRUE ) + elseif (${_value} EQUAL ${_upper_limit}) + set( ${_ok} FALSE ) + elseif (${_value} GREATER ${_upper_limit}) + set( ${_ok} FALSE ) + else (${_value} LESS ${_lower_limit}) + set( ${_ok} TRUE ) + endif (${_value} LESS ${_lower_limit}) +ENDMACRO(CHECK_RANGE_INCLUSIVE_LOWER) + +MACRO(ENSURE_VERSION requested_version found_version var_too_old) + NORMALIZE_VERSION( ${requested_version} req_vers_num ) + NORMALIZE_VERSION( ${found_version} found_vers_num ) + + if (found_vers_num LESS req_vers_num) + set( ${var_too_old} FALSE ) + else (found_vers_num LESS req_vers_num) + set( ${var_too_old} TRUE ) + endif (found_vers_num LESS req_vers_num) + +ENDMACRO(ENSURE_VERSION) + +MACRO(ENSURE_VERSION2 requested_version2 found_version2 var_too_old2) + ENSURE_VERSION( ${requested_version2} ${found_version2} ${var_too_old2}) +ENDMACRO(ENSURE_VERSION2) + +MACRO(ENSURE_VERSION_RANGE min_version found_version max_version var_ok) + NORMALIZE_VERSION( ${min_version} req_vers_num ) + NORMALIZE_VERSION( ${found_version} found_vers_num ) + NORMALIZE_VERSION( ${max_version} max_vers_num ) + + CHECK_RANGE_INCLUSIVE_LOWER( ${req_vers_num} ${found_vers_num} ${max_vers_num} ${var_ok}) +ENDMACRO(ENSURE_VERSION_RANGE) diff --git a/cmake/macros/FindACE.cmake b/cmake/macros/FindACE.cmake new file mode 100644 index 00000000000..4ade5f64b03 --- /dev/null +++ b/cmake/macros/FindACE.cmake @@ -0,0 +1,65 @@ +# +# Find the ACE client includes and library +# + +# This module defines +# ACE_INCLUDE_DIR, where to find ace.h +# ACE_LIBRARIES, the libraries to link against +# ACE_FOUND, if false, you cannot build anything that requires ACE + +# also defined, but not for general use are +# ACE_LIBRARY, where to find the ACE library. + +set( ACE_FOUND 0 ) + +if ( UNIX ) + FIND_PATH( ACE_INCLUDE_DIR + NAMES + ace/ACE.h + PATHS + /usr/include + /usr/include/ace + /usr/local/include + /usr/local/include/ace + $ENV{ACE_ROOT} + $ENV{ACE_ROOT}/include + ${CMAKE_SOURCE_DIR}/externals/ace + DOC + "Specify include-directories that might contain ace.h here." + ) + FIND_LIBRARY( ACE_LIBRARY + NAMES + ace ACE + PATHS + /usr/lib + /usr/lib/ace + /usr/local/lib + /usr/local/lib/ace + /usr/local/ace/lib + $ENV{ACE_ROOT}/lib + $ENV{ACE_ROOT} + DOC "Specify library-locations that might contain the ACE library here." + ) + +# FIND_LIBRARY( ACE_EXTRA_LIBRARIES +# NAMES +# z zlib +# PATHS +# /usr/lib +# /usr/local/lib +# DOC +# "if more libraries are necessary to link into ACE, specify them here." +# ) + + if ( ACE_LIBRARY ) + if ( ACE_INCLUDE_DIR ) + set( ACE_FOUND 1 ) + message( STATUS "Found ACE library: ${ACE_LIBRARY}") + message( STATUS "Found ACE headers: ${ACE_INCLUDE_DIR}") + else ( ACE_INCLUDE_DIR ) + message(FATAL_ERROR "Could not find ACE headers! Please install ACE libraries and headers") + endif ( ACE_INCLUDE_DIR ) + endif ( ACE_LIBRARY ) + + mark_as_advanced( ACE_FOUND ACE_LIBRARY ACE_EXTRA_LIBRARIES ACE_INCLUDE_DIR ) +endif (UNIX) diff --git a/cmake/macros/FindMySQL.cmake b/cmake/macros/FindMySQL.cmake new file mode 100644 index 00000000000..bc4edaf1c24 --- /dev/null +++ b/cmake/macros/FindMySQL.cmake @@ -0,0 +1,156 @@ +# +# Find the MySQL client includes and library +# + +# This module defines +# MYSQL_INCLUDE_DIR, where to find mysql.h +# MYSQL_LIBRARIES, the libraries to link against to connect to MySQL +# MYSQL_FOUND, if false, you cannot build anything that requires MySQL. + +# also defined, but not for general use are +# MYSQL_LIBRARY, where to find the MySQL library. + +set( MYSQL_FOUND 0 ) + +if( UNIX ) + set(MYSQL_CONFIG_PREFER_PATH "$ENV{MYSQL_HOME}/bin" CACHE FILEPATH + "preferred path to MySQL (mysql_config)" + ) + + find_program(MYSQL_CONFIG mysql_config + ${MYSQL_CONFIG_PREFER_PATH} + /usr/local/mysql/bin/ + /usr/local/bin/ + /usr/bin/ + ) + + if( MYSQL_CONFIG ) + message(STATUS "Using mysql-config: ${MYSQL_CONFIG}") + # set INCLUDE_DIR + exec_program(${MYSQL_CONFIG} + ARGS --include + OUTPUT_VARIABLE MY_TMP + ) + + string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}") + set(MYSQL_ADD_INCLUDE_PATH ${MY_TMP} CACHE FILEPATH INTERNAL) + #message("[DEBUG] MYSQL ADD_INCLUDE_PATH : ${MYSQL_ADD_INCLUDE_PATH}") + # set LIBRARY_DIR + exec_program(${MYSQL_CONFIG} + ARGS --libs_r + OUTPUT_VARIABLE MY_TMP + ) + set(MYSQL_ADD_LIBRARIES "") + string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}") + foreach(LIB ${MYSQL_LIB_LIST}) + string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}") + list(APPEND MYSQL_ADD_LIBRARIES "${LIB}") + #message("[DEBUG] MYSQL ADD_LIBRARIES : ${MYSQL_ADD_LIBRARIES}") + endforeach(LIB ${MYSQL_LIB_LIST}) + + set(MYSQL_ADD_LIBRARIES_PATH "") + string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}") + foreach(LIB ${MYSQL_LIBDIR_LIST}) + string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}") + list(APPEND MYSQL_ADD_LIBRARIES_PATH "${LIB}") + #message("[DEBUG] MYSQL ADD_LIBRARIES_PATH : ${MYSQL_ADD_LIBRARIES_PATH}") + endforeach(LIB ${MYSQL_LIBS}) + + else( MYSQL_CONFIG ) + set(MYSQL_ADD_LIBRARIES "") + list(APPEND MYSQL_ADD_LIBRARIES "mysqlclient_r") + endif( MYSQL_CONFIG ) +endif( UNIX ) + +find_path(MYSQL_INCLUDE_DIR + NAMES + mysql.h + PATHS + ${MYSQL_ADD_INCLUDE_PATH} + /usr/include + /usr/include/mysql + /usr/local/include + /usr/local/include/mysql + /usr/local/mysql/include + "C:/Program Files/MySQL/include" + "C:/Program Files/MySQL/MySQL Server 5.0/include" + "C:/Program Files/MySQL/MySQL Server 5.1/include" + "C:/MySQL/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/include" + "$ENV{ProgramFiles}/MySQL/*/include" + "$ENV{SystemDrive}/MySQL/*/include" + "c:/msys/local/include" + DOC + "Specify the directory containing mysql.h." +) + +if( UNIX ) +foreach(LIB ${MYSQL_ADD_LIBRARIES}) + find_library( MYSQL_LIBRARY + NAMES + mysql libmysql ${LIB} + PATHS + ${MYSQL_ADD_LIBRARIES_PATH} + /usr/lib + /usr/lib/mysql + /usr/local/lib + /usr/local/lib/mysql + /usr/local/mysql/lib + DOC "Specify the location of the mysql library here." + ) +endforeach(LIB ${MYSQL_ADD_LIBRARY}) +endif( UNIX ) + +if( WIN32 ) + find_library( MYSQL_LIBRARY + NAMES + libmysql + PATHS + ${MYSQL_ADD_LIBRARIES_PATH} + "C:/Program Files/MySQL/lib" + "C:/Program Files/MySQL/MySQL Server 5.0/lib/opt" + "C:/Program Files/MySQL/MySQL Server 5.1/lib/opt" + "C:/MySQL/lib/debug" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.0;Location]/lib/opt" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\MySQL AB\\MySQL Server 5.1;Location]/lib/opt" + "$ENV{ProgramFiles}/MySQL/*/lib/opt" + "$ENV{SystemDrive}/MySQL/*/lib/opt" + "c:/msys/local/include" + DOC "Specify the location of the mysql library here." + ) +endif( WIN32 ) + +# On Windows you typically don't need to include any extra libraries +# to build MYSQL stuff. + +if( NOT WIN32 ) + find_library( MYSQL_EXTRA_LIBRARIES + NAMES + z zlib + PATHS + /usr/lib + /usr/local/lib + DOC + "if more libraries are necessary to link in a MySQL client (typically zlib), specify them here." + ) +else( NOT WIN32 ) + set( MYSQL_EXTRA_LIBRARIES "" ) +endif( NOT WIN32 ) + +if( MYSQL_LIBRARY ) + if( MYSQL_INCLUDE_DIR ) + set( MYSQL_FOUND 1 ) + message(STATUS "Found MySQL library: ${MYSQL_LIBRARY}") + message(STATUS "Found MySQL headers: ${MYSQL_INCLUDE_DIR}") + else( MYSQL_INCLUDE_DIR ) + message(FATAL_ERROR "Could not find MySQL headers! Please install the development-libraries and headers.") + endif( MYSQL_INCLUDE_DIR ) + mark_as_advanced( MYSQL_FOUND MYSQL_LIBRARY MYSQL_EXTRA_LIBRARIES MYSQL_INCLUDE_DIR ) +else( MYSQL_LIBRARY ) + message(FATAL_ERROR "Could not find the MySQL libraries! Please install the development-libraries and headers.") +endif( MYSQL_LIBRARY ) diff --git a/cmake/macros/FindOpenSSL.cmake b/cmake/macros/FindOpenSSL.cmake new file mode 100644 index 00000000000..01f7d20e5d2 --- /dev/null +++ b/cmake/macros/FindOpenSSL.cmake @@ -0,0 +1,88 @@ +# +# Find the OpenSSL client includes and library +# + +# This module defines +# OPENSSL_INCLUDE_DIR, where to find openssl.h +# OPENSSL_LIBRARIES, the libraries to link against to connect to MySQL +# OPENSSL_FOUND, if false, you cannot build anything that requires MySQL. + +# also defined, but not for general use are +# OPENSSL_LIBRARY, where to find the MySQL library. + + set(OPENSSL_FOUND 0) + + if( MSVC ) + if(PLATFORM MATCHES X64) + set(TMP_OPENSSL_INCLUDE_DIR + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/include" + ) + set(TMP_OPENSSL_LIBRARIES + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/lib" + ) + else() + set(TMP_OPENSSL_INCLUDE_DIR + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include" + ) + set(TMP_OPENSSL_LIBRARIES + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib" + ) + endif() + endif() + + find_path(OPENSSL_INCLUDE_DIR + NAMES + openssl/ssl.h + PATHS + ${TMP_OPENSSL_INCLUDE_DIR} + /usr/include + /usr/include/openssl + /usr/local/include + /usr/local/include/openssl + /usr/local/openssl/include + DOC + "Specify the directory containing openssl.h." + ) + + find_library(OPENSSL_LIBRARIES + NAMES + ssleay32 + ssl + PATHS + ${TMP_OPENSSL_LIBRARIES} + /usr/lib + /usr/lib/ssl + /usr/local/lib + /usr/local/lib/ssl + /usr/local/ssl/lib + DOC "Specify the OpenSSL library here." + ) + + if( WIN32 ) + find_library(OPENSSL_EXTRA_LIBRARIES + NAMES + libeay32 + PATHS + ${TMP_OPENSSL_LIBRARIES} + DOC + "if more libraries are necessary to link in a OpenSSL client, specify them here." + ) + endif( WIN32 ) + + if( OPENSSL_LIBRARIES ) + if( OPENSSL_INCLUDE_DIR ) + set( OPENSSL_FOUND 1 ) + message(STATUS "Found OpenSSL library: ${OPENSSL_LIBRARIES}") + message(STATUS "Found OpenSSL headers: ${OPENSSL_INCLUDE_DIR}") + else ( OPENSSL_INCLUDE_DIR ) + message(FATAL_ERROR "Could not find OpenSSL headers! Please install the development-headers") + endif( OPENSSL_INCLUDE_DIR ) + else( OPENSSL_LIBRARIES ) + message(FATAL_ERROR "Could not find OpenSSL libraries! Please install the library before continuing") + endif( OPENSSL_LIBRARIES ) + + mark_as_advanced( OPENSSL_FOUND OPENSSL_LIBRARIES OPENSSL_EXTRA_LIBRARIES OPENSSL_INCLUDE_DIR ) diff --git a/cmake/macros/FindPCHSupport.cmake b/cmake/macros/FindPCHSupport.cmake new file mode 100644 index 00000000000..39a96b6cadb --- /dev/null +++ b/cmake/macros/FindPCHSupport.cmake @@ -0,0 +1,315 @@ +# - Try to find precompiled headers support for GCC 3.4 and 4.x (and MSVC) +# Once done this will define: +# +# Variable: +# PCHSupport_FOUND +# +# Macro: +# ADD_PRECOMPILED_HEADER _targetName _input _dowarn +# ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use _dowarn +# ADD_NATIVE_PRECOMPILED_HEADER _targetName _input _dowarn +# GET_NATIVE_PRECOMPILED_HEADER _targetName _input + +IF(CMAKE_COMPILER_IS_GNUCXX) + + EXEC_PROGRAM( + ${CMAKE_CXX_COMPILER} + ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion + OUTPUT_VARIABLE gcc_compiler_version + ) + #MESSAGE("GCC Version: ${gcc_compiler_version}") + IF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") + SET(PCHSupport_FOUND TRUE) + ELSE(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") + IF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") + SET(PCHSupport_FOUND TRUE) + ENDIF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]") + ENDIF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]") + + SET(_PCH_include_prefix "-I") + +ELSE(CMAKE_COMPILER_IS_GNUCXX) + + IF(WIN32) + SET(PCHSupport_FOUND TRUE) # for experimental msvc support + SET(_PCH_include_prefix "/I") + ELSE(WIN32) + SET(PCHSupport_FOUND FALSE) + ENDIF(WIN32) + +ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) + + STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name) + SET(${_out_compile_flags} ${${_flags_var_name}} ) + + IF(CMAKE_COMPILER_IS_GNUCXX) + GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) + IF(${_targetType} STREQUAL SHARED_LIBRARY AND NOT WIN32) + LIST(APPEND ${_out_compile_flags} -fPIC) + ENDIF() + + ELSE(CMAKE_COMPILER_IS_GNUCXX) + ## TODO ... ? or does it work out of the box + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + + GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES ) + FOREACH(item ${DIRINC}) + LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}${item}") + ENDFOREACH(item) + + GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) + GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS) + #MESSAGE("_directory_flags ${_directory_flags} ${_global_definitions}" ) + LIST(APPEND ${_out_compile_flags} ${_directory_flags}) + LIST(APPEND ${_out_compile_flags} ${_global_definitions}) + LIST(APPEND ${_out_compile_flags} ${CMAKE_CXX_FLAGS} ) + + SEPARATE_ARGUMENTS(${_out_compile_flags}) + +ENDMACRO(_PCH_GET_COMPILE_FLAGS) + +MACRO(_PCH_WRITE_PCHDEP_CXX _targetName _include_file _dephelp) + + SET(${_dephelp} ${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch_dephelp.cxx) + FILE(WRITE ${${_dephelp}} +"#include \"${_include_file}\" +int testfunction() +{ + return 0; +} +" + ) + +ENDMACRO(_PCH_WRITE_PCHDEP_CXX ) + +MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output) + + FILE(TO_NATIVE_PATH ${_input} _native_input) + FILE(TO_NATIVE_PATH ${_output} _native_output) + + + IF(CMAKE_COMPILER_IS_GNUCXX) + IF(CMAKE_CXX_COMPILER_ARG1) + # remove leading space in compiler argument + STRING(REGEX REPLACE "^ +" "" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1}) + + SET(${out_command} + ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} + ) + ELSE(CMAKE_CXX_COMPILER_ARG1) + SET(${out_command} + ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input} + ) + ENDIF(CMAKE_CXX_COMPILER_ARG1) + ELSE(CMAKE_COMPILER_IS_GNUCXX) + + SET(_dummy_str "#include <${_input}>") + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pch_dummy.cpp ${_dummy_str}) + + SET(${out_command} + ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} /c /Fp${_native_output} /Yc${_native_input} pch_dummy.cpp + ) + #/out:${_output} + + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +ENDMACRO(_PCH_GET_COMPILE_COMMAND ) + + + +MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn ) + + FILE(TO_NATIVE_PATH ${_pch_path} _native_pch_path) + + IF(CMAKE_COMPILER_IS_GNUCXX) + # for use with distcc and gcc >4.0.1 if preprocessed files are accessible + # on all remote machines set + # PCH_ADDITIONAL_COMPILER_FLAGS to -fpch-preprocess + # if you want warnings for invalid header files (which is very inconvenient + # if you have different versions of the headers for different build types + # you may set _pch_dowarn + IF (_dowarn) + SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} -Winvalid-pch " ) + ELSE (_dowarn) + SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include ${CMAKE_CURRENT_BINARY_DIR}/${_header_name} " ) + ENDIF (_dowarn) + ELSE(CMAKE_COMPILER_IS_GNUCXX) + + set(${_cflags} "/Fp${_native_pch_path} /Yu${_header_name}" ) + + ENDIF(CMAKE_COMPILER_IS_GNUCXX) + +ENDMACRO(_PCH_GET_TARGET_COMPILE_FLAGS ) + +MACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input _output) + GET_FILENAME_COMPONENT(_name ${_input} NAME) + GET_FILENAME_COMPONENT(_path ${_input} PATH) + SET(_output "${CMAKE_CURRENT_BINARY_DIR}/${_name}.gch/${_targetName}_${CMAKE_BUILD_TYPE}.gch") +ENDMACRO(GET_PRECOMPILED_HEADER_OUTPUT _targetName _input) + + +MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use ) + + # to do: test whether compiler flags match between target _targetName + # and _pch_output_to_use + GET_FILENAME_COMPONENT(_name ${_input} NAME) + + IF( "${ARGN}" STREQUAL "0") + SET(_dowarn 0) + ELSE( "${ARGN}" STREQUAL "0") + SET(_dowarn 1) + ENDIF("${ARGN}" STREQUAL "0") + + + _PCH_GET_TARGET_COMPILE_FLAGS(_target_cflags ${_name} ${_pch_output_to_use} ${_dowarn}) + # MESSAGE("Add flags ${_target_cflags} to ${_targetName} " ) + SET_TARGET_PROPERTIES(${_targetName} + PROPERTIES + COMPILE_FLAGS ${_target_cflags} + ) + + ADD_CUSTOM_TARGET(pch_Generate_${_targetName} + DEPENDS ${_pch_output_to_use} + ) + + ADD_DEPENDENCIES(${_targetName} pch_Generate_${_targetName} ) + +ENDMACRO(ADD_PRECOMPILED_HEADER_TO_TARGET) + +MACRO(ADD_PRECOMPILED_HEADER _targetName _input) + + SET(_PCH_current_target ${_targetName}) + + IF(NOT CMAKE_BUILD_TYPE) + MESSAGE(FATAL_ERROR + "This is the ADD_PRECOMPILED_HEADER macro. " + "You must set CMAKE_BUILD_TYPE!" + ) + ENDIF(NOT CMAKE_BUILD_TYPE) + + IF( "${ARGN}" STREQUAL "0") + SET(_dowarn 0) + ELSE( "${ARGN}" STREQUAL "0") + SET(_dowarn 1) + ENDIF("${ARGN}" STREQUAL "0") + + GET_FILENAME_COMPONENT(_name ${_input} NAME) + GET_FILENAME_COMPONENT(_path ${_input} PATH) + GET_PRECOMPILED_HEADER_OUTPUT( ${_targetName} ${_input} _output) + + GET_FILENAME_COMPONENT(_outdir ${_output} PATH ) + + GET_TARGET_PROPERTY(_targetType ${_PCH_current_target} TYPE) + _PCH_WRITE_PCHDEP_CXX(${_targetName} ${_input} _pch_dephelp_cxx) + + IF(${_targetType} STREQUAL SHARED_LIBRARY) + ADD_LIBRARY(${_targetName}_pch_dephelp STATIC ${_pch_dephelp_cxx} ) + ELSE(${_targetType} STREQUAL SHARED_LIBRARY) + ADD_LIBRARY(${_targetName}_pch_dephelp STATIC ${_pch_dephelp_cxx}) + ENDIF(${_targetType} STREQUAL SHARED_LIBRARY) + + FILE(MAKE_DIRECTORY ${_outdir}) + + _PCH_GET_COMPILE_FLAGS(_compile_FLAGS) + + #MESSAGE("_compile_FLAGS: ${_compile_FLAGS}") + #message("COMMAND ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}") + SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${_name} PROPERTIES GENERATED 1) + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name} + COMMAND ${CMAKE_COMMAND} -E copy ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} # ensure same directory! Required by gcc + DEPENDS ${_input} + ) + + #message("_command ${_input} ${_output}") + _PCH_GET_COMPILE_COMMAND(_command ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_output} ) + + #message(${_input} ) + #message("_output ${_output}") + + ADD_CUSTOM_COMMAND( + OUTPUT ${_output} + COMMAND ${_command} + DEPENDS ${_input} ${CMAKE_CURRENT_BINARY_DIR}/${_name} ${_targetName}_pch_dephelp + ) + + ADD_PRECOMPILED_HEADER_TO_TARGET(${_targetName} ${_input} ${_output} ${_dowarn}) +ENDMACRO(ADD_PRECOMPILED_HEADER) + +# Generates the use of precompiled in a target, +# without using depency targets (2 extra for each target) +# Using Visual, must also add ${_targetName}_pch to sources +# Not needed by Xcode + +MACRO(GET_NATIVE_PRECOMPILED_HEADER _targetName _input) + + if(CMAKE_GENERATOR MATCHES Visual*) + + SET(_dummy_str "#include \"${_input}\"\n" + "// This is required to suppress LNK4221. Very annoying.\n" + "void *g_${_targetName}Dummy = 0\;\n") + + # Use of cxx extension for generated files (as Qt does) + SET(${_targetName}_pch ${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch.cxx) + if(EXISTS ${${_targetName}_pch}) + # Check if contents is the same, if not rewrite + # todo + else(EXISTS ${${_targetName}_pch}) + FILE(WRITE ${${_targetName}_pch} ${_dummy_str}) + endif(EXISTS ${${_targetName}_pch}) + endif(CMAKE_GENERATOR MATCHES Visual*) + +ENDMACRO(GET_NATIVE_PRECOMPILED_HEADER) + +MACRO(ADD_NATIVE_PRECOMPILED_HEADER _targetName _input) + + IF( "${ARGN}" STREQUAL "0") + SET(_dowarn 0) + ELSE( "${ARGN}" STREQUAL "0") + SET(_dowarn 1) + ENDIF("${ARGN}" STREQUAL "0") + + if(CMAKE_GENERATOR MATCHES Visual*) + # Auto include the precompile (useful for moc processing, since the use of + # precompiled is specified at the target level + # and I don't want to specifiy /F- for each moc/res/ui generated files (using Qt) + + GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS) + if (${oldProps} MATCHES NOTFOUND) + SET(oldProps "") + endif(${oldProps} MATCHES NOTFOUND) + + SET(newProperties "${oldProps} /Yu\"${_input}.h\" /FI\"${_input}.h\"") + SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS "${newProperties}") + + #also inlude ${oldProps} to have the same compile options + SET_SOURCE_FILES_PROPERTIES(${_input}.cpp PROPERTIES COMPILE_FLAGS "${oldProps} /Yc\"${_input}.h\"") + + else(CMAKE_GENERATOR MATCHES Visual*) + + if (CMAKE_GENERATOR MATCHES Xcode) + # For Xcode, cmake needs my patch to process + # GCC_PREFIX_HEADER and GCC_PRECOMPILE_PREFIX_HEADER as target properties + + GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS) + if (${oldProps} MATCHES NOTFOUND) + SET(oldProps "") + endif(${oldProps} MATCHES NOTFOUND) + + # When buiding out of the tree, precompiled may not be located + # Use full path instead. + GET_FILENAME_COMPONENT(fullPath ${_input} ABSOLUTE) + + SET_TARGET_PROPERTIES(${_targetName} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${fullPath}") + SET_TARGET_PROPERTIES(${_targetName} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES") + + else (CMAKE_GENERATOR MATCHES Xcode) + + #Fallback to the "old" precompiled suppport + #ADD_PRECOMPILED_HEADER(${_targetName} ${_input} ${_dowarn}) + endif(CMAKE_GENERATOR MATCHES Xcode) + endif(CMAKE_GENERATOR MATCHES Visual*) + +ENDMACRO(ADD_NATIVE_PRECOMPILED_HEADER) diff --git a/cmake/macros/FindReadline.cmake b/cmake/macros/FindReadline.cmake new file mode 100644 index 00000000000..993ac5126c2 --- /dev/null +++ b/cmake/macros/FindReadline.cmake @@ -0,0 +1,22 @@ +# find Readline (terminal input library) includes and library +# +# READLINE_INCLUDE_DIR - where the directory containing the READLINE headers can be found +# READLINE_LIBRARY - full path to the READLINE library +# READLINE_FOUND - TRUE if READLINE was found + +MACRO(FIND_READLINE) + +FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) +FIND_LIBRARY(READLINE_LIBRARY NAMES readline) + +IF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) + SET(READLINE_FOUND TRUE) + MESSAGE(STATUS "Found Readline library: ${READLINE_LIBRARY}") + MESSAGE(STATUS "Include dir is: ${READLINE_INCLUDE_DIR}") + INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) +ELSE (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) + SET(READLINE_FOUND FALSE) + MESSAGE(FATAL_ERROR "** Readline library not found!\n** Your distro may provide a binary for Readline e.g. for ubuntu try apt-get install libreadline5-dev") +ENDIF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) + +ENDMACRO(FIND_READLINE) diff --git a/cmake/options.cmake b/cmake/options.cmake new file mode 100644 index 00000000000..74f25621d44 --- /dev/null +++ b/cmake/options.cmake @@ -0,0 +1,99 @@ +# Copyright (C) 2008-2010 Trinity +# +# 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. + +option(SERVERS "Build worldserver and authserver" 1) +option(SCRIPTS "Build core with scripts included" 1) +option(TOOLS "Build map/vmap extraction/assembler tools" 0) +option(USE_SCRIPTPCH "Use precompiled headers when compiling scripts" 1) +option(USE_COREPCH "Use precompiled headers when compiling servers" 1) +option(USE_SFMT "Use SFMT as random numbergenerator" 0) +option(WITH_WARNINGS "Show all warnings during compile" 1) +option(WITH_COREDEBUG "Include additional debug-code in core" 0) +option(WITH_SQL "Copy SQL files during installation" 0) + +# output generic information about the core and buildtype chosen + +message("") +message("* TrinityCore revision : ${HG_REVISION}") +if( UNIX ) + message("* Build binaries in : ${CMAKE_BUILD_TYPE} mode") +endif() +message("") + +# output information about installation-directories and locations + +message("* Install core to : ${CMAKE_INSTALL_PREFIX}") +if( UNIX ) + message("* Install libraries to : ${LIBSDIR}") + message("* Install configs to : ${CONF_DIR}") +endif() +message("") + +# Show infomation about the options selected during configuration + +if( SERVERS ) + message("* Build world/auth : Yes (default)") +else() + message("* Build world/authserver : No") +endif() + +if( SCRIPTS ) + message("* Build with scripts : Yes (default)") + add_definitions(-DSCRIPTS) +else() + message("* Build with scripts : No") + set(SCRIPTPCH 0) +endif() + +if( TOOLS ) + message("* Build map/vmap tools : Yes") +else() + message("* Build map/vmap tools : No (default)") +endif() + +if( WITH_SQL ) + message("* Install SQL-files : Yes") +else() + message("* Install SQL-files : No (default)") +endif() + +if( USE_COREPCH ) + message("* Build core w/PCH : Yes (default)") +else() + message("* Build core w/PCH : No") +endif() + +if( USE_SCRIPTPCH ) + message("* Build scripts w/PCH : Yes (default)") +else() + message("* Build scripts w/PCH : No") +endif() + +if( USE_SFMT ) + message("* Use SFMT for RNG : Yes") + add_definitions(-DUSE_SFMT_FOR_RNG) +else() + message("* Use SFMT for RNG : No (default)") +endif() + +if( WITH_WARNINGS ) + message("* Show all warnings : Yes") +else() + message("* Show compile-warnings : No (default)") +endif() + +if( WITH_COREDEBUG ) + message("* Use coreside debug : Yes") + add_definitions(-DTRINITY_DEBUG) +else() + message("* Use coreside debug : No (default)") +endif() + +message("") diff --git a/cmake/platform/settings.cmake b/cmake/platform/settings.cmake new file mode 100644 index 00000000000..6df5bc2165f --- /dev/null +++ b/cmake/platform/settings.cmake @@ -0,0 +1,5 @@ +# set installation prefix +if( PREFIX ) + set(CMAKE_INSTALL_PREFIX "${PREFIX}") +endif() + diff --git a/cmake/platform/settings.osx.cmake b/cmake/platform/settings.osx.cmake new file mode 100644 index 00000000000..609c6652b3f --- /dev/null +++ b/cmake/platform/settings.osx.cmake @@ -0,0 +1,3 @@ +set(MACOSX 1) +set(OSX_LIBS /usr/lib/libcrypto.dylib) +add_definitions(-D__ASSERTMACROS__) diff --git a/cmake/platform/settings.unix.cmake b/cmake/platform/settings.unix.cmake new file mode 100644 index 00000000000..6751f43b367 --- /dev/null +++ b/cmake/platform/settings.unix.cmake @@ -0,0 +1,24 @@ +# set default configuration directory +if( NOT CONF_DIR ) + set(CONF_DIR ${CMAKE_INSTALL_PREFIX}/etc) +endif() + +# set default library directory +if( NOT LIBSDIR ) + set(LIBSDIR ${CMAKE_INSTALL_PREFIX}/lib) +endif() + +# configure uninstaller +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY +) + +# create uninstaller target (allows for using "make uninstall") +add_custom_target(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" +) + +include(${CMAKE_SOURCE_DIR}/cmake/compiler/gcc/settings.cmake) + diff --git a/cmake/platform/settings.win32.cmake b/cmake/platform/settings.win32.cmake new file mode 100644 index 00000000000..f55f5702439 --- /dev/null +++ b/cmake/platform/settings.win32.cmake @@ -0,0 +1,15 @@ +# Package overloads +set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/dep/acelite) + +# check the CMake preload parameters (commented out by default) + +# overload CMAKE_INSTALL_PREFIX if not being set properly +#if( WIN32 ) +# if( NOT CYGWIN ) +# if( NOT CMAKE_INSTALL_PREFIX ) +# set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/bin") +# endif() +# endif() +#endif() + +include(${CMAKE_SOURCE_DIR}/cmake/compiler/msvc/settings.cmake) diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in new file mode 100644 index 00000000000..06f9c8263a8 --- /dev/null +++ b/cmake_uninstall.cmake.in @@ -0,0 +1,23 @@ +# from cmake wiki +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"${file}\"") + IF(EXISTS "${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF("${rm_retval}" STREQUAL 0) + ELSE("${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") + ENDIF("${rm_retval}" STREQUAL 0) + ELSE(EXISTS "${file}") + MESSAGE(STATUS "File \"${file}\" does not exist.") + ENDIF(EXISTS "${file}") +ENDFOREACH(file) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index a56ba351ded..25537fecf67 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -1,10 +1,6 @@ -add_subdirectory(updates) -add_subdirectory(scripts) -add_subdirectory(base) -add_subdirectory(create) - -########### install files ############### - -FILE(GLOB _SQL *.sql) - -install(FILES ${_SQL} DESTINATION share/trinity/sql) +if( SQL ) + add_subdirectory(updates) + add_subdirectory(scripts) + add_subdirectory(base) + add_subdirectory(create) +endif( SQL ) -- cgit v1.2.3