aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-04-05 17:55:32 +0200
committerShauren <shauren.trinity@gmail.com>2016-04-05 22:43:41 +0200
commit4a3a178d7fe9d2d7e8fde2fe915cf5cec5223502 (patch)
tree4d75c3393ff1707ec5a2793590f2496be8373a22
parent792299bbd544a44911e463383be567d7738412a5 (diff)
Buildsystem: Initial changes to support building with vs clang toolset
-rw-r--r--CMakeLists.txt6
-rw-r--r--cmake/compiler/msvc/settings.cmake6
-rw-r--r--cmake/macros/FindPCHSupport.cmake2
-rw-r--r--cmake/platform/win/settings.cmake21
-rw-r--r--dep/CMakeLists.txt4
-rw-r--r--src/common/CMakeLists.txt2
-rw-r--r--src/server/bnetserver/CMakeLists.txt2
-rw-r--r--src/server/database/CMakeLists.txt2
-rw-r--r--src/server/game/CMakeLists.txt2
-rw-r--r--src/server/proto/CMakeLists.txt6
-rw-r--r--src/server/scripts/CMakeLists.txt2
-rw-r--r--src/server/shared/CMakeLists.txt2
-rw-r--r--src/server/worldserver/CMakeLists.txt2
13 files changed, 30 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dda8f242feb..01d785ca855 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,11 @@ project(TrinityCore)
cmake_policy(SET CMP0005 OLD)
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_<Config> properties'
-endif(POLICY CMP0043)
+endif()
+
+if(POLICY CMP0054)
+ cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as variables or keywords when unquoted - prevents intepreting if (SOME_STRING_VARIABLE MATCHES "MSVC") as if (SOME_STRING_VARIABLE MATCHES "1")
+endif()
# add this options before PROJECT keyword
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake
index 86470f327c5..dd5b9a0b28b 100644
--- a/cmake/compiler/msvc/settings.cmake
+++ b/cmake/compiler/msvc/settings.cmake
@@ -31,7 +31,11 @@ else()
endif()
# Set build-directive (used in core to tell which buildtype we used)
-add_definitions(-D_BUILD_DIRECTIVE=\\"$(ConfigurationName)\\")
+if(CMAKE_MAKE_PROGRAM MATCHES "nmake")
+ add_definitions(-D_BUILD_DIRECTIVE=\\"${CMAKE_BUILD_TYPE}\\")
+else()
+ add_definitions(-D_BUILD_DIRECTIVE=\\"$(ConfigurationName)\\")
+endif()
# multithreaded compiling on VS
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
diff --git a/cmake/macros/FindPCHSupport.cmake b/cmake/macros/FindPCHSupport.cmake
index 6edc8e92890..9cc39a13b04 100644
--- a/cmake/macros/FindPCHSupport.cmake
+++ b/cmake/macros/FindPCHSupport.cmake
@@ -143,7 +143,7 @@ FUNCTION(ADD_CXX_PCH_XCODE TARGET_NAME_LIST PCH_HEADER PCH_SOURCE)
ENDFUNCTION(ADD_CXX_PCH_XCODE)
FUNCTION(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER PCH_SOURCE)
- IF (MSVC)
+ IF (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
ADD_CXX_PCH_MSVC("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE})
ELSEIF ("${CMAKE_GENERATOR}" MATCHES "Xcode")
ADD_CXX_PCH_XCODE("${TARGET_NAME_LIST}" ${PCH_HEADER} ${PCH_SOURCE})
diff --git a/cmake/platform/win/settings.cmake b/cmake/platform/win/settings.cmake
index da66daf0832..0c1a103304a 100644
--- a/cmake/platform/win/settings.cmake
+++ b/cmake/platform/win/settings.cmake
@@ -1,20 +1,9 @@
-# check the CMake preload parameters (commented out by default)
+add_definitions(-D_WIN32_WINNT=0x0601)
-# 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()
-
-if (WIN32)
- add_definitions(-D_WIN32_WINNT=0x0601)
-endif()
-
-if ( MSVC )
+if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
include(${CMAKE_SOURCE_DIR}/cmake/compiler/msvc/settings.cmake)
-elseif ( MINGW )
+elseif (CMAKE_CXX_PLATFORM_ID MATCHES "MinGW")
include(${CMAKE_SOURCE_DIR}/cmake/compiler/mingw/settings.cmake)
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ include(${CMAKE_SOURCE_DIR}/cmake/compiler/clang/settings.cmake)
endif()
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index f99e97960bc..e402eb849a5 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -8,7 +8,9 @@
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-if( MSVC )
+if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ string(REGEX REPLACE "/W[0-4] " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+ string(REGEX REPLACE "/W[0-4] " "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
add_definitions(/W0)
else()
add_definitions(-w)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 4250df6d1f1..436620e2900 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -33,8 +33,8 @@ GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_definitions(-DTRINITY_API_EXPORT_COMMON)
add_library(common
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
# Do NOT add any extra include directory here, as we don't want the common
diff --git a/src/server/bnetserver/CMakeLists.txt b/src/server/bnetserver/CMakeLists.txt
index c6e8808b69a..50267343dbe 100644
--- a/src/server/bnetserver/CMakeLists.txt
+++ b/src/server/bnetserver/CMakeLists.txt
@@ -31,8 +31,8 @@ endif()
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_executable(bnetserver
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
if (NOT WIN32)
diff --git a/src/server/database/CMakeLists.txt b/src/server/database/CMakeLists.txt
index 06772cd5309..236586075ee 100644
--- a/src/server/database/CMakeLists.txt
+++ b/src/server/database/CMakeLists.txt
@@ -22,8 +22,8 @@ endif()
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_library(database
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
# Do NOT add any extra include directory unless it does not create unneeded extra dependencies,
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index df0d2b7cc2a..60e86093f89 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -24,8 +24,8 @@ GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_definitions(-DTRINITY_API_EXPORT_GAME)
add_library(game
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
CollectIncludeDirectories(
diff --git a/src/server/proto/CMakeLists.txt b/src/server/proto/CMakeLists.txt
index fd20378084f..20235735b17 100644
--- a/src/server/proto/CMakeLists.txt
+++ b/src/server/proto/CMakeLists.txt
@@ -8,7 +8,9 @@
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-if (MSVC)
+if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ string(REGEX REPLACE "/W[0-4] " "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+ string(REGEX REPLACE "/W[0-4] " "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
add_definitions(/W0)
else()
add_definitions(-w)
@@ -30,8 +32,8 @@ GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_definitions(-DTRINITY_API_EXPORT_SHARED)
add_library(proto STATIC
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
CollectIncludeDirectories(
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index c5b6aed89b9..71e991b0c91 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -52,8 +52,8 @@ endif ()
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_library(scripts STATIC
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
target_include_directories(scripts
diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt
index 6b7ce7b5a1a..4cc02fc108e 100644
--- a/src/server/shared/CMakeLists.txt
+++ b/src/server/shared/CMakeLists.txt
@@ -24,8 +24,8 @@ GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_definitions(-DTRINITY_API_EXPORT_SHARED)
add_library(shared
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
CollectIncludeDirectories(
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
index 66555f99915..561271f7d38 100644
--- a/src/server/worldserver/CMakeLists.txt
+++ b/src/server/worldserver/CMakeLists.txt
@@ -29,8 +29,8 @@ endif()
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
add_executable(worldserver
- ${PRIVATE_SOURCES}
${PRIVATE_PCH_SOURCE}
+ ${PRIVATE_SOURCES}
)
if( NOT WIN32 )