FindTBB.cmake 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. ## ======================================================================== ##
  2. ## Copyright 2009-2017 Intel Corporation ##
  3. ## ##
  4. ## Licensed under the Apache License, Version 2.0 (the "License"); ##
  5. ## you may not use this file except in compliance with the License. ##
  6. ## You may obtain a copy of the License at ##
  7. ## ##
  8. ## http://www.apache.org/licenses/LICENSE-2.0 ##
  9. ## ##
  10. ## Unless required by applicable law or agreed to in writing, software ##
  11. ## distributed under the License is distributed on an "AS IS" BASIS, ##
  12. ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ##
  13. ## See the License for the specific language governing permissions and ##
  14. ## limitations under the License. ##
  15. ## ======================================================================== ##
  16. IF (WIN32)
  17. FIND_PATH(EMBREE_TBB_ROOT include/tbb/tbb.h
  18. DOC "Root of TBB installation"
  19. PATHS ${PROJECT_SOURCE_DIR}/tbb "C:/Program Files (x86)/Intel/Composer XE/tbb"
  20. NO_DEFAULT_PATH
  21. )
  22. FIND_PATH(EMBREE_TBB_ROOT include/tbb/tbb.h)
  23. IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
  24. SET(TBB_ARCH intel64)
  25. ELSE()
  26. SET(TBB_ARCH ia32)
  27. ENDIF()
  28. IF (MSVC10)
  29. SET(TBB_VCVER vc10)
  30. ELSEIF (MSVC11)
  31. SET(TBB_VCVER vc11)
  32. ELSE()
  33. SET(TBB_VCVER vc12)
  34. ENDIF()
  35. SET(TBB_LIBDIR ${EMBREE_TBB_ROOT}/lib/${TBB_ARCH}/${TBB_VCVER})
  36. SET(TBB_BINDIR ${EMBREE_TBB_ROOT}/bin/${TBB_ARCH}/${TBB_VCVER})
  37. IF (EMBREE_TBB_ROOT STREQUAL "")
  38. FIND_PATH(TBB_INCLUDE_DIR tbb/task_scheduler_init.h)
  39. FIND_LIBRARY(TBB_LIBRARY tbb)
  40. FIND_LIBRARY(TBB_LIBRARY_MALLOC tbbmalloc)
  41. ELSE()
  42. SET(TBB_INCLUDE_DIR TBB_INCLUDE_DIR-NOTFOUND)
  43. SET(TBB_LIBRARY TBB_LIBRARY-NOTFOUND)
  44. SET(TBB_LIBRARY_MALLOC TBB_LIBRARY_MALLOC-NOTFOUND)
  45. FIND_PATH(TBB_INCLUDE_DIR tbb/task_scheduler_init.h PATHS ${EMBREE_TBB_ROOT}/include NO_DEFAULT_PATH)
  46. FIND_LIBRARY(TBB_LIBRARY tbb PATHS ${TBB_LIBDIR} NO_DEFAULT_PATH)
  47. FIND_LIBRARY(TBB_LIBRARY_MALLOC tbbmalloc PATHS ${TBB_LIBDIR} NO_DEFAULT_PATH)
  48. ENDIF()
  49. ELSE ()
  50. FIND_PATH(EMBREE_TBB_ROOT include/tbb/tbb.h
  51. DOC "Root of TBB installation"
  52. PATHS ${PROJECT_SOURCE_DIR}/tbb /opt/intel/composerxe/tbb
  53. NO_DEFAULT_PATH
  54. )
  55. FIND_PATH(EMBREE_TBB_ROOT include/tbb/tbb.h)
  56. IF (EMBREE_TBB_ROOT STREQUAL "")
  57. FIND_PATH(TBB_INCLUDE_DIR tbb/task_scheduler_init.h)
  58. FIND_LIBRARY(TBB_LIBRARY tbb)
  59. FIND_LIBRARY(TBB_LIBRARY_MALLOC tbbmalloc)
  60. ELSE()
  61. SET(TBB_INCLUDE_DIR TBB_INCLUDE_DIR-NOTFOUND)
  62. SET(TBB_LIBRARY TBB_LIBRARY-NOTFOUND)
  63. SET(TBB_LIBRARY_MALLOC TBB_LIBRARY_MALLOC-NOTFOUND)
  64. IF (APPLE)
  65. FIND_PATH(TBB_INCLUDE_DIR tbb/task_scheduler_init.h PATHS ${EMBREE_TBB_ROOT}/include NO_DEFAULT_PATH)
  66. FIND_LIBRARY(TBB_LIBRARY tbb PATHS ${EMBREE_TBB_ROOT}/lib NO_DEFAULT_PATH)
  67. FIND_LIBRARY(TBB_LIBRARY_MALLOC tbbmalloc PATHS ${EMBREE_TBB_ROOT}/lib NO_DEFAULT_PATH)
  68. ELSE()
  69. FIND_PATH(TBB_INCLUDE_DIR tbb/task_scheduler_init.h PATHS ${EMBREE_TBB_ROOT}/include NO_DEFAULT_PATH)
  70. FIND_LIBRARY(TBB_LIBRARY tbb PATHS ${EMBREE_TBB_ROOT}/lib/intel64/gcc4.4 ${EMBREE_TBB_ROOT}/lib ${EMBREE_TBB_ROOT}/lib64 /usr/libx86_64-linux-gnu/ NO_DEFAULT_PATH)
  71. FIND_LIBRARY(TBB_LIBRARY_MALLOC tbbmalloc PATHS ${EMBREE_TBB_ROOT}/lib/intel64/gcc4.4 ${EMBREE_TBB_ROOT}/lib ${EMBREE_TBB_ROOT}/lib64 /usr/libx86_64-linux-gnu/ NO_DEFAULT_PATH)
  72. ENDIF()
  73. ENDIF()
  74. ENDIF()
  75. INCLUDE(FindPackageHandleStandardArgs)
  76. FIND_PACKAGE_HANDLE_STANDARD_ARGS(TBB DEFAULT_MSG TBB_INCLUDE_DIR TBB_LIBRARY TBB_LIBRARY_MALLOC)
  77. IF (TBB_FOUND)
  78. SET(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR})
  79. SET(TBB_LIBRARIES ${TBB_LIBRARY} ${TBB_LIBRARY_MALLOC})
  80. ENDIF()
  81. MARK_AS_ADVANCED(TBB_INCLUDE_DIR)
  82. MARK_AS_ADVANCED(TBB_LIBRARY)
  83. MARK_AS_ADVANCED(TBB_LIBRARY_MALLOC)
  84. ##############################################################
  85. # Install TBB
  86. ##############################################################
  87. IF (WIN32)
  88. INSTALL(PROGRAMS ${TBB_BINDIR}/tbb.dll ${TBB_BINDIR}/tbbmalloc.dll DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT examples)
  89. INSTALL(PROGRAMS ${TBB_BINDIR}/tbb.dll ${TBB_BINDIR}/tbbmalloc.dll DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
  90. ELSEIF (EMBREE_ZIP_MODE)
  91. IF (APPLE)
  92. INSTALL(PROGRAMS ${EMBREE_TBB_ROOT}/lib/libtbb.dylib ${EMBREE_TBB_ROOT}/lib/libtbbmalloc.dylib DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
  93. ELSE()
  94. INSTALL(PROGRAMS ${EMBREE_TBB_ROOT}/lib/intel64/gcc4.4/libtbb.so.2 ${EMBREE_TBB_ROOT}/lib/intel64/gcc4.4/libtbbmalloc.so.2 DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT lib)
  95. ENDIF()
  96. ENDIF()