Blame cmake/FindIPP.cmake

Packit Service fa4841
# This cmake script is taken from the OpenCV project (BSD license)
Packit Service fa4841
Packit Service fa4841
#
Packit Service fa4841
# The script to detect Intel(R) Integrated Performance Primitives (IPP)
Packit Service fa4841
# installation/package
Packit Service fa4841
#
Packit Service fa4841
# This will try to find Intel IPP libraries, and include path by automatic
Packit Service fa4841
# search through typical install locations and if failed it will
Packit Service fa4841
# examine IPPROOT environment variable.
Packit Service fa4841
# Note, IPPROOT is not set by IPP installer, it should be set manually.
Packit Service fa4841
#
Packit Service fa4841
# On return this will define:
Packit Service fa4841
#
Packit Service fa4841
# IPP_FOUND        - True if Intel IPP found
Packit Service fa4841
# IPP_ROOT_DIR     - root of IPP installation
Packit Service fa4841
# IPP_INCLUDE_DIRS - IPP include folder
Packit Service fa4841
# IPP_LIBRARY_DIRS - IPP libraries folder
Packit Service fa4841
# IPP_LIBRARIES    - IPP libraries names that are used by OpenCV
Packit Service fa4841
# IPP_LATEST_VERSION_STR   - string with the newest detected IPP version
Packit Service fa4841
# IPP_LATEST_VERSION_MAJOR - numbers of IPP version (MAJOR.MINOR.BUILD)
Packit Service fa4841
# IPP_LATEST_VERSION_MINOR
Packit Service fa4841
# IPP_LATEST_VERSION_BUILD
Packit Service fa4841
#
Packit Service fa4841
# Created: 30 Dec 2010 by Vladimir Dudnik (vladimir.dudnik@intel.com)
Packit Service fa4841
#
Packit Service fa4841
Packit Service fa4841
set(IPP_FOUND)
Packit Service fa4841
set(IPP_VERSION_STR "5.3.0.0") # will not detect earlier versions
Packit Service fa4841
set(IPP_VERSION_MAJOR 0)
Packit Service fa4841
set(IPP_VERSION_MINOR 0)
Packit Service fa4841
set(IPP_VERSION_BUILD 0)
Packit Service fa4841
set(IPP_ROOT_DIR)
Packit Service fa4841
set(IPP_INCLUDE_DIRS)
Packit Service fa4841
set(IPP_LIBRARY_DIRS)
Packit Service fa4841
set(IPP_LIBRARIES)
Packit Service fa4841
set(IPP_LIB_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
Packit Service fa4841
set(IPP_LIB_SUFFIX  ${CMAKE_STATIC_LIBRARY_SUFFIX})
Packit Service fa4841
set(IPP_PREFIX "ipp")
Packit Service fa4841
set(IPP_SUFFIX "_l")
Packit Service fa4841
set(IPPCORE    "core") # core functionality
Packit Service fa4841
set(IPPS       "s")    # signal processing
Packit Service fa4841
set(IPPI       "i")    # image processing
Packit Service fa4841
set(IPPCC      "cc")   # color conversion
Packit Service fa4841
set(IPPCV      "cv")   # computer vision
Packit Service fa4841
set(IPPVM      "vm")   # vector math
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
set(IPP_X64 0)
Packit Service fa4841
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
Packit Service fa4841
    set(IPP_X64 1)
Packit Service fa4841
endif()
Packit Service fa4841
if (CMAKE_CL_64)
Packit Service fa4841
    set(IPP_X64 1)
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This function detect IPP version by analyzing ippversion.h file
Packit Service fa4841
# Note, ippversion.h file was inroduced since IPP 5.3
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
function(get_ipp_version _ROOT_DIR)
Packit Service fa4841
    set(_VERSION_STR)
Packit Service fa4841
    set(_MAJOR)
Packit Service fa4841
    set(_MINOR)
Packit Service fa4841
    set(_BUILD)
Packit Service fa4841
Packit Service fa4841
    # read IPP version info from file
Packit Service fa4841
    file(STRINGS ${_ROOT_DIR}/include/ippversion.h STR1 REGEX "IPP_VERSION_MAJOR")
Packit Service fa4841
    file(STRINGS ${_ROOT_DIR}/include/ippversion.h STR2 REGEX "IPP_VERSION_MINOR")
Packit Service fa4841
    file(STRINGS ${_ROOT_DIR}/include/ippversion.h STR3 REGEX "IPP_VERSION_BUILD")
Packit Service fa4841
Packit Service fa4841
    if(NOT STR3)
Packit Service fa4841
	file(STRINGS ${_ROOT_DIR}/include/ippversion.h STR3 REGEX "IPP_VERSION_UPDATE")
Packit Service fa4841
    endif()
Packit Service fa4841
Packit Service fa4841
    file(STRINGS ${_ROOT_DIR}/include/ippversion.h STR4 REGEX "IPP_VERSION_STR")
Packit Service fa4841
Packit Service fa4841
    # extract info and assign to variables
Packit Service fa4841
    string(REGEX MATCHALL "[0-9]+" _MAJOR ${STR1})
Packit Service fa4841
    string(REGEX MATCHALL "[0-9]+" _MINOR ${STR2})
Packit Service fa4841
    string(REGEX MATCHALL "[0-9]+" _BUILD ${STR3})
Packit Service fa4841
    string(REGEX MATCHALL "[0-9]+[.]+[0-9]+[^\"]+|[0-9]+[.]+[0-9]+" _VERSION_STR ${STR4})
Packit Service fa4841
Packit Service fa4841
    # export info to parent scope
Packit Service fa4841
    set(IPP_VERSION_STR   ${_VERSION_STR} PARENT_SCOPE)
Packit Service fa4841
    set(IPP_VERSION_MAJOR ${_MAJOR}       PARENT_SCOPE)
Packit Service fa4841
    set(IPP_VERSION_MINOR ${_MINOR}       PARENT_SCOPE)
Packit Service fa4841
    set(IPP_VERSION_BUILD ${_BUILD}       PARENT_SCOPE)
Packit Service fa4841
Packit Service fa4841
    message(STATUS "found IPP: ${_MAJOR}.${_MINOR}.${_BUILD} [${_VERSION_STR}]")
Packit Service fa4841
    message(STATUS "at: ${_ROOT_DIR}")
Packit Service fa4841
Packit Service fa4841
    return()
Packit Service fa4841
Packit Service fa4841
endfunction()
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This is auxiliary function called from set_ipp_variables()
Packit Service fa4841
# to set IPP_LIBRARIES variable in IPP 6.x style (IPP 5.3 should also work)
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
function(set_ipp_old_libraries)
Packit Service fa4841
    set(IPP_PREFIX "ipp")
Packit Service fa4841
    set(IPP_SUFFIX)            # old style static core libs suffix
Packit Service fa4841
    set(IPP_ARCH)              # architecture suffix
Packit Service fa4841
    set(IPP_DISP   "emerged")  # old style dipatcher and cpu-specific
Packit Service fa4841
    set(IPP_MRGD   "merged")   #   static libraries
Packit Service fa4841
    set(IPPCORE    "core")     # core functionality
Packit Service fa4841
    set(IPPSP      "s")        # signal processing
Packit Service fa4841
    set(IPPIP      "i")        # image processing
Packit Service fa4841
    set(IPPCC      "cc")       # color conversion
Packit Service fa4841
    set(IPPCV      "cv")       # computer vision
Packit Service fa4841
    set(IPPVM      "vm")       # vector math
Packit Service fa4841
Packit Service fa4841
    if (IPP_X64)
Packit Service fa4841
        set(IPP_ARCH "em64t")
Packit Service fa4841
    endif()
Packit Service fa4841
Packit Service fa4841
    if(WIN32)
Packit Service fa4841
        set(IPP_SUFFIX "l")
Packit Service fa4841
    endif()
Packit Service fa4841
Packit Service fa4841
    set(IPP_LIBRARIES
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPVM}${IPP_MRGD}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPVM}${IPP_DISP}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCC}${IPP_MRGD}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCC}${IPP_DISP}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCV}${IPP_MRGD}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCV}${IPP_DISP}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPIP}${IPP_MRGD}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPIP}${IPP_DISP}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPSP}${IPP_MRGD}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPSP}${IPP_DISP}${IPP_ARCH}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCORE}${IPP_ARCH}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        PARENT_SCOPE)
Packit Service fa4841
Packit Service fa4841
    return()
