CMakeBackwardCompatibilityCXX.cmake 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # - define a bunch of backwards compatibility varibles
  2. # CMAKE_ANSI_CXXFLAGS - flag for ansi c++
  3. # CMAKE_HAS_ANSI_STRING_STREAM - has <strstream>
  4. # INCLUDE(TestForANSIStreamHeaders)
  5. # INCLUDE(CheckIncludeFileCXX)
  6. # INCLUDE(TestForSTDNamespace)
  7. # INCLUDE(TestForANSIForScope)
  8. IF(NOT CMAKE_SKIP_COMPATIBILITY_TESTS)
  9. # check for some ANSI flags in the CXX compiler if it is not gnu
  10. IF(NOT CMAKE_COMPILER_IS_GNUCXX)
  11. INCLUDE(TestCXXAcceptsFlag)
  12. SET(CMAKE_TRY_ANSI_CXX_FLAGS "")
  13. IF(CMAKE_SYSTEM MATCHES "IRIX.*")
  14. SET(CMAKE_TRY_ANSI_CXX_FLAGS "-LANG:std")
  15. ENDIF(CMAKE_SYSTEM MATCHES "IRIX.*")
  16. IF(CMAKE_SYSTEM MATCHES "OSF.*")
  17. SET(CMAKE_TRY_ANSI_CXX_FLAGS "-std strict_ansi -nopure_cname")
  18. ENDIF(CMAKE_SYSTEM MATCHES "OSF.*")
  19. # if CMAKE_TRY_ANSI_CXX_FLAGS has something in it, see
  20. # if the compiler accepts it
  21. IF( CMAKE_TRY_ANSI_CXX_FLAGS MATCHES ".+")
  22. CHECK_CXX_ACCEPTS_FLAG(${CMAKE_TRY_ANSI_CXX_FLAGS} CMAKE_CXX_ACCEPTS_FLAGS)
  23. # if the compiler liked the flag then set CMAKE_ANSI_CXXFLAGS
  24. # to the flag
  25. IF(CMAKE_CXX_ACCEPTS_FLAGS)
  26. SET(CMAKE_ANSI_CXXFLAGS ${CMAKE_TRY_ANSI_CXX_FLAGS} CACHE INTERNAL
  27. "What flags are required by the c++ compiler to make it ansi." )
  28. ENDIF(CMAKE_CXX_ACCEPTS_FLAGS)
  29. ENDIF( CMAKE_TRY_ANSI_CXX_FLAGS MATCHES ".+")
  30. ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX)
  31. SET(CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS})
  32. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_ANSI_CXXFLAGS}")
  33. INCLUDE(TestForANSIStreamHeaders)
  34. INCLUDE(CheckIncludeFileCXX)
  35. INCLUDE(TestForSTDNamespace)
  36. INCLUDE(TestForANSIForScope)
  37. CHECK_INCLUDE_FILE_CXX("sstream" CMAKE_HAS_ANSI_STRING_STREAM)
  38. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}")
  39. IF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
  40. SET( CMAKE_NO_ANSI_STRING_STREAM 1 CACHE INTERNAL
  41. "Does the compiler support sstream or stringstream.")
  42. ENDIF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
  43. ENDIF(NOT CMAKE_SKIP_COMPATIBILITY_TESTS)