CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # ---------------------------------------------------------------------------
  2. # Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
  3. #
  4. # Distributed under the Boost Software License, Version 1.0
  5. # See accompanying file LICENSE_1_0.txt or copy at
  6. # http://www.boost.org/LICENSE_1_0.txt
  7. #
  8. # ---------------------------------------------------------------------------
  9. cmake_minimum_required(VERSION 2.8)
  10. project(BoostCompute)
  11. set(CMAKE_MODULE_PATH ${BoostCompute_SOURCE_DIR}/cmake)
  12. if (CMAKE_VERSION VERSION_LESS "3.1.0")
  13. list(APPEND CMAKE_MODULE_PATH "${BoostCompute_SOURCE_DIR}/cmake/opencl")
  14. endif()
  15. # find OpenCL
  16. find_package(OpenCL REQUIRED)
  17. include_directories(SYSTEM ${OpenCL_INCLUDE_DIRS})
  18. # find Boost
  19. find_package(Boost 1.54 REQUIRED)
  20. include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
  21. # optional support for c++11
  22. option(BOOST_COMPUTE_USE_CPP11 "Use C++11 features" OFF)
  23. if(NOT MSVC)
  24. if(${BOOST_COMPUTE_USE_CPP11})
  25. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  26. endif()
  27. endif()
  28. # optional support for offline-caching
  29. option(BOOST_COMPUTE_USE_OFFLINE_CACHE "Use offline cache for OpenCL program binaries" OFF)
  30. if(${BOOST_COMPUTE_USE_OFFLINE_CACHE})
  31. add_definitions(-DBOOST_COMPUTE_USE_OFFLINE_CACHE)
  32. endif()
  33. # thread-safety options
  34. option(BOOST_COMPUTE_THREAD_SAFE "Compile with BOOST_COMPUTE_THREAD_SAFE defined" OFF)
  35. if(${BOOST_COMPUTE_THREAD_SAFE})
  36. add_definitions(-DBOOST_COMPUTE_THREAD_SAFE)
  37. if(${BOOST_COMPUTE_USE_CPP11})
  38. if(MSVC)
  39. if (MSVC_VERSION GREATER 1800)
  40. add_definitions(-DBOOST_COMPUTE_HAVE_THREAD_LOCAL)
  41. endif()
  42. else()
  43. add_definitions(-DBOOST_COMPUTE_HAVE_THREAD_LOCAL)
  44. endif()
  45. endif()
  46. endif()
  47. # optional third-party libraries
  48. option(BOOST_COMPUTE_HAVE_EIGEN "Have Eigen" OFF)
  49. option(BOOST_COMPUTE_HAVE_OPENCV "Have OpenCV" OFF)
  50. option(BOOST_COMPUTE_HAVE_QT "Have Qt" OFF)
  51. option(BOOST_COMPUTE_HAVE_VTK "Have VTK" OFF)
  52. option(BOOST_COMPUTE_HAVE_CUDA "Have CUDA" OFF)
  53. option(BOOST_COMPUTE_HAVE_TBB "Have TBB" OFF)
  54. option(BOOST_COMPUTE_HAVE_BOLT "Have BOLT" OFF)
  55. include_directories(include)
  56. if(${OpenCL_HEADER_CL_EXT_FOUND})
  57. add_definitions(-DBOOST_COMPUTE_HAVE_HDR_CL_EXT)
  58. endif()
  59. if(WIN32)
  60. # optional support for boost dynamic libraries
  61. option(BOOST_COMPUTE_BOOST_ALL_DYN_LINK "Use boost dynamic link libraries" OFF)
  62. if(${BOOST_COMPUTE_BOOST_ALL_DYN_LINK})
  63. add_definitions(-DBOOST_ALL_DYN_LINK)
  64. else()
  65. # for default use statis libs
  66. set(Boost_USE_STATIC_LIBS ON)
  67. endif()
  68. link_directories(${Boost_LIBRARY_DIRS})
  69. endif()
  70. # compiler options
  71. option(BOOST_COMPUTE_ENABLE_COVERAGE "Enable code coverage generation" OFF)
  72. # Visual Studio C++
  73. if(MSVC)
  74. add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  75. add_definitions(-D_SCL_SECURE_NO_WARNINGS)
  76. add_definitions(-DNOMINMAX)
  77. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
  78. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4003") # Not enough actual parameters for a BOOST_PP macro
  79. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244") # Warning C4244: 'initializing': conversion from 'double' to 'int', possible loss of data
  80. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4305") # Warning C4305: 'initializing': truncation from 'double' to 'float'
  81. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800") # Warning C4800: 'uint32_t' : forcing value to bool 'true' or 'false' (performance warning)
  82. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4838") # Warning C4838: conversion from 'double' to 'float' requires a narrowing conversion
  83. endif()
  84. option(BOOST_COMPUTE_BUILD_TESTS "Build the Boost.Compute tests" OFF)
  85. if(${BOOST_COMPUTE_BUILD_TESTS})
  86. enable_testing()
  87. add_subdirectory(test)
  88. endif()
  89. option(BOOST_COMPUTE_BUILD_BENCHMARKS "Build the Boost.Compute benchmarks" OFF)
  90. if(${BOOST_COMPUTE_BUILD_BENCHMARKS})
  91. add_subdirectory(perf)
  92. endif()
  93. option(BOOST_COMPUTE_BUILD_EXAMPLES "Build the Boost.Compute examples" OFF)
  94. if(${BOOST_COMPUTE_BUILD_EXAMPLES})
  95. add_subdirectory(example)
  96. endif()
  97. # configure cmake config file
  98. configure_file(
  99. cmake/BoostComputeConfig.cmake.in
  100. ${BoostCompute_BINARY_DIR}/BoostComputeConfig.cmake
  101. @ONLY
  102. )
  103. # install cmake config file
  104. install(
  105. FILES ${BoostCompute_BINARY_DIR}/BoostComputeConfig.cmake
  106. DESTINATION lib/cmake/BoostCompute
  107. )
  108. # install header files
  109. install(DIRECTORY include/boost DESTINATION include/compute)