From 596bb2f33c70b7c6859019971938194cc39e8bdb Mon Sep 17 00:00:00 2001 From: howetuft Date: Sat, 21 May 2022 18:18:50 +0200 Subject: [PATCH 09/14] openexr3 --- cmake/Packages/FindOpenEXR.cmake | 241 ++++++++++-------- .../src/OpenColorIO/BitDepthUtils.h | 2 +- .../src/OpenColorIO/MathUtils.h | 2 +- .../src/OpenColorIO/ops/range/RangeOp.cpp | 2 +- .../OpenColorIO/transforms/builtins/ACES.cpp | 2 +- .../transforms/builtins/OpHelpers.cpp | 2 +- .../src/libutils/oiiohelpers/oiiohelpers.cpp | 2 +- deps/openvdb-7.0.0/openvdb/Types.h | 2 +- include/slg/imagemap/imagemap.h | 2 +- include/slg/utils/halfserialization.h | 2 +- 10 files changed, 137 insertions(+), 122 deletions(-) diff --git a/cmake/Packages/FindOpenEXR.cmake b/cmake/Packages/FindOpenEXR.cmake index dfe517b34..a2f7b4c62 100644 --- a/cmake/Packages/FindOpenEXR.cmake +++ b/cmake/Packages/FindOpenEXR.cmake @@ -1,123 +1,138 @@ -################################################################################ -# Copyright 1998-2020 by authors (see AUTHORS.txt) +# - Find OpenEXR library +# Find the native OpenEXR includes and library +# This module defines +# OPENEXR_INCLUDE_DIRS, where to find ImfXdr.h, etc. Set when +# OPENEXR_INCLUDE_DIR is found. +# OPENEXR_LIBRARIES, libraries to link against to use OpenEXR. +# OPENEXR_ROOT_DIR, The base directory to search for OpenEXR. +# This can also be an environment variable. +# OPENEXR_FOUND, If false, do not try to use OpenEXR. # -# This file is part of LuxCoreRender. +# For individual library access these advanced settings are available +# OPENEXR_HALF_LIBRARY, Path to Half library +# OPENEXR_IEX_LIBRARY, Path to Half library +# OPENEXR_ILMIMF_LIBRARY, Path to Ilmimf library +# OPENEXR_ILMTHREAD_LIBRARY, Path to IlmThread library +# OPENEXR_IMATH_LIBRARY, Path to Imath library # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -################################################################################ - -# - Try to find OpenEXR -# Library is first searched for in OPENEXR_ROOT -# Once done, this will define +# also defined, but not for general use are +# OPENEXR_LIBRARY, where to find the OpenEXR library. + +#============================================================================= +# Copyright 2011 Blender Foundation. # -# OPENEXR_FOUND - system has OpenEXR -# OPENEXR_INCLUDE_DIRS - the OpenEXR include directories -# OPENEXR_LIBRARIES - link these to use OpenEXR - -# Lookup user specified path first -SET(OpenEXR_TEST_HEADERS ImfXdr.h OpenEXRConfig.h IlmBaseConfig.h) -SET(OpenEXR_INC_SUFFIXES include/OpenEXR include Include Headers) -FIND_PATH(OPENEXR_INCLUDE_DIRS - NAMES ${OpenEXR_TEST_HEADERS} - PATHS "${OPENEXR_ROOT}" - PATH_SUFFIXES ${OpenEXR_INC_SUFFIXES} - NO_DEFAULT_PATH - DOC "The directory where IlmBaseConfig.h resides" +# Distributed under the OSI-approved BSD 3-Clause License, +# see accompanying file BSD-3-Clause-license.txt for details. +#============================================================================= + +# If OPENEXR_ROOT_DIR was defined in the environment, use it. +IF(NOT OPENEXR_ROOT_DIR AND NOT $ENV{OPENEXR_ROOT_DIR} STREQUAL "") + SET(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR}) +ENDIF() + +# Old versions (before 2.0?) do not have any version string, just assuming this should be fine though. +SET(_openexr_libs_ver_init "2.0") + +SET(_openexr_FIND_COMPONENTS + Iex + Imath + OpenEXR + IlmThread ) -FIND_PATH(OPENEXR_INCLUDE_DIRS - NAMES ${OpenEXR_TEST_HEADERS} - PATHS /usr/local /usr /sw /opt/local /opt/csw /opt - PATH_SUFFIXES ${OpenEXR_INC_SUFFIXES} - DOC "The directory where IlmBaseConfig.h resides" + +SET(_openexr_SEARCH_DIRS + ${OPENEXR_ROOT_DIR} + /opt/lib/openexr +) + +FIND_PATH(OPENEXR_INCLUDE_DIR + NAMES + OpenEXR/ImfXdr.h + HINTS + ${_openexr_SEARCH_DIRS} + PATH_SUFFIXES + include ) -IF (OPENEXR_INCLUDE_DIRS) -# Lookup additional headers in case they are in subdirectories -SET(OpenEXR_MODULES Iex Imf half Imath IlmThread) -FOREACH(i ${OpenEXR_MODULES}) - FIND_PATH(OpenEXR_${i}_INCLUDE_DIR - NAMES ${i}.h ${i}Header.h ${i}Math.h - PATHS "${OPENEXR_INCLUDE_DIRS}" "${OPENEXR_INCLUDE_DIRS}/${i}" "${OPENEXR_INCLUDE_DIRS}/Ilm${i}" - NO_DEFAULT_PATH - DOC "The directory where ${i}.h resides" - ) -ENDFOREACH(i) -FOREACH(i ${OpenEXR_MODULES}) - IF (NOT OpenEXR_${i}_INCLUDE_DIR) - SET(OpenEXR_${i}_INCLUDE_DIR "") - ENDIF (NOT OpenEXR_${i}_INCLUDE_DIR) - IF ("${OpenEXR_${i}_INCLUDE_DIR}" STREQUAL "${OPENEXR_INCLUDE_DIRS}") - SET(OpenEXR_${i}_INCLUDE_DIR "") - ENDIF ("${OpenEXR_${i}_INCLUDE_DIR}" STREQUAL "${OPENEXR_INCLUDE_DIRS}") -ENDFOREACH(i) -FOREACH(i ${OpenEXR_MODULES}) - SET(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIRS} ${OpenEXR_${i}_INCLUDE_DIR}) -ENDFOREACH(i) -ENDIF(OPENEXR_INCLUDE_DIRS) - -SET(OpenEXR_LIBRARY_MODULES Iex IlmImf Half Imath IlmThread) -SET(OpenEXR_LIB_SUFFIXES lib64 lib Lib lib/OpenEXR Libs x64/Release/lib) -SET(OpenEXR_LIB_SUFFIXES_REL) -SET(OpenEXR_LIB_SUFFIXES_DBG) -FOREACH(i ${OpenEXR_LIB_SUFFIXES}) - SET(OpenEXR_LIB_SUFFIXES_REL ${OpenEXR_LIB_SUFFIXES_REL} - "${i}" "${i}/release" "${i}/relwithdebinfo" "${i}/minsizerel" "${i}/dist") - SET(OpenEXR_LIB_SUFFIXES_DBG ${OpenEXR_LIB_SUFFIXES_DBG} - "${i}" "${i}/debug" "${i}/dist") -ENDFOREACH(i) -SET(OPENEXR_LIBRARIES) -FOREACH(i ${OpenEXR_LIBRARY_MODULES}) - FIND_LIBRARY(OpenEXR_${i}_LIBRARY_REL - NAMES ${i} - PATHS "${OPENEXR_ROOT}" - PATH_SUFFIXES ${OpenEXR_LIB_SUFFIXES_REL} - NO_DEFAULT_PATH - DOC "The ${i} release library" - ) - FIND_LIBRARY(OpenEXR_${i}_LIBRARY_REL - NAMES ${i} - PATHS /usr/local /usr /sw /opt/local /opt/csw /opt - PATH_SUFFIXES ${OpenEXR_LIB_SUFFIXES_REL} - DOC "The ${i} release library" - ) - FIND_LIBRARY(OpenEXR_${i}_LIBRARY_DBG - NAMES "${i}d" "${i}D" "${i}_d" "${i}_D" "${i}_debug" - PATHS "${OPENEXR_ROOT}" - PATH_SUFFIXES ${OpenEXR_LIB_SUFFIXES_DBG} - NO_DEFAULT_PATH - DOC "The ${i} debug library" - ) - FIND_LIBRARY(OpenEXR_${i}_LIBRARY_DBG - NAMES "${i}d" "${i}D" "${i}_d" "${i}_D" "${i}_debug" - PATHS /usr/local /usr /sw /opt/local /opt/csw /opt - PATH_SUFFIXES ${OpenEXR_LIB_SUFFIXES_DBG} - DOC "The ${i} debug library" - ) - IF (OpenEXR_${i}_LIBRARY_REL AND OpenEXR_${i}_LIBRARY_DBG) - SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} - optimized ${OpenEXR_${i}_LIBRARY_REL} - debug ${OpenEXR_${i}_LIBRARY_DBG}) - ELSEIF (OpenEXR_${i}_LIBRARY_REL) - SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} - ${OpenEXR_${i}_LIBRARY_REL}) - ELSEIF (OpenEXR_${i}_LIBRARY_DBG) - SET(OPENEXR_LIBRARIES ${OPENEXR_LIBRARIES} - ${OpenEXR_${i}_LIBRARY_DBG}) - ENDIF (OpenEXR_${i}_LIBRARY_REL AND OpenEXR_${i}_LIBRARY_DBG) -ENDFOREACH (i) +# If the headers were found, get the version from config file, if not already set. +IF(OPENEXR_INCLUDE_DIR) + IF(NOT OPENEXR_VERSION) + + FIND_FILE(_openexr_CONFIG + NAMES + OpenEXRConfig.h + PATHS + "${OPENEXR_INCLUDE_DIR}" + "${OPENEXR_INCLUDE_DIR}/OpenEXR" + NO_DEFAULT_PATH + ) + + IF(_openexr_CONFIG) + FILE(STRINGS "${_openexr_CONFIG}" OPENEXR_BUILD_SPECIFICATION + REGEX "^[ \t]*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"[.0-9]+\".*$") + ELSE() + MESSAGE(WARNING "Could not find \"OpenEXRConfig.h\" in \"${OPENEXR_INCLUDE_DIR}\"") + ENDIF() + IF(OPENEXR_BUILD_SPECIFICATION) + MESSAGE(STATUS "${OPENEXR_BUILD_SPECIFICATION}") + STRING(REGEX REPLACE ".*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"([.0-9]+)\".*" + "\\1" _openexr_libs_ver_init ${OPENEXR_BUILD_SPECIFICATION}) + ELSE() + MESSAGE(WARNING "Could not determine ILMBase library version, assuming ${_openexr_libs_ver_init}.") + ENDIF() + + UNSET(_openexr_CONFIG CACHE) + + ENDIF() +ENDIF() + +SET("OPENEXR_VERSION" ${_openexr_libs_ver_init} CACHE STRING "Version of OpenEXR lib") +UNSET(_openexr_libs_ver_init) + +STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _openexr_libs_ver ${OPENEXR_VERSION}) + +SET(_openexr_LIBRARIES) +FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) + STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) + + FIND_LIBRARY(OPENEXR_${UPPERCOMPONENT}_LIBRARY + NAMES + ${COMPONENT}-${_openexr_libs_ver} ${COMPONENT} + NAMES_PER_DIR + HINTS + ${_openexr_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + LIST(APPEND _openexr_LIBRARIES "${OPENEXR_${UPPERCOMPONENT}_LIBRARY}") +ENDFOREACH() + +UNSET(_openexr_libs_ver) + +# handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if +# all listed variables are TRUE INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENEXR DEFAULT_MSG OPENEXR_LIBRARIES OPENEXR_INCLUDE_DIRS) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenEXR DEFAULT_MSG + _openexr_LIBRARIES OPENEXR_INCLUDE_DIR) -MARK_AS_ADVANCED(OPENEXR_INCLUDE_DIRS OPENEXR_LIBRARIES) +IF(OPENEXR_FOUND) + SET(OPENEXR_LIBRARIES ${_openexr_LIBRARIES}) + # Both include paths are needed because of dummy OSL headers mixing #include and #include :( + SET(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR_INCLUDE_DIR}/OpenEXR ${OPENEXR_INCLUDE_DIR}/Imath) +ENDIF() + +MARK_AS_ADVANCED( + OPENEXR_INCLUDE_DIR + OPENEXR_VERSION +) +FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) + STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) + MARK_AS_ADVANCED(OPENEXR_${UPPERCOMPONENT}_LIBRARY) +ENDFOREACH() +UNSET(COMPONENT) +UNSET(UPPERCOMPONENT) +UNSET(_openexr_FIND_COMPONENTS) +UNSET(_openexr_LIBRARIES) +UNSET(_openexr_SEARCH_DIRS) diff --git a/deps/opencolorio-2.0.0/src/OpenColorIO/BitDepthUtils.h b/deps/opencolorio-2.0.0/src/OpenColorIO/BitDepthUtils.h index a8b3cbd94..bb0163bff 100644 --- a/deps/opencolorio-2.0.0/src/OpenColorIO/BitDepthUtils.h +++ b/deps/opencolorio-2.0.0/src/OpenColorIO/BitDepthUtils.h @@ -7,7 +7,7 @@ #include -#include "OpenEXR/half.h" +#include "Imath/half.h" namespace OCIO_NAMESPACE diff --git a/deps/opencolorio-2.0.0/src/OpenColorIO/MathUtils.h b/deps/opencolorio-2.0.0/src/OpenColorIO/MathUtils.h index 309c6244f..0873d4908 100644 --- a/deps/opencolorio-2.0.0/src/OpenColorIO/MathUtils.h +++ b/deps/opencolorio-2.0.0/src/OpenColorIO/MathUtils.h @@ -9,7 +9,7 @@ #include -#include "OpenEXR/half.h" +#include "Imath/half.h" namespace OCIO_NAMESPACE { diff --git a/deps/opencolorio-2.0.0/src/OpenColorIO/ops/range/RangeOp.cpp b/deps/opencolorio-2.0.0/src/OpenColorIO/ops/range/RangeOp.cpp index b6fb6d9e7..e7389203c 100644 --- a/deps/opencolorio-2.0.0/src/OpenColorIO/ops/range/RangeOp.cpp +++ b/deps/opencolorio-2.0.0/src/OpenColorIO/ops/range/RangeOp.cpp @@ -7,7 +7,7 @@ #include #include "GpuShaderUtils.h" -#include "OpenEXR/half.h" +#include "Imath/half.h" #include "HashUtils.h" #include "MathUtils.h" #include "ops/lut1d/Lut1DOpData.h" diff --git a/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/ACES.cpp b/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/ACES.cpp index 20968c0da..9ee2ac27a 100644 --- a/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/ACES.cpp +++ b/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/ACES.cpp @@ -6,7 +6,7 @@ #include -#include "OpenEXR/half.h" +#include "Imath/half.h" #include "ops/fixedfunction/FixedFunctionOp.h" #include "ops/gradingrgbcurve/GradingRGBCurveOp.h" #include "ops/log/LogOp.h" diff --git a/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/OpHelpers.cpp b/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/OpHelpers.cpp index 04b8fbd40..288ca5668 100644 --- a/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/OpHelpers.cpp +++ b/deps/opencolorio-2.0.0/src/OpenColorIO/transforms/builtins/OpHelpers.cpp @@ -4,7 +4,7 @@ #include -#include "OpenEXR/half.h" +#include "Imath/half.h" #include "ops/lut1d/Lut1DOp.h" #include "transforms/builtins/OpHelpers.h" diff --git a/deps/opencolorio-2.0.0/src/libutils/oiiohelpers/oiiohelpers.cpp b/deps/opencolorio-2.0.0/src/libutils/oiiohelpers/oiiohelpers.cpp index 3228644ad..11478daff 100644 --- a/deps/opencolorio-2.0.0/src/libutils/oiiohelpers/oiiohelpers.cpp +++ b/deps/opencolorio-2.0.0/src/libutils/oiiohelpers/oiiohelpers.cpp @@ -5,7 +5,7 @@ #include -#include "OpenEXR/half.h" +#include "Imath/half.h" #include "oiiohelpers.h" #include "utils/StringUtils.h" diff --git a/deps/openvdb-7.0.0/openvdb/Types.h b/deps/openvdb-7.0.0/openvdb/Types.h index 70269cf07..0d9906828 100644 --- a/deps/openvdb-7.0.0/openvdb/Types.h +++ b/deps/openvdb-7.0.0/openvdb/Types.h @@ -6,7 +6,7 @@ #include "version.h" #include "Platform.h" -#include +#include #include #include #include diff --git a/include/slg/imagemap/imagemap.h b/include/slg/imagemap/imagemap.h index 0260456ce..46d2c2241 100644 --- a/include/slg/imagemap/imagemap.h +++ b/include/slg/imagemap/imagemap.h @@ -19,7 +19,7 @@ #ifndef _SLG_IMAGEMAP_H #define _SLG_IMAGEMAP_H -#include +#include #include #include diff --git a/include/slg/utils/halfserialization.h b/include/slg/utils/halfserialization.h index 551789888..2624f118c 100644 --- a/include/slg/utils/halfserialization.h +++ b/include/slg/utils/halfserialization.h @@ -19,7 +19,7 @@ #ifndef _SLG_HALFSERIALIZATION_H #define _SLG_HALFSERIALIZATION_H -#include +#include #include "luxrays/utils/utils.h" #include "luxrays/utils/serializationutils.h" -- 2.43.0