Merge pull request #2801 from ilya-lavrenov:tapi_reduction
[profile/ivi/opencv.git] / cmake / OpenCVFindIPP.cmake
index 9cb6ed0..036f598 100644 (file)
@@ -35,7 +35,7 @@ unset(IPP_VERSION_MINOR)
 unset(IPP_VERSION_BUILD)
 
 set(IPP_LIB_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
-set(IPP_LIB_SUFFIX  ${CMAKE_STATIC_LIBRARY_SUFFIX})
+set(IPP_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
 
 set(IPP_X64 0)
 if(CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
@@ -88,23 +88,18 @@ macro(ipp_detect_version)
   set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/include)
 
   set(__msg)
-  if(EXISTS ${IPP_ROOT_DIR}/ippicv.h)
+  if(EXISTS ${IPP_ROOT_DIR}/include/ippicv_redefs.h)
     set(__msg " (ICV version)")
     set(HAVE_IPP_ICV_ONLY 1)
-    if(EXISTS ${IPP_ROOT_DIR}/ippversion.h)
-      _ipp_not_supported("Can't resolve IPP directory: ${IPP_ROOT_DIR}")
-    else()
-      ipp_get_version(${IPP_ROOT_DIR}/ippicv.h)
-    endif()
-    ocv_assert(IPP_VERSION_STR VERSION_GREATER "8.0")
-    set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/)
   elseif(EXISTS ${IPP_ROOT_DIR}/include/ipp.h)
-    ipp_get_version(${IPP_ROOT_DIR}/include/ippversion.h)
-    ocv_assert(IPP_VERSION_STR VERSION_GREATER "1.0")
+    # nothing
   else()
     _ipp_not_supported("Can't resolve IPP directory: ${IPP_ROOT_DIR}")
   endif()
 
+  ipp_get_version(${IPP_INCLUDE_DIRS}/ippversion.h)
+  ocv_assert(IPP_VERSION_STR VERSION_GREATER "1.0")
+
   message(STATUS "found IPP${__msg}: ${_MAJOR}.${_MINOR}.${_BUILD} [${IPP_VERSION_STR}]")
   message(STATUS "at: ${IPP_ROOT_DIR}")
 
@@ -113,11 +108,6 @@ macro(ipp_detect_version)
   endif()
 
   set(HAVE_IPP 1)
-  if(EXISTS ${IPP_INCLUDE_DIRS}/ipp_redefine.h)
-    set(HAVE_IPP_REDEFINE 1)
-  else()
-    unset(HAVE_IPP_REDEFINE)
-  endif()
 
   macro(_ipp_set_library_dir DIR)
     if(NOT EXISTS ${DIR})
@@ -126,32 +116,30 @@ macro(ipp_detect_version)
     set(IPP_LIBRARY_DIR ${DIR})
   endmacro()
 
-  if(NOT HAVE_IPP_ICV_ONLY)
-    if(APPLE)
-      _ipp_set_library_dir(${IPP_ROOT_DIR}/lib)
-    elseif(IPP_X64)
-      _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/intel64)
-    else()
-      _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/ia32)
-    endif()
+  if(APPLE)
+    _ipp_set_library_dir(${IPP_ROOT_DIR}/lib)
+  elseif(IPP_X64)
+    _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/intel64)
   else()
-    if(EXISTS ${IPP_ROOT_DIR}/lib)
-      set(IPP_LIBRARY_DIR ${IPP_ROOT_DIR}/lib)
-    else()
-      _ipp_not_supported("IPP ${IPP_VERSION_STR} at ${IPP_ROOT_DIR} is not supported")
-    endif()
-    if(X86_64)
-      _ipp_set_library_dir(${IPP_LIBRARY_DIR}/intel64)
-    else()
-      _ipp_set_library_dir(${IPP_LIBRARY_DIR}/ia32)
-    endif()
+    _ipp_set_library_dir(${IPP_ROOT_DIR}/lib/ia32)
   endif()
 
   macro(_ipp_add_library name)
     if (EXISTS ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX})
-      list(APPEND IPP_LIBRARIES ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX})
+      add_library(ipp${name} STATIC IMPORTED)
+      set_target_properties(ipp${name} PROPERTIES
+        IMPORTED_LINK_INTERFACE_LIBRARIES ""
+        IMPORTED_LOCATION ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
+      )
+      list(APPEND IPP_LIBRARIES ipp${name})
+      # CMake doesn't support "install(TARGETS ipp${name} " command with imported targets
+      install(FILES ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
+              DESTINATION ${OPENCV_3P_LIB_INSTALL_PATH} COMPONENT main)
+      string(TOUPPER ${name} uname)
+      set(IPP${uname}_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_3P_LIB_INSTALL_PATH}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}" CACHE INTERNAL "" FORCE)
+      set(IPP${uname}_LOCATION_PATH "${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}" CACHE INTERNAL "" FORCE)
     else()
-      message(STATUS "Can't find IPP library: ${name}")
+      message(STATUS "Can't find IPP library: ${name} at ${IPP_LIBRARY_DIR}/${IPP_LIB_PREFIX}${IPP_PREFIX}${name}${IPP_SUFFIX}${IPP_LIB_SUFFIX}")
     endif()
   endmacro()
 
@@ -221,35 +209,17 @@ if(DEFINED ENV{OPENCV_IPP_PATH} AND NOT DEFINED IPPROOT)
   set(IPPROOT "$ENV{OPENCV_IPP_PATH}")
 endif()
 if(NOT DEFINED IPPROOT)
-  set(IPPROOT "${OpenCV_SOURCE_DIR}/3rdparty/ippicv")
-endif()
-
-# Try ICV
-find_path(
-    IPP_ICV_H_PATH
-    NAMES ippicv.h
-    PATHS ${IPPROOT}
-    DOC "The path to Intel(R) IPP ICV header files"
-    NO_DEFAULT_PATH
-    NO_CMAKE_PATH)
-set(IPP_ROOT_DIR ${IPP_ICV_H_PATH})
-
-if(NOT IPP_ICV_H_PATH)
-  # Try standalone IPP
-  find_path(
-      IPP_H_PATH
-      NAMES ippversion.h
-      PATHS ${IPPROOT}
-      PATH_SUFFIXES include
-      DOC "The path to Intel(R) IPP header files"
-      NO_DEFAULT_PATH
-      NO_CMAKE_PATH)
-  if(IPP_H_PATH)
-    get_filename_component(IPP_ROOT_DIR ${IPP_H_PATH} PATH)
+  include("${OpenCV_SOURCE_DIR}/3rdparty/ippicv/downloader.cmake")
+  if(DEFINED OPENCV_ICV_PATH)
+    set(IPPROOT "${OPENCV_ICV_PATH}")
+  else()
+    return()
   endif()
 endif()
 
-if(IPP_ROOT_DIR)
+file(TO_CMAKE_PATH "${IPPROOT}" __IPPROOT)
+if(EXISTS "${__IPPROOT}/include/ippversion.h")
+  set(IPP_ROOT_DIR ${__IPPROOT})
   ipp_detect_version()
 endif()