diff options
-rw-r--r-- | cmake/compiler/gcc/settings.cmake | 6 | ||||
-rw-r--r-- | cmake/compiler/msvc/settings.cmake | 30 | ||||
-rw-r--r-- | cmake/macros/CheckPlatform.cmake | 7 | ||||
-rw-r--r-- | cmake/macros/FindOpenSSL.cmake | 2 |
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" ) |