Add python3-setuptools dependency for python 3.12
[platform/upstream/opencv.git] / cmake / OpenCVFindOpenEXR.cmake
1 # The script is taken from http://code.google.com/p/nvidia-texture-tools/
2
3 #
4 # Try to find OpenEXR's libraries, and include path.
5 # Once done this will define:
6 #
7 # OPENEXR_FOUND = OpenEXR found.
8 # OPENEXR_INCLUDE_PATHS = OpenEXR include directories.
9 # OPENEXR_LIBRARIES = libraries that are needed to use OpenEXR.
10 #
11
12 if(NOT OPENCV_SKIP_OPENEXR_FIND_PACKAGE)
13   find_package(OpenEXR 3 QUIET)
14   #ocv_cmake_dump_vars(EXR)
15   if(OpenEXR_FOUND)
16     if(TARGET OpenEXR::OpenEXR)  # OpenEXR 3+
17       set(OPENEXR_LIBRARIES OpenEXR::OpenEXR)
18       set(OPENEXR_INCLUDE_PATHS "")
19       set(OPENEXR_VERSION "${OpenEXR_VERSION}")
20       set(OPENEXR_FOUND 1)
21       return()
22     else()
23       message(STATUS "Unsupported find_package(OpenEXR) - missing OpenEXR::OpenEXR target (version ${OpenEXR_VERSION})")
24     endif()
25   endif()
26 endif()
27
28 SET(OPENEXR_LIBRARIES "")
29 SET(OPENEXR_LIBSEARCH_SUFFIXES "")
30 file(TO_CMAKE_PATH "$ENV{ProgramFiles}" ProgramFiles_ENV_PATH)
31
32 if(WIN32)
33     SET(OPENEXR_ROOT "C:/Deploy" CACHE STRING "Path to the OpenEXR \"Deploy\" folder")
34     if(X86_64)
35         SET(OPENEXR_LIBSEARCH_SUFFIXES x64/Release x64 x64/Debug)
36     elseif(MSVC)
37         SET(OPENEXR_LIBSEARCH_SUFFIXES Win32/Release Win32 Win32/Debug)
38     endif()
39 elseif(UNIX)
40     SET(OPENEXR_LIBSEARCH_SUFFIXES ${CMAKE_LIBRARY_ARCHITECTURE})
41 endif()
42
43 SET(SEARCH_PATHS
44     "${OPENEXR_ROOT}"
45     /usr
46     /usr/local
47     /sw
48     /opt
49     "${ProgramFiles_ENV_PATH}/OpenEXR")
50
51 MACRO(FIND_OPENEXR_LIBRARY LIBRARY_NAME LIBRARY_SUFFIX)
52     string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_UPPER)
53     FIND_LIBRARY(OPENEXR_${LIBRARY_NAME_UPPER}_LIBRARY
54         NAMES ${LIBRARY_NAME}${LIBRARY_SUFFIX}
55         PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
56         NO_DEFAULT_PATH
57         PATHS "${SEARCH_PATH}/lib" "${SEARCH_PATH}/lib/static")
58 ENDMACRO()
59
60 MACRO(ocv_find_openexr LIBRARY_SUFFIX)
61     IF(NOT OPENEXR_FOUND)
62         FIND_OPENEXR_LIBRARY("Half" "${LIBRARY_SUFFIX}")
63         FIND_OPENEXR_LIBRARY("Iex" "${LIBRARY_SUFFIX}")
64         FIND_OPENEXR_LIBRARY("Imath" "${LIBRARY_SUFFIX}")
65         FIND_OPENEXR_LIBRARY("IlmImf" "${LIBRARY_SUFFIX}")
66         FIND_OPENEXR_LIBRARY("IlmThread" "${LIBRARY_SUFFIX}")
67         IF (OPENEXR_INCLUDE_PATH AND OPENEXR_IMATH_LIBRARY AND OPENEXR_ILMIMF_LIBRARY AND OPENEXR_IEX_LIBRARY AND OPENEXR_HALF_LIBRARY AND OPENEXR_ILMTHREAD_LIBRARY)
68             SET(OPENEXR_FOUND TRUE)
69         ELSE()
70             UNSET(OPENEXR_IMATH_LIBRARY)
71             UNSET(OPENEXR_ILMIMF_LIBRARY)
72             UNSET(OPENEXR_IEX_LIBRARY)
73             UNSET(OPENEXR_ILMTHREAD_LIBRARY)
74             UNSET(OPENEXR_HALF_LIBRARY)
75         ENDIF()
76     ENDIF()
77 ENDMACRO()
78
79 FOREACH(SEARCH_PATH ${SEARCH_PATHS})
80     FIND_PATH(OPENEXR_INCLUDE_PATH ImfRgbaFile.h
81         PATH_SUFFIXES OpenEXR
82         NO_DEFAULT_PATH
83         PATHS
84         "${SEARCH_PATH}/include")
85
86     IF (OPENEXR_INCLUDE_PATH)
87         SET(OPENEXR_VERSION_FILE "${OPENEXR_INCLUDE_PATH}/OpenEXRConfig.h")
88         IF (EXISTS ${OPENEXR_VERSION_FILE})
89             FILE (STRINGS ${OPENEXR_VERSION_FILE} contents REGEX "#define OPENEXR_VERSION_MAJOR ")
90             IF (${contents} MATCHES "#define OPENEXR_VERSION_MAJOR ([0-9]+)")
91                 SET(OPENEXR_VERSION_MAJOR "${CMAKE_MATCH_1}")
92             ENDIF ()
93             FILE (STRINGS ${OPENEXR_VERSION_FILE} contents REGEX "#define OPENEXR_VERSION_MINOR ")
94             IF (${contents} MATCHES "#define OPENEXR_VERSION_MINOR ([0-9]+)")
95                 SET(OPENEXR_VERSION_MINOR "${CMAKE_MATCH_1}")
96             ENDIF ()
97         ENDIF ()
98     ENDIF ()
99
100     IF (OPENEXR_VERSION_MAJOR AND OPENEXR_VERSION_MINOR)
101         set(OPENEXR_VERSION "${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}")
102     ENDIF ()
103
104     ocv_find_openexr("-${OPENEXR_VERSION}")
105     ocv_find_openexr("-${OPENEXR_VERSION}_s")
106     ocv_find_openexr("-${OPENEXR_VERSION}_d")
107     ocv_find_openexr("-${OPENEXR_VERSION}_s_d")
108     ocv_find_openexr("")
109     ocv_find_openexr("_s")
110     ocv_find_openexr("_d")
111     ocv_find_openexr("_s_d")
112
113     IF (OPENEXR_FOUND)
114         BREAK()
115     ENDIF()
116
117     UNSET(OPENEXR_INCLUDE_PATH)
118     UNSET(OPENEXR_VERSION_FILE)
119     UNSET(OPENEXR_VERSION_MAJOR)
120     UNSET(OPENEXR_VERSION_MINOR)
121     UNSET(OPENEXR_VERSION)
122 ENDFOREACH()
123
124 IF (OPENEXR_FOUND)
125     SET(OPENEXR_INCLUDE_PATHS ${OPENEXR_INCLUDE_PATH} CACHE PATH "The include paths needed to use OpenEXR")
126     SET(OPENEXR_LIBRARIES ${OPENEXR_IMATH_LIBRARY} ${OPENEXR_ILMIMF_LIBRARY} ${OPENEXR_IEX_LIBRARY} ${OPENEXR_HALF_LIBRARY} ${OPENEXR_ILMTHREAD_LIBRARY} CACHE STRING "The libraries needed to use OpenEXR" FORCE)
127 ENDIF ()
128
129 IF(OPENEXR_FOUND)
130   IF(NOT OPENEXR_FIND_QUIETLY)
131     MESSAGE(STATUS "Found OpenEXR: ${OPENEXR_ILMIMF_LIBRARY}")
132   ENDIF()
133   if(PKG_CONFIG_FOUND AND NOT OPENEXR_VERSION)
134     get_filename_component(OPENEXR_LIB_PATH "${OPENEXR_ILMIMF_LIBRARY}" PATH)
135     if(EXISTS "${OPENEXR_LIB_PATH}/pkgconfig/OpenEXR.pc")
136       execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --modversion "${OPENEXR_LIB_PATH}/pkgconfig/OpenEXR.pc"
137                       RESULT_VARIABLE PKG_CONFIG_PROCESS
138                       OUTPUT_VARIABLE OPENEXR_VERSION
139                       OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
140       if(NOT PKG_CONFIG_PROCESS EQUAL 0)
141         SET(OPENEXR_VERSION "Unknown")
142       endif()
143     endif()
144   endif()
145   if(NOT OPENEXR_VERSION)
146     SET(OPENEXR_VERSION "Unknown")
147   endif()
148 ELSE()
149   IF(OPENEXR_FIND_REQUIRED)
150     MESSAGE(FATAL_ERROR "Could not find OpenEXR library")
151   ENDIF()
152 ENDIF()
153
154 MARK_AS_ADVANCED(
155     OPENEXR_INCLUDE_PATHS
156     OPENEXR_LIBRARIES
157     OPENEXR_ILMIMF_LIBRARY
158     OPENEXR_IMATH_LIBRARY
159     OPENEXR_IEX_LIBRARY
160     OPENEXR_HALF_LIBRARY
161     OPENEXR_ILMTHREAD_LIBRARY)