aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/compiler/gcc/settings.cmake6
-rw-r--r--cmake/compiler/msvc/settings.cmake30
-rw-r--r--cmake/macros/CheckPlatform.cmake7
-rw-r--r--cmake/macros/FindOpenSSL.cmake2
4 files changed, 26 insertions, 19 deletions
diff --git a/cmake/compiler/gcc/settings.cmake b/cmake/compiler/gcc/settings.cmake
index f7b3638f6a5..a3a3240deb8 100644
--- a/cmake/compiler/gcc/settings.cmake
+++ b/cmake/compiler/gcc/settings.cmake
@@ -1,7 +1,11 @@
add_definitions(-fno-delete-null-pointer-checks)
if( USE_SFMT)
- add_definitions(-msse2 -mfpmath=sse -DHAVE_SSE2 -D__SSE2__)
+ if(PLATFORM EQUAL 32)
+ # Required on 32-bit systems to enable SSE2 (standard on x64)
+ add_definitions(-msse2 -mfpmath=sse)
+ endif()
+ add_definitions(-DHAVE_SSE2 -D__SSE2__)
message(STATUS "- GCC: SFMT enabled, SSE2 flags forced")
endif()
diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake
index 4604e285964..89841d87a7b 100644
--- a/cmake/compiler/msvc/settings.cmake
+++ b/cmake/compiler/msvc/settings.cmake
@@ -5,19 +5,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
#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()
-
-if(${PLATFORM} STREQUAL "X64")
+if(PLATFORM EQUAL 64)
# 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.
@@ -27,6 +15,22 @@ if(${PLATFORM} STREQUAL "X64")
#Enable extended object support for debug compiles on X64 (not required on X86)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj")
message(STATUS "- MSVC: Enabled extended object-support for debug-compiles")
+else()
+ # mark 32 bit executables large address aware so they can use > 2GB address space
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
+ message(STATUS "- MSVC: Enabled large address awareness")
+
+ # Test if we need SSE2-support
+ if(USE_SFMT)
+ add_definitions(/arch:SSE2)
+ message(STATUS "- MSVC: Enabled SSE2 support")
+ endif()
+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()
# Define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES - eliminates the warning by changing the strcpy call to strcpy_s, which prevents buffer overruns
diff --git a/cmake/macros/CheckPlatform.cmake b/cmake/macros/CheckPlatform.cmake
index 0cdf5d8ffbf..addc619207f 100644
--- a/cmake/macros/CheckPlatform.cmake
+++ b/cmake/macros/CheckPlatform.cmake
@@ -1,10 +1,9 @@
-# default to x86 platform. We'll check for X64 in a bit
-set(PLATFORM X86)
-
+# check what platform we're on (64-bit or 32-bit), and create a simpler test than CMAKE_SIZEOF_VOID_P
if(CMAKE_SIZEOF_VOID_P MATCHES 8)
- set(PLATFORM X64)
+ set(PLATFORM 64)
MESSAGE(STATUS "Detected 64-bit platform")
else()
+ set(PLATFORM 32)
MESSAGE(STATUS "Detected 32-bit platform")
endif()
diff --git a/cmake/macros/FindOpenSSL.cmake b/cmake/macros/FindOpenSSL.cmake
index 01f7d20e5d2..a2357af0742 100644
--- a/cmake/macros/FindOpenSSL.cmake
+++ b/cmake/macros/FindOpenSSL.cmake
@@ -13,7 +13,7 @@
set(OPENSSL_FOUND 0)
if( MSVC )
- if(PLATFORM MATCHES X64)
+ if(PLATFORM EQUAL 64)
set(TMP_OPENSSL_INCLUDE_DIR
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/include"
)