CMakeCompilers.txt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. include(CheckCXXCompilerFlag)
  2. # C++11 support
  3. CHECK_CXX_COMPILER_FLAG(-std=c++11 COMPILER_SUPPORTS_CXX11)
  4. if(COMPILER_SUPPORTS_CXX11)
  5. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  6. else()
  7. CHECK_CXX_COMPILER_FLAG(-std=c++0x COMPILER_SUPPORTS_CXX0X)
  8. if(COMPILER_SUPPORTS_CXX0X)
  9. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
  10. else()
  11. message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
  12. endif()
  13. endif()
  14. # Use openmp
  15. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
  16. set(CMAKE_EXE_LINKER_FLAGS "-fopenmp")
  17. # optimization flags support
  18. if(CMAKE_BUILD_TYPE MATCHES Release)
  19. set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3")
  20. foreach(FLAG -march=native -mtune=native -funroll-loops)
  21. string(REGEX REPLACE -= _ FLAG_ID ${FLAG})
  22. string(TOUPPER ${FLAG_ID} FLAG_ID)
  23. CHECK_CXX_COMPILER_FLAG(${FLAG} COMPILER_SUPPORTS${FLAG_ID})
  24. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${FLAG}")
  25. endforeach()
  26. # For OSX use clang
  27. if(APPLE)
  28. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mfpmath=sse -Wa,-q")
  29. endif()
  30. else()
  31. add_definitions(-DCHECK_STRICTMOD)
  32. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
  33. endif()