Skip to content

Commit 2e20f06

Browse files
committed
- fix FindOpenEXR to respect OPENEXR_ROOT
Signed-off-by: SSE4 <tomskside@gmail.com>
1 parent 2693ed9 commit 2e20f06

1 file changed

Lines changed: 74 additions & 40 deletions

File tree

cmake/OpenCVFindOpenEXR.cmake

Lines changed: 74 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,55 +20,89 @@ if(WIN32)
2020
elseif(MSVC)
2121
SET(OPENEXR_LIBSEARCH_SUFFIXES Win32/Release Win32 Win32/Debug)
2222
endif()
23-
else()
24-
set(OPENEXR_ROOT "")
2523
endif()
2624

27-
SET(LIBRARY_PATHS
28-
/usr/lib
29-
/usr/local/lib
30-
/sw/lib
31-
/opt/local/lib
32-
"${ProgramFiles_ENV_PATH}/OpenEXR/lib/static"
33-
"${OPENEXR_ROOT}/lib")
25+
SET(SEARCH_PATHS
26+
"${OPENEXR_ROOT}"
27+
/usr
28+
/usr/local
29+
/sw
30+
/opt
31+
"${ProgramFiles_ENV_PATH}/OpenEXR")
3432

35-
FIND_PATH(OPENEXR_INCLUDE_PATH ImfRgbaFile.h
36-
PATH_SUFFIXES OpenEXR
37-
PATHS
38-
/usr/include
39-
/usr/local/include
40-
/sw/include
41-
/opt/local/include
42-
"${ProgramFiles_ENV_PATH}/OpenEXR/include"
43-
"${OPENEXR_ROOT}/include")
33+
MACRO(FIND_OPENEXR_LIBRARY LIBRARY_NAME LIBRARY_SUFFIX)
34+
string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_UPPER)
35+
FIND_LIBRARY(OPENEXR_${LIBRARY_NAME_UPPER}_LIBRARY
36+
NAMES ${LIBRARY_NAME}${LIBRARY_SUFFIX}
37+
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
38+
NO_DEFAULT_PATH
39+
PATHS "${SEARCH_PATH}/lib" "${SEARCH_PATH}/lib/static")
40+
ENDMACRO()
4441

45-
FIND_LIBRARY(OPENEXR_HALF_LIBRARY
46-
NAMES Half
47-
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
48-
PATHS ${LIBRARY_PATHS})
42+
FOREACH(SEARCH_PATH ${SEARCH_PATHS})
43+
FIND_PATH(OPENEXR_INCLUDE_PATH ImfRgbaFile.h
44+
PATH_SUFFIXES OpenEXR
45+
NO_DEFAULT_PATH
46+
PATHS
47+
"${SEARCH_PATH}/include")
4948

50-
FIND_LIBRARY(OPENEXR_IEX_LIBRARY
51-
NAMES Iex
52-
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
53-
PATHS ${LIBRARY_PATHS})
49+
IF (OPENEXR_INCLUDE_PATH)
50+
SET(OPENEXR_VERSION_FILE "${OPENEXR_INCLUDE_PATH}/OpenEXRConfig.h")
51+
IF (EXISTS ${OPENEXR_VERSION_FILE})
52+
FILE (STRINGS ${OPENEXR_VERSION_FILE} contents REGEX "#define OPENEXR_VERSION_MAJOR ")
53+
IF (${contents} MATCHES "#define OPENEXR_VERSION_MAJOR ([0-9]+)")
54+
SET(OPENEXR_VERSION_MAJOR "${CMAKE_MATCH_1}")
55+
ENDIF ()
56+
FILE (STRINGS ${OPENEXR_VERSION_FILE} contents REGEX "#define OPENEXR_VERSION_MINOR ")
57+
IF (${contents} MATCHES "#define OPENEXR_VERSION_MINOR ([0-9]+)")
58+
SET(OPENEXR_VERSION_MINOR "${CMAKE_MATCH_1}")
59+
ENDIF ()
60+
ENDIF ()
61+
ENDIF ()
5462