Packit Service fa4841
Packit Service fa4841
endfunction()
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This is auxiliary function called from set_ipp_variables()
Packit Service fa4841
# to set IPP_LIBRARIES variable in IPP 7.x style
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
function(set_ipp_new_libraries)
Packit Service fa4841
    set(IPP_PREFIX "ipp")
Packit Service fa4841
    set(IPP_SUFFIX "_l")       # static not threaded libs suffix
Packit Service fa4841
    set(IPP_THRD   "_t")       # static threaded libs suffix
Packit Service fa4841
    set(IPPCORE    "core")     # core functionality
Packit Service fa4841
    set(IPPSP      "s")        # signal processing
Packit Service fa4841
    set(IPPIP      "i")        # image processing
Packit Service fa4841
    set(IPPCC      "cc")       # color conversion
Packit Service fa4841
    set(IPPCV      "cv")       # computer vision
Packit Service fa4841
    set(IPPVM      "vm")       # vector math
Packit Service fa4841
Packit Service fa4841
    set(IPP_LIBRARIES
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPVM}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCC}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCV}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPI}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPS}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPCORE}${IPP_SUFFIX}${IPP_LIB_SUFFIX}
Packit Service fa4841
        PARENT_SCOPE)
Packit Service fa4841
Packit Service fa4841
    return()
