Scripts for building TBB for Android
[profile/ivi/opencv.git] / cmake / OpenCVDetectTBB.cmake
1 if(ANDROID)
2   set(HAVE_TBB 1)
3   add_subdirectory("${OpenCV_SOURCE_DIR}/3rdparty/tbb")
4   if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "")
5     include_directories(${TBB_INCLUDE_DIRS})
6   endif()
7   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
8   add_definitions(-DTBB_USE_GCC_BUILTINS=1 -D__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1 -D__TBB_USE_GENERIC_DWORD_LOAD_STORE=1)
9 elseif(UNIX AND NOT APPLE)
10   PKG_CHECK_MODULES(TBB tbb)
11
12   if(TBB_FOUND)
13     set(HAVE_TBB 1)
14     if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "")
15       include_directories(${TBB_INCLUDE_DIRS})
16     endif()
17     link_directories(${TBB_LIBRARY_DIRS})
18     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})
19   endif()
20 endif()
21
22 if(NOT HAVE_TBB)
23   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")
24
25   find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
26   if(TBB_INCLUDE_DIR)
27     if(UNIX)
28       set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
29       link_directories("${TBB_LIB_DIR}")
30     endif()
31     if(APPLE)
32       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib)
33     elseif(ANDROID)
34       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS}  tbb)
35       add_definitions(-DTBB_USE_GCC_BUILTINS)
36     elseif (UNIX)
37       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
38     elseif (WIN32)
39       if(CMAKE_COMPILER_IS_GNUCXX)
40         set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
41         link_directories("${TBB_LIB_DIR}")
42         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
43       else()
44         get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE)
45
46         if(CMAKE_SYSTEM_PROCESSOR MATCHES amd64*|x86_64* OR MSVC64)
47           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")
48         else()
49           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32")
50         endif()
51
52         if(MSVC80)
53           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8")
54         elseif(MSVC90)
55           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9")
56         elseif(MSVC10)
57           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10")
58         elseif(MSVC11)
59           set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc11")
60         endif()
61         set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")
62         link_directories("${TBB_LIB_DIR}")
63       endif()
64     endif()
65
66     set(HAVE_TBB 1)
67     if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "")
68       include_directories("${TBB_INCLUDE_DIR}")
69     endif()
70   endif(TBB_INCLUDE_DIR)
71 endif(NOT HAVE_TBB)