Home | History | Annotate | Download | only in cmake
      1 if(BUILD_TBB)
      2   add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/tbb")
      3   include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
      4   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
      5   add_definitions(-DTBB_USE_GCC_BUILTINS=1 -D__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1)
      6   if(tbb_need_GENERIC_DWORD_LOAD_STORE)
      7     add_definitions(-D__TBB_USE_GENERIC_DWORD_LOAD_STORE=1)
      8   endif()
      9   set(HAVE_TBB 1)
     10 elseif(UNIX AND NOT APPLE)
     11   PKG_CHECK_MODULES(TBB tbb)
     12 
     13   if(TBB_FOUND)
     14     set(HAVE_TBB 1)
     15     if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "")
     16       ocv_include_directories(${TBB_INCLUDE_DIRS})
     17     endif()
     18     link_directories(${TBB_LIBRARY_DIRS})
     19     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})
     20   endif()
     21 endif()
     22 
     23 if(NOT HAVE_TBB)
     24   set(TBB_DEFAULT_INCLUDE_DIRS
     25     "/opt/intel/tbb/include" "/usr/local/include" "/usr/include"
     26     "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB"
     27     "C:/Program Files (x86)/tbb/include"
     28     "C:/Program Files (x86)/tbb/include"
     29     "${CMAKE_INSTALL_PREFIX}/include")
     30 
     31   find_path(TBB_INCLUDE_DIRS "tbb/tbb.h" PATHS ${TBB_INCLUDE_DIR} ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
     32   if(TBB_INCLUDE_DIRS)
     33     if(UNIX)
     34       set(TBB_LIB_DIR "${TBB_INCLUDE_DIRS}/../lib" CACHE PATH "Full path of TBB library directory")
     35       link_directories("${TBB_LIB_DIR}")
     36     endif()
     37     if(APPLE)
     38       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib)
     39     elseif(ANDROID)
     40       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS}  tbb)
     41       add_definitions(-DTBB_USE_GCC_BUILTINS)
     42     elseif (UNIX)
     43       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
     44     elseif (WIN32)
     45       if(CMAKE_COMPILER_IS_GNUCXX)
     46         set(TBB_LIB_DIR "${TBB_INCLUDE_DIRS}/../lib" CACHE PATH "Full path of TBB library directory")
     47         link_directories("${TBB_LIB_DIR}")
     48         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
     49       else()
     50         get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIRS}/../lib" ABSOLUTE)
     51 
     52         if(CMAKE_SYSTEM_PROCESSOR MATCHES amd64*|x86_64* OR MSVC64)
     53           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")
     54         else()
     55           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32")
     56         endif()
     57 
     58         if(MSVC80)
     59           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8")
     60         elseif(MSVC90)
     61           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9")
     62         elseif(MSVC10)
     63           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10")
     64         elseif(MSVC11)
     65           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc11")
     66         elseif(MSVC12)
     67           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc12")
     68         endif()
     69         set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")
     70         link_directories("${TBB_LIB_DIR}")
     71       endif()
     72     endif()
     73 
     74     set(HAVE_TBB 1)
     75     if(NOT "${TBB_INCLUDE_DIRS}" STREQUAL "")
     76       ocv_include_directories("${TBB_INCLUDE_DIRS}")
     77     endif()
     78   endif(TBB_INCLUDE_DIRS)
     79 endif(NOT HAVE_TBB)
     80 
     81 # get TBB version
     82 if(HAVE_TBB)
     83   find_file(TBB_STDDEF_PATH tbb/tbb_stddef.h "${TBB_INCLUDE_DIRS}")
     84   mark_as_advanced(TBB _STDDEF_PATH)
     85 endif()
     86 if(HAVE_TBB AND TBB_STDDEF_PATH)
     87   ocv_parse_header("${TBB_STDDEF_PATH}" TBB_VERSION_LINES TBB_VERSION_MAJOR TBB_VERSION_MINOR TBB_INTERFACE_VERSION)
     88 else()
     89   unset(TBB_VERSION_MAJOR)
     90   unset(TBB_VERSION_MINOR)
     91   unset(TBB_INTERFACE_VERSION)
     92 endif()
     93