Packit Service fa4841
Packit Service fa4841
endfunction()
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This function will set
Packit Service fa4841
# IPP_INCLUDE_DIRS, IPP_LIBRARY_DIRS and IPP_LIBRARIES variables depending
Packit Service fa4841
# on IPP version parameter.
Packit Service fa4841
# Since IPP 7.0 version library names and install folder structure
Packit Service fa4841
# was changed
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
function(set_ipp_variables _LATEST_VERSION)
Packit Service fa4841
    if(${_LATEST_VERSION} VERSION_LESS "7.0")
Packit Service fa4841
#        message(STATUS "old")
Packit Service fa4841
Packit Service fa4841
        # set INCLUDE and LIB folders
Packit Service fa4841
        set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/include PARENT_SCOPE)
Packit Service fa4841
        set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib     PARENT_SCOPE)
Packit Service fa4841
Packit Service fa4841
        if (IPP_X64)
Packit Service fa4841
            if(NOT EXISTS ${IPP_ROOT_DIR}/../em64t)
Packit Service fa4841
                message(SEND_ERROR "IPP EM64T libraries not found")
Packit Service fa4841
            endif()
Packit Service fa4841
        else()
Packit Service fa4841
            if(NOT EXISTS ${IPP_ROOT_DIR}/../ia32)
Packit Service fa4841
                message(SEND_ERROR "IPP IA32 libraries not found")
Packit Service fa4841
            endif()
Packit Service fa4841
        endif()
Packit Service fa4841
Packit Service fa4841
        # set IPP_LIBRARIES variable (6.x lib names)
Packit Service fa4841
        set_ipp_old_libraries()
Packit Service fa4841
        set(IPP_LIBRARIES ${IPP_LIBRARIES} PARENT_SCOPE)
Packit Service fa4841
        message(STATUS "IPP libs: ${IPP_LIBRARIES}")
Packit Service fa4841
Packit Service fa4841
    else()
Packit Service fa4841
#        message(STATUS "new")
Packit Service fa4841
Packit Service fa4841
        # set INCLUDE and LIB folders
Packit Service fa4841
        set(IPP_INCLUDE_DIRS ${IPP_ROOT_DIR}/include PARENT_SCOPE)
Packit Service fa4841
Packit Service fa4841
        if(APPLE)
Packit Service fa4841
            set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib PARENT_SCOPE)
