1 # The script is taken from http://code.google.com/p/nvidia-texture-tools/
4 # Try to find OpenEXR's libraries, and include path.
5 # Once done this will define:
7 # OPENEXR_FOUND = OpenEXR found.
8 # OPENEXR_INCLUDE_PATHS = OpenEXR include directories.
9 # OPENEXR_LIBRARIES = libraries that are needed to use OpenEXR.
12 if(NOT OPENCV_SKIP_OPENEXR_FIND_PACKAGE)
13 find_package(OpenEXR 3 QUIET)
14 #ocv_cmake_dump_vars(EXR)
16 if(TARGET OpenEXR::OpenEXR) # OpenEXR 3+
17 set(OPENEXR_LIBRARIES OpenEXR::OpenEXR)
18 set(OPENEXR_INCLUDE_PATHS "")
19 set(OPENEXR_VERSION "${OpenEXR_VERSION}")
23 message(STATUS "Unsupported find_package(OpenEXR) - missing OpenEXR::OpenEXR target (version ${OpenEXR_VERSION})")
28 SET(OPENEXR_LIBRARIES "")
29 SET(OPENEXR_LIBSEARCH_SUFFIXES "")
30 file(TO_CMAKE_PATH "$ENV{ProgramFiles}" ProgramFiles_ENV_PATH)
33 SET(OPENEXR_ROOT "C:/Deploy" CACHE STRING "Path to the OpenEXR \"Deploy\" folder")
35 SET(OPENEXR_LIBSEARCH_SUFFIXES x64/Release x64 x64/Debug)
37 SET(OPENEXR_LIBSEARCH_SUFFIXES Win32/Release Win32 Win32/Debug)
40 SET(OPENEXR_LIBSEARCH_SUFFIXES ${CMAKE_LIBRARY_ARCHITECTURE})
49 "${ProgramFiles_ENV_PATH}/OpenEXR")
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}
57 PATHS "${SEARCH_PATH}/lib" "${SEARCH_PATH}/lib/static")
60 MACRO(ocv_find_openexr LIBRARY_SUFFIX)
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)
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)
79 FOREACH(SEARCH_PATH ${SEARCH_PATHS})
80 FIND_PATH(OPENEXR_INCLUDE_PATH ImfRgbaFile.h
84 "${SEARCH_PATH}/include")
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}")
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}")
100 IF (OPENEXR_VERSION_MAJOR AND OPENEXR_VERSION_MINOR)
101 set(OPENEXR_VERSION "${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}")
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")
109 ocv_find_openexr("_s")
110 ocv_find_openexr("_d")
111 ocv_find_openexr("_s_d")
117 UNSET(OPENEXR_INCLUDE_PATH)
118 UNSET(OPENEXR_VERSION_FILE)
119 UNSET(OPENEXR_VERSION_MAJOR)
120 UNSET(OPENEXR_VERSION_MINOR)
121 UNSET(OPENEXR_VERSION)
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)
130 IF(NOT OPENEXR_FIND_QUIETLY)
131 MESSAGE(STATUS "Found OpenEXR: ${OPENEXR_ILMIMF_LIBRARY}")
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")
145 if(NOT OPENEXR_VERSION)
146 SET(OPENEXR_VERSION "Unknown")
149 IF(OPENEXR_FIND_REQUIRED)
150 MESSAGE(FATAL_ERROR "Could not find OpenEXR library")
155 OPENEXR_INCLUDE_PATHS
157 OPENEXR_ILMIMF_LIBRARY
158 OPENEXR_IMATH_LIBRARY
161 OPENEXR_ILMTHREAD_LIBRARY)