From d3361792b0f34f656b5afb1ef65d6453c3c26bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Tue, 11 Mar 2014 14:46:56 +0100 Subject: Import FindOpenEXR.cmake from kimageformats The thumbnail: ioslave from kde-runtime needs it. Reviewed-By: Alex Merry --- find-modules/FindOpenEXR.cmake | 144 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 find-modules/FindOpenEXR.cmake (limited to 'find-modules/FindOpenEXR.cmake') diff --git a/find-modules/FindOpenEXR.cmake b/find-modules/FindOpenEXR.cmake new file mode 100644 index 00000000..00a2364e --- /dev/null +++ b/find-modules/FindOpenEXR.cmake @@ -0,0 +1,144 @@ +# Try to find the OpenEXR libraries +# +# This will define: +# +# OpenEXR_FOUND - True if OpenEXR is available +# OpenEXR_LIBRARIES - Link to these to use OpenEXR +# OpenEXR_INCLUDE_DIRS - Include directory for OpenEXR +# OpenEXR_DEFINITIONS - Compiler flags required to link against OpenEXR +# OpenEXR::IlmImf - imported target to link against (instead of using the above variables) +# + + +# Copyright (c) 2006, Alexander Neundorf, +# Copyright (c) 2013-2014, Alex Merry, +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +if(${CMAKE_VERSION} VERSION_LESS 2.8.12) + message(FATAL_ERROR "CMake 2.8.12 is required by FindOpenEXR.cmake") +endif() + +# use pkg-config to get the directories and then use these values +# in the FIND_PATH() and FIND_LIBRARY() calls +find_package(PkgConfig) +pkg_check_modules(PC_OpenEXR QUIET OpenEXR) + +set(OpenEXR_DEFINITIONS ${PC_OpenEXR_CFLAGS_OTHER}) + +find_path(OpenEXR_INCLUDE_DIR ImfRgbaFile.h + PATHS + ${PC_OpenEXR_INCLUDEDIR} + ${PC_OpenEXR_INCLUDE_DIRS} + PATH_SUFFIXES OpenEXR +) + +# Required libraries for OpenEXR +find_library(OpenEXR_HALF_LIBRARY NAMES Half + PATHS + ${PC_OpenEXR_LIBDIR} + ${PC_OpenEXR_LIBRARY_DIRS} +) +find_library(OpenEXR_IEX_LIBRARY NAMES Iex + PATHS + ${PC_OpenEXR_LIBDIR} + ${PC_OpenEXR_LIBRARY_DIRS} +) +find_library(OpenEXR_IMATH_LIBRARY NAMES Imath + PATHS + ${PC_OpenEXR_LIBDIR} + ${PC_OpenEXR_LIBRARY_DIRS} +) +find_library(OpenEXR_ILMTHREAD_LIBRARY NAMES IlmThread + PATHS + ${PC_OpenEXR_LIBDIR} + ${PC_OpenEXR_LIBRARY_DIRS} +) +# This is the actual OpenEXR library +find_library(OpenEXR_ILMIMF_LIBRARY NAMES IlmImf + PATHS + ${PC_OpenEXR_LIBDIR} + ${PC_OpenEXR_LIBRARY_DIRS} +) + +set(_OpenEXR_deps + ${OpenEXR_HALF_LIBRARY} + ${OpenEXR_IEX_LIBRARY} + ${OpenEXR_IMATH_LIBRARY} + ${OpenEXR_ILMTHREAD_LIBRARY}) + +set(OpenEXR_LIBRARIES + ${_OpenEXR_deps} + ${OpenEXR_ILMIMF_LIBRARY}) + +if (OpenEXR_INCLUDE_DIR AND EXISTS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h") + file(STRINGS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h" openexr_version_str + REGEX "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"[^\"]*\"") + string(REGEX REPLACE "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"([^\"]*).*" + "\\1" OpenEXR_VERSION_STRING "${openexr_version_str}") + unset(openexr_version_str) +endif () + +include(FindPackageHandleStandardArgs) +# find_package_handle_standard_args reports the value of the first variable +# on success, so make sure this is the actual OpenEXR library +find_package_handle_standard_args(OpenEXR + FOUND_VAR OpenEXR_FOUND + REQUIRED_VARS + OpenEXR_ILMIMF_LIBRARY + OpenEXR_HALF_LIBRARY + OpenEXR_IEX_LIBRARY + OpenEXR_IMATH_LIBRARY + OpenEXR_ILMTHREAD_LIBRARY + OpenEXR_INCLUDE_DIR + VERSION_VAR OpenEXR_VERSION_STRING) + +set(OpenEXR_INCLUDE_DIRS ${OpenEXR_INCLUDE_DIR}) + +include(FeatureSummary) +set_package_properties(OpenEXR PROPERTIES + URL http://www.openexr.com/ + DESCRIPTION "A library for handling OpenEXR high dynamic-range image files") + +mark_as_advanced( + OpenEXR_INCLUDE_DIR + OpenEXR_LIBRARIES + OpenEXR_DEFINITIONS + OpenEXR_ILMIMF_LIBRARY + OpenEXR_ILMTHREAD_LIBRARY + OpenEXR_IMATH_LIBRARY + OpenEXR_IEX_LIBRARY + OpenEXR_HALF_LIBRARY +) + +if(OpenEXR_FOUND AND NOT TARGET OpenEXR::IlmImf) + add_library(OpenEXR::IlmImf UNKNOWN IMPORTED) + set_target_properties(OpenEXR::IlmImf PROPERTIES + IMPORTED_LOCATION "${OpenEXR_ILMIMF_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${OpenEXR_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${_OpenEXR_deps}" + ) +endif() -- cgit v1.2.1