Packit Service fa4841
        else()
Packit Service fa4841
            if(IPP_X64)
Packit Service fa4841
                if(NOT EXISTS ${IPP_ROOT_DIR}/lib/intel64)
Packit Service fa4841
                    message(SEND_ERROR "IPP EM64T libraries not found")
Packit Service fa4841
                endif()
Packit Service fa4841
                set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib/intel64 PARENT_SCOPE)
Packit Service fa4841
            else()
Packit Service fa4841
                if(NOT EXISTS ${IPP_ROOT_DIR}/lib/ia32)
Packit Service fa4841
                    message(SEND_ERROR "IPP IA32 libraries not found")
Packit Service fa4841
                endif()
Packit Service fa4841
                set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib/ia32 PARENT_SCOPE)
Packit Service fa4841
            endif()
Packit Service fa4841
        endif()
Packit Service fa4841
Packit Service fa4841
        # set IPP_LIBRARIES variable (7.x lib names)
Packit Service fa4841
        set_ipp_new_libraries()
Packit Service fa4841
        set(IPP_LIBRARIES ${IPP_LIBRARIES} PARENT_SCOPE)
Packit Service fa4841
        message(STATUS "IPP libs: ${IPP_LIBRARIES}")
Packit Service fa4841
Packit Service fa4841
    endif()
Packit Service fa4841
Packit Service fa4841
    return()
Packit Service fa4841
Packit Service fa4841
endfunction()
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This section will look for IPP through IPPROOT env variable
Packit Service fa4841
# Note, IPPROOT is not set by IPP installer, you may need to set it manually
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
find_path(
Packit Service fa4841
    IPP_H_PATH
Packit Service fa4841
    NAMES ippversion.h
Packit Service fa4841
    PATHS $ENV{IPPROOT}
Packit Service fa4841
    PATH_SUFFIXES include
Packit Service fa4841
    DOC "The path to Intel(R) IPP header files"
Packit Service fa4841
    NO_DEFAULT_PATH
Packit Service fa4841
    NO_CMAKE_PATH)
Packit Service fa4841
Packit Service fa4841
if(IPP_H_PATH)
Packit Service fa4841
    set(IPP_FOUND 1)
Packit Service fa4841
Packit Service fa4841
    # traverse up to IPPROOT level
Packit Service fa4841
    get_filename_component(IPP_ROOT_DIR ${IPP_H_PATH} PATH)
Packit Service fa4841
Packit Service fa4841
    # extract IPP version info
Packit Service fa4841
    get_ipp_version(${IPP_ROOT_DIR})
Packit Service fa4841
Packit Service fa4841
    # keep info in the same vars for auto search and search by IPPROOT
Packit Service fa4841
    set(IPP_LATEST_VERSION_STR   ${IPP_VERSION_STR})
Packit Service fa4841
    set(IPP_LATEST_VERSION_MAJOR ${IPP_VERSION_MAJOR})
Packit Service fa4841
    set(IPP_LATEST_VERSION_MINOR ${IPP_VERSION_MINOR})
Packit Service fa4841
    set(IPP_LATEST_VERSION_BUILD ${IPP_VERSION_BUILD})
Packit Service fa4841
Packit Service fa4841
    # set IPP INCLUDE, LIB dirs and library names
Packit Service fa4841
    set_ipp_variables(${IPP_LATEST_VERSION_STR})
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
if(NOT IPP_FOUND)
Packit Service fa4841
    # reset var from previous search
Packit Service fa4841
    set(IPP_H_PATH)
Packit Service fa4841
Packit Service fa4841
Packit Service fa4841
    # ------------------------------------------------------------------------
Packit Service fa4841
    # This section will look for IPP through system program folders
Packit Service fa4841
    # Note, if several IPP installations found the newest version will be
Packit Service fa4841
    # selected
Packit Service fa4841
    # ------------------------------------------------------------------------
Packit Service fa4841
    foreach(curdir ${CMAKE_SYSTEM_PREFIX_PATH} /opt)
Packit Service fa4841
        set(curdir ${curdir}/intel)
