blob: dddb565d6c0b063c63f88bfd6d22b7c85adfa402 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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()
|