Added extra checks to ocl::Image2D
[profile/ivi/opencv.git] / cmake / OpenCVDetectTBB.cmake
index b651e37..8ff78bb 100644 (file)
@@ -1,8 +1,11 @@
-if(ANDROID)
+if(BUILD_TBB)
   add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/tbb")
-  include_directories(${TBB_INCLUDE_DIRS})
+  include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
-  add_definitions(-DTBB_USE_GCC_BUILTINS=1 -D__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1 -D__TBB_USE_GENERIC_DWORD_LOAD_STORE=1)
+  add_definitions(-DTBB_USE_GCC_BUILTINS=1 -D__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1)
+  if(tbb_need_GENERIC_DWORD_LOAD_STORE)
+    add_definitions(-D__TBB_USE_GENERIC_DWORD_LOAD_STORE=1)
+  endif()
   set(HAVE_TBB 1)
 elseif(UNIX AND NOT APPLE)
   PKG_CHECK_MODULES(TBB tbb)
@@ -10,7 +13,7 @@ elseif(UNIX AND NOT APPLE)
   if(TBB_FOUND)
     set(HAVE_TBB 1)
     if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "")
-      include_directories(${TBB_INCLUDE_DIRS})
+      ocv_include_directories(${TBB_INCLUDE_DIRS})
     endif()
     link_directories(${TBB_LIBRARY_DIRS})
     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})
@@ -18,12 +21,17 @@ elseif(UNIX AND NOT APPLE)
 endif()
 
 if(NOT HAVE_TBB)
-  set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB" "${CMAKE_INSTALL_PREFIX}/include")
+  set(TBB_DEFAULT_INCLUDE_DIRS
+    "/opt/intel/tbb/include" "/usr/local/include" "/usr/include"
+    "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB"
+    "C:/Program Files (x86)/tbb/include"
+    "C:/Program Files (x86)/tbb/include"
+    "${CMAKE_INSTALL_PREFIX}/include")
 
-  find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
-  if(TBB_INCLUDE_DIR)
+  find_path(TBB_INCLUDE_DIRS "tbb/tbb.h" PATHS ${TBB_INCLUDE_DIR} ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
+  if(TBB_INCLUDE_DIRS)
     if(UNIX)
-      set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
+      set(TBB_LIB_DIR "${TBB_INCLUDE_DIRS}/../lib" CACHE PATH "Full path of TBB library directory")
       link_directories("${TBB_LIB_DIR}")
     endif()
     if(APPLE)
@@ -35,11 +43,11 @@ if(NOT HAVE_TBB)
       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
     elseif (WIN32)
       if(CMAKE_COMPILER_IS_GNUCXX)
-        set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
+        set(TBB_LIB_DIR "${TBB_INCLUDE_DIRS}/../lib" CACHE PATH "Full path of TBB library directory")
         link_directories("${TBB_LIB_DIR}")
         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
       else()
-        get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE)
+        get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIRS}/../lib" ABSOLUTE)
 
         if(CMAKE_SYSTEM_PROCESSOR MATCHES amd64*|x86_64* OR MSVC64)
           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")
@@ -55,6 +63,8 @@ if(NOT HAVE_TBB)
           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10")
         elseif(MSVC11)
           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc11")
+        elseif(MSVC12)
+          set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc12")
         endif()
         set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")
         link_directories("${TBB_LIB_DIR}")
@@ -62,8 +72,21 @@ if(NOT HAVE_TBB)
     endif()
 
     set(HAVE_TBB 1)
-    if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "")
-      include_directories("${TBB_INCLUDE_DIR}")
+    if(NOT "${TBB_INCLUDE_DIRS}" STREQUAL "")
+      ocv_include_directories("${TBB_INCLUDE_DIRS}")
     endif()
-  endif(TBB_INCLUDE_DIR)
+  endif(TBB_INCLUDE_DIRS)
 endif(NOT HAVE_TBB)
+
+# get TBB version
+if(HAVE_TBB)
+  find_file(TBB_STDDEF_PATH tbb/tbb_stddef.h "${TBB_INCLUDE_DIRS}")
+  mark_as_advanced(TBB _STDDEF_PATH)
+endif()
+if(HAVE_TBB AND TBB_STDDEF_PATH)
+  ocv_parse_header("${TBB_STDDEF_PATH}" TBB_VERSION_LINES TBB_VERSION_MAJOR TBB_VERSION_MINOR TBB_INTERFACE_VERSION)
+else()
+  unset(TBB_VERSION_MAJOR)
+  unset(TBB_VERSION_MINOR)
+  unset(TBB_INTERFACE_VERSION)
+endif()