Packit Service fa4841
        file(TO_CMAKE_PATH ${curdir} CURDIR)
Packit Service fa4841
Packit Service fa4841
        if(EXISTS ${curdir})
Packit Service fa4841
            file(GLOB_RECURSE IPP_H_DIR ${curdir}/ippversion.h)
Packit Service fa4841
Packit Service fa4841
            if(IPP_H_DIR)
Packit Service fa4841
                set(IPP_FOUND 1)
Packit Service fa4841
            endif()
Packit Service fa4841
Packit Service fa4841
            # init IPP_LATEST_VERSION  version with oldest detectable version (5.3.0.0)
Packit Service fa4841
            #   IPP prior 5.3 did not have ippversion.h file
Packit Service fa4841
            set(IPP_LATEST_VERSION_STR ${IPP_VERSION_STR})
Packit Service fa4841
Packit Service fa4841
            # look through all dirs where ippversion.h was found
Packit Service fa4841
            foreach(item ${IPP_H_DIR})
Packit Service fa4841
Packit Service fa4841
                # traverse up to IPPROOT level
Packit Service fa4841
                get_filename_component(_FILE_PATH ${item} PATH)
Packit Service fa4841
                get_filename_component(_ROOT_DIR ${_FILE_PATH} PATH)
Packit Service fa4841
Packit Service fa4841
                # extract IPP version info
Packit Service fa4841
                get_ipp_version(${_ROOT_DIR})
Packit Service fa4841
Packit Service fa4841
                # remember the latest version (if many found)
Packit Service fa4841
                if(${IPP_LATEST_VERSION_STR} VERSION_LESS ${IPP_VERSION_STR})
Packit Service fa4841
                    set(IPP_LATEST_VERSION_STR   ${IPP_VERSION_STR})
Packit Service fa4841
                    set(IPP_LATEST_VERSION_MAJOR ${IPP_VERSION_MAJOR})
Packit Service fa4841
                    set(IPP_LATEST_VERSION_MINOR ${IPP_VERSION_MINOR})
Packit Service fa4841
                    set(IPP_LATEST_VERSION_BUILD ${IPP_VERSION_BUILD})
Packit Service fa4841
                    set(IPP_ROOT_DIR ${_ROOT_DIR})
Packit Service fa4841
                endif()
Packit Service fa4841
            endforeach()
Packit Service fa4841
        endif()
Packit Service fa4841
    endforeach()
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
if(IPP_FOUND)
Packit Service fa4841
    # set IPP INCLUDE, LIB dirs and library names
Packit Service fa4841
    set_ipp_variables(${IPP_LATEST_VERSION_STR})
Packit Service fa4841
Packit Service fa4841
    # set CACHE variable IPP_H_PATH,
Packit Service fa4841
    # path to IPP header files for the latest version
Packit Service fa4841
    find_path(
Packit Service fa4841
        IPP_H_PATH
Packit Service fa4841
        NAMES ippversion.h
Packit Service fa4841
        PATHS ${IPP_ROOT_DIR}
Packit Service fa4841
        PATH_SUFFIXES include
Packit Service fa4841
        DOC "The path to Intel(R) IPP header files"
Packit Service fa4841
        NO_DEFAULT_PATH
Packit Service fa4841
        NO_CMAKE_PATH)
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
if(WIN32 AND MINGW AND NOT IPP_LATEST_VERSION_MAJOR LESS 7)
Packit Service fa4841
    # Since IPP built with Microsoft compiler and /GS option
Packit Service fa4841
    # ======================================================
Packit Service fa4841
    # From Windows SDK 7.1
Packit Service fa4841
    #   (usually in "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib"),
Packit Service fa4841
    # to avoid undefined reference to __security_cookie and _chkstk:
Packit Service fa4841
    set(MSV_RUNTMCHK "RunTmChk")
Packit Service fa4841
    set(IPP_LIBRARIES ${IPP_LIBRARIES} ${MSV_RUNTMCHK}${IPP_LIB_SUFFIX})
Packit Service fa4841
Packit Service fa4841
    # To avoid undefined reference to _alldiv and _chkstk