55-
FIND_LIBRARY(OPENEXR_IMATH_LIBRARY
56-
NAMES Imath
57-
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
58-
PATHS ${LIBRARY_PATHS})
63+
IF (OPENEXR_VERSION_MAJOR AND OPENEXR_VERSION_MINOR)
64+
set(OPENEXR_VERSION "${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}")
65+
ENDIF ()
5966

60-
FIND_LIBRARY(OPENEXR_ILMIMF_LIBRARY
61-
NAMES IlmImf
62-
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
63-
PATHS ${LIBRARY_PATHS})
67+
SET(LIBRARY_SUFFIXES
68+
"-${OPENEXR_VERSION}"
69+
"-${OPENEXR_VERSION}_s"
70+
"-${OPENEXR_VERSION}_d"
71+
"-${OPEXEXR_VERSION}_s_d"
72+
""
73+
"_s"
74+
"_d"
75+
"_s_d")
6476

65-
FIND_LIBRARY(OPENEXR_ILMTHREAD_LIBRARY
66-
NAMES IlmThread
67-
PATH_SUFFIXES ${OPENEXR_LIBSEARCH_SUFFIXES}
68-
PATHS ${LIBRARY_PATHS})
77+
FOREACH(LIBRARY_SUFFIX ${LIBRARY_SUFFIXES})
78+
FIND_OPENEXR_LIBRARY("Half" ${LIBRARY_SUFFIX})
79+
FIND_OPENEXR_LIBRARY("Iex" ${LIBRARY_SUFFIX})
80+
FIND_OPENEXR_LIBRARY("Imath" ${LIBRARY_SUFFIX})
81+
FIND_OPENEXR_LIBRARY("IlmImf" ${LIBRARY_SUFFIX})
82+
FIND_OPENEXR_LIBRARY("IlmThread" ${LIBRARY_SUFFIX})
83+
IF (OPENEXR_INCLUDE_PATH AND OPENEXR_IMATH_LIBRARY AND OPENEXR_ILMIMF_LIBRARY AND OPENEXR_IEX_LIBRARY AND OPENEXR_HALF_LIBRARY)
84+
SET(OPENEXR_FOUND TRUE)
85+
BREAK()
86+
ENDIF()
87+
UNSET(OPENEXR_IMATH_LIBRARY)
88+
UNSET(OPENEXR_ILMIMF_LIBRARY)
89+
UNSET(OPENEXR_IEX_LIBRARY)
90+
UNSET(OPENEXR_ILMTHREAD_LIBRARY)
91+
UNSET(OPENEXR_HALF_LIBRARY)
92+
ENDFOREACH()
6993

70-
IF (OPENEXR_INCLUDE_PATH AND OPENEXR_IMATH_LIBRARY AND OPENEXR_ILMIMF_LIBRARY AND OPENEXR_IEX_LIBRARY AND OPENEXR_HALF_LIBRARY)
71-
SET(OPENEXR_FOUND TRUE)
94+
IF (OPENEXR_FOUND)
95+
BREAK()
96+
ENDIF()
97+
98+
UNSET(OPENEXR_INCLUDE_PATH)
99+
UNSET(OPENEXR_VERSION_FILE)
100+
UNSET(OPENEXR_VERSION_MAJOR)
101+
UNSET(OPENEXR_VERSION_MINOR)
102+
UNSET(OPENEXR_VERSION)
103+
ENDFOREACH()
104+
105+
IF (OPENEXR_FOUND)
72106
SET(OPENEXR_INCLUDE_PATHS ${OPENEXR_INCLUDE_PATH} CACHE PATH "The include paths needed to use OpenEXR")
73107
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)
74108
ENDIF ()

0 commit comments

Comments
 (0)