Warning, /frameworks/extra-cmake-modules/find-modules/FindOpenEXR.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2013-2014 Alex Merry <alex.merry@kdemail.net>
0002 # SPDX-FileCopyrightText: 2006 Alexander Neundorf <neundorf@kde.org>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005
0006 #[=======================================================================[.rst:
0007 FindOpenEXR
0008 -----------
0009
0010 Try to find the OpenEXR libraries.
0011
0012 This will define the following variables:
0013
0014 ``OpenEXR_FOUND``
0015 True if OpenEXR is available
0016 ``OpenEXR_LIBRARIES``
0017 Link to these to use OpenEXR
0018 ``OpenEXR_INCLUDE_DIRS``
0019 Include directory for OpenEXR
0020 ``OpenEXR_DEFINITIONS``
0021 Compiler flags required to link against OpenEXR
0022
0023 and the following imported targets:
0024
0025 ``OpenEXR::IlmImf``
0026 The OpenEXR core library
0027
0028 In general we recommend using the imported target, as it is easier to use.
0029 Bear in mind, however, that if the target is in the link interface of an
0030 exported library, it must be made available by the package config file.
0031
0032 Since pre-1.0.0.
0033 #]=======================================================================]
0034
0035 include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
0036
0037 ecm_find_package_version_check(OpenEXR)
0038
0039 # use pkg-config to get the directories and then use these values
0040 # in the FIND_PATH() and FIND_LIBRARY() calls
0041 find_package(PkgConfig QUIET)
0042 pkg_check_modules(PC_OpenEXR QUIET OpenEXR)
0043
0044 set(OpenEXR_DEFINITIONS ${PC_OpenEXR_CFLAGS_OTHER})
0045
0046 find_path(OpenEXR_INCLUDE_DIR ImfRgbaFile.h
0047 PATHS
0048 ${PC_OpenEXR_INCLUDEDIR}
0049 ${PC_OpenEXR_INCLUDE_DIRS}
0050 PATH_SUFFIXES OpenEXR
0051 )
0052
0053 # Required libraries for OpenEXR
0054 find_library(OpenEXR_HALF_LIBRARY NAMES Half
0055 PATHS
0056 ${PC_OpenEXR_LIBDIR}
0057 ${PC_OpenEXR_LIBRARY_DIRS}
0058 )
0059 find_library(OpenEXR_IEX_LIBRARY NAMES Iex
0060 PATHS
0061 ${PC_OpenEXR_LIBDIR}
0062 ${PC_OpenEXR_LIBRARY_DIRS}
0063 )
0064 find_library(OpenEXR_IMATH_LIBRARY NAMES Imath
0065 PATHS
0066 ${PC_OpenEXR_LIBDIR}
0067 ${PC_OpenEXR_LIBRARY_DIRS}
0068 )
0069 find_library(OpenEXR_ILMTHREAD_LIBRARY NAMES IlmThread
0070 PATHS
0071 ${PC_OpenEXR_LIBDIR}
0072 ${PC_OpenEXR_LIBRARY_DIRS}
0073 )
0074 # This is the actual OpenEXR library
0075 find_library(OpenEXR_ILMIMF_LIBRARY NAMES IlmImf
0076 PATHS
0077 ${PC_OpenEXR_LIBDIR}
0078 ${PC_OpenEXR_LIBRARY_DIRS}
0079 )
0080
0081 set(_OpenEXR_deps
0082 ${OpenEXR_HALF_LIBRARY}
0083 ${OpenEXR_IEX_LIBRARY}
0084 ${OpenEXR_IMATH_LIBRARY}
0085 ${OpenEXR_ILMTHREAD_LIBRARY})
0086
0087 set(OpenEXR_LIBRARIES
0088 ${_OpenEXR_deps}
0089 ${OpenEXR_ILMIMF_LIBRARY})
0090
0091 if (OpenEXR_INCLUDE_DIR AND EXISTS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h")
0092 file(STRINGS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h" openexr_version_str
0093 REGEX "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"[^\"]*\"")
0094 string(REGEX REPLACE "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"([^\"]*).*"
0095 "\\1" OpenEXR_VERSION_STRING "${openexr_version_str}")
0096 unset(openexr_version_str)
0097 endif ()
0098
0099 include(FindPackageHandleStandardArgs)
0100 # find_package_handle_standard_args reports the value of the first variable
0101 # on success, so make sure this is the actual OpenEXR library
0102 find_package_handle_standard_args(OpenEXR
0103 FOUND_VAR OpenEXR_FOUND
0104 REQUIRED_VARS
0105 OpenEXR_ILMIMF_LIBRARY
0106 OpenEXR_HALF_LIBRARY
0107 OpenEXR_IEX_LIBRARY
0108 OpenEXR_IMATH_LIBRARY
0109 OpenEXR_ILMTHREAD_LIBRARY
0110 OpenEXR_INCLUDE_DIR
0111 VERSION_VAR OpenEXR_VERSION_STRING)
0112
0113 set(OpenEXR_INCLUDE_DIRS ${OpenEXR_INCLUDE_DIR})
0114
0115 include(FeatureSummary)
0116 set_package_properties(OpenEXR PROPERTIES
0117 URL https://www.openexr.com/
0118 DESCRIPTION "A library for handling OpenEXR high dynamic-range image files")
0119
0120 mark_as_advanced(
0121 OpenEXR_INCLUDE_DIR
0122 OpenEXR_LIBRARIES
0123 OpenEXR_DEFINITIONS
0124 OpenEXR_ILMIMF_LIBRARY
0125 OpenEXR_ILMTHREAD_LIBRARY
0126 OpenEXR_IMATH_LIBRARY
0127 OpenEXR_IEX_LIBRARY
0128 OpenEXR_HALF_LIBRARY
0129 )
0130
0131 if(OpenEXR_FOUND AND NOT TARGET OpenEXR::IlmImf)
0132 add_library(OpenEXR::IlmImf UNKNOWN IMPORTED)
0133 set_target_properties(OpenEXR::IlmImf PROPERTIES
0134 IMPORTED_LOCATION "${OpenEXR_ILMIMF_LIBRARY}"
0135 INTERFACE_COMPILE_OPTIONS "${OpenEXR_DEFINITIONS}"
0136 INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}"
0137 INTERFACE_LINK_LIBRARIES "${_OpenEXR_deps}"
0138 )
0139 endif()