Packit Service fa4841
    # ===================================================
Packit Service fa4841
    # NB: it may require a recompilation of w32api (after having modified
Packit Service fa4841
    #     the file ntdll.def) to export the required functions
Packit Service fa4841
    #     See http://code.opencv.org/issues/1906 for additional details
Packit Service fa4841
    set(MSV_NTDLL    "ntdll")
Packit Service fa4841
    set(IPP_LIBRARIES ${IPP_LIBRARIES} ${MSV_NTDLL}${IPP_LIB_SUFFIX})
Packit Service fa4841
endif()
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# This section will look for the IPP "compiler" dependent library
Packit Service fa4841
# libiomp5.
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
foreach(curdir ${CMAKE_SYSTEM_PREFIX_PATH} /opt)
Packit Service fa4841
    set(curdir ${curdir}/intel)
Packit Service fa4841
Packit Service fa4841
    if(EXISTS ${curdir})
Packit Service fa4841
        file(GLOB_RECURSE liblist FOLLOW_SYMLINKS ${curdir}/libiomp5.*)
Packit Service fa4841
        foreach(lib ${liblist})
Packit Service fa4841
            get_filename_component(libdir ${lib} REALPATH)
Packit Service fa4841
            get_filename_component(libdir ${libdir} PATH)
Packit Service fa4841
Packit Service fa4841
            if(${IPP_VERSION_MAJOR} VERSION_LESS "7")
Packit Service fa4841
                set(IPP_COMPILER_LIBRARY_DIRS ${libdir})
Packit Service fa4841
                set(IPP_COMPILER_LIBRARIES iomp5)
Packit Service fa4841
            else()
Packit Service fa4841
                if(APPLE)
Packit Service fa4841
                    set(IPP_COMPILER_LIBRARY_DIRS ${libdir})
Packit Service fa4841
                    set(IPP_COMPILER_LIBRARIES iomp5)
Packit Service fa4841
                else()
Packit Service fa4841
                    if(IPP_X64)
Packit Service fa4841
                        if(("${libdir}" MATCHES "intel64"))
Packit Service fa4841
                            set(IPP_COMPILER_LIBRARY_DIRS ${libdir})
Packit Service fa4841
                            set(IPP_COMPILER_LIBRARIES iomp5)
Packit Service fa4841
                        endif()
Packit Service fa4841
                    else()
Packit Service fa4841
                        set(IPP_COMPILER_LIBRARY_DIRS ${libdir})
Packit Service fa4841
                        set(IPP_COMPILER_LIBRARIES iomp5)
Packit Service fa4841
                    endif()
Packit Service fa4841
                endif()
Packit Service fa4841
            endif()
Packit Service fa4841
        endforeach(lib)
Packit Service fa4841
    endif()
Packit Service fa4841
endforeach(curdir)
Packit Service fa4841
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
# Build fullpath library list.
Packit Service fa4841
# ------------------------------------------------------------------------
Packit Service fa4841
find_library(LIB_IPPI ippi PATHS ${IPP_LIBRARY_DIRS})
Packit Service fa4841
set(IPP_LIBRARY_LIST ${IPP_LIBRARY_LIST} ${LIB_IPPI})
Packit Service fa4841
find_library(LIB_IPPS ipps PATHS ${IPP_LIBRARY_DIRS})
Packit Service fa4841
set(IPP_LIBRARY_LIST ${IPP_LIBRARY_LIST} ${LIB_IPPS})
Packit Service fa4841
find_library(LIB_IPPCORE ippcore PATHS ${IPP_LIBRARY_DIRS})
Packit Service fa4841
set(IPP_LIBRARY_LIST ${IPP_LIBRARY_LIST} ${LIB_IPPCORE})
Packit Service fa4841
find_library(LIB_IOMP5 iomp5 PATHS ${IPP_COMPILER_LIBRARY_DIRS})
Packit Service fa4841
set(IPP_LIBRARY_LIST ${IPP_LIBRARY_LIST} ${LIB_IOMP5})
Packit Service fa4841
Packit Service fa4841