CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
  2. cmake_policy(VERSION 2.6)
  3. project(glm)
  4. enable_testing()
  5. list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
  6. include(GNUInstallDirs)
  7. add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  8. option(GLM_TEST_ENABLE "GLM test" OFF)
  9. if(NOT GLM_TEST_ENABLE)
  10. message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_TEST_ENABLE with ON to build and run the test bench")
  11. endif()
  12. if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX))
  13. option(GLM_TEST_ENABLE_CXX_98 "Enable C++ 98" OFF)
  14. option(GLM_TEST_ENABLE_CXX_0X "Enable C++ 0x" OFF)
  15. option(GLM_TEST_ENABLE_CXX_11 "Enable C++ 11" OFF)
  16. option(GLM_TEST_ENABLE_CXX_1Y "Enable C++ 1y" OFF)
  17. option(GLM_TEST_ENABLE_CXX_PEDANTIC "Pedantic" ON)
  18. if(GLM_TEST_ENABLE_CXX_PEDANTIC)
  19. add_definitions(-pedantic)
  20. endif()
  21. if(GLM_TEST_ENABLE_CXX_1Y)
  22. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1y")
  23. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
  24. set(CMAKE_CXX_FLAGS "-std=c++1y")
  25. elseif(GLM_TEST_ENABLE_CXX_11)
  26. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
  27. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
  28. set(CMAKE_CXX_FLAGS "-std=c++11")
  29. elseif(GLM_TEST_ENABLE_CXX_0X)
  30. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
  31. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
  32. set(CMAKE_CXX_FLAGS "-std=c++0x")
  33. elseif(GLM_TEST_ENABLE_CXX_98)
  34. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++98")
  35. set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
  36. set(CMAKE_CXX_FLAGS "-std=c++98")
  37. endif()
  38. endif()
  39. if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND WIN32))
  40. option(GLM_TEST_ENABLE_MS_EXTENSIONS "Enable MS extensions" OFF)
  41. if(NOT GLM_TEST_ENABLE_MS_EXTENSIONS)
  42. add_definitions(/Za)
  43. endif()
  44. endif()
  45. option(GLM_TEST_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF)
  46. option(GLM_TEST_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF)
  47. option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF)
  48. option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF)
  49. option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF)
  50. if(GLM_TEST_FORCE_PURE)
  51. add_definitions(-DGLM_FORCE_PURE)
  52. if(CMAKE_COMPILER_IS_GNUCXX)
  53. add_definitions(-mfpmath=387)
  54. elseif(MSVC)
  55. add_definitions(/arch:IA32)
  56. endif()
  57. elseif(GLM_TEST_ENABLE_AVX2)
  58. if(CMAKE_COMPILER_IS_GNUCXX)
  59. add_definitions(-mavx2)
  60. elseif(GLM_USE_INTEL)
  61. add_definitions(/QxAVX2)
  62. elseif(MSVC)
  63. add_definitions(/arch:AVX2)
  64. endif()
  65. elseif(GLM_TEST_ENABLE_AVX)
  66. if(CMAKE_COMPILER_IS_GNUCXX)
  67. add_definitions(-mavx)
  68. elseif(GLM_USE_INTEL)
  69. add_definitions(/QxAVX)
  70. elseif(MSVC)
  71. add_definitions(/arch:AVX)
  72. endif()
  73. elseif(GLM_TEST_ENABLE_SSE3)
  74. if(CMAKE_COMPILER_IS_GNUCXX)
  75. add_definitions(-msse3)
  76. elseif(GLM_USE_INTEL)
  77. add_definitions(/QxSSE3)
  78. elseif(MSVC)
  79. add_definitions(/arch:SSE2) # VC doesn't support /arch:SSE3
  80. endif()
  81. elseif(GLM_TEST_ENABLE_SSE2)
  82. if(CMAKE_COMPILER_IS_GNUCXX)
  83. add_definitions(-msse2)
  84. elseif(GLM_USE_INTEL)
  85. add_definitions(/QxSSE2)
  86. elseif(MSVC)
  87. if(NOT CMAKE_CL_64)
  88. add_definitions(/arch:SSE2)
  89. endif()
  90. endif()
  91. endif()
  92. option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF)
  93. if(GLM_TEST_ENABLE_FAST_MATH)
  94. if(CMAKE_COMPILER_IS_GNUCXX)
  95. add_definitions(-ffast-math)
  96. endif()
  97. if(MSVC)
  98. add_definitions(/fp:fast)
  99. endif()
  100. elseif(NOT GLM_TEST_ENABLE_FAST_MATH)
  101. if(MSVC)
  102. add_definitions(/fp:precise)
  103. endif()
  104. endif()
  105. if(CMAKE_COMPILER_IS_GNUCXX)
  106. #add_definitions(-S)
  107. #add_definitions(-s)
  108. #add_definitions(-m32)
  109. #add_definitions(-O3)
  110. #add_definitions(-fprofile-arcs -ftest-coverage) gcov
  111. #ctest_enable_coverage()
  112. endif()
  113. include_directories("${PROJECT_SOURCE_DIR}")
  114. include_directories("${PROJECT_SOURCE_DIR}/test/external")
  115. add_subdirectory(glm)
  116. add_subdirectory(test)
  117. add_subdirectory(util)
  118. install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR})