Merge pull request #1236 from pengx17:2.4_fix_retina_color_param
[profile/ivi/opencv.git] / cmake / OpenCVDetectTBB.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         endif()
67         set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")
68         link_directories("${TBB_LIB_DIR}")
69       endif()
70     endif()
71
72     set(HAVE_TBB 1)
73     if(NOT "${TBB_INCLUDE_DIRS}" STREQUAL "")
74       ocv_include_directories("${TBB_INCLUDE_DIRS}")
75     endif()
76   endif(TBB_INCLUDE_DIRS)
77 endif(NOT HAVE_TBB)
78
79 # get TBB version
80 if(HAVE_TBB)
81   find_file(TBB_STDDEF_PATH tbb/tbb_stddef.h "${TBB_INCLUDE_DIRS}")
82   mark_as_advanced(TBB _STDDEF_PATH)
83 endif()
84 if(HAVE_TBB AND TBB_STDDEF_PATH)
85   ocv_parse_header("${TBB_STDDEF_PATH}" TBB_VERSION_LINES TBB_VERSION_MAJOR TBB_VERSION_MINOR TBB_INTERFACE_VERSION)
86 else()
87   unset(TBB_VERSION_MAJOR)
88   unset(TBB_VERSION_MINOR)
89   unset(TBB_INTERFACE_VERSION)
90 endif()