aur/openexr3.patch
Sven-Hendrik Haase 0b0a921ad6 upgpkg: 2.4.0-6
2022-11-24 00:05:23 +00:00

309 lines
12 KiB
Diff

--- AliceVision-2.4.0/src/cmake/openexr/FindOpenEXR.cmake 2021-05-30 08:32:20.810681100 +0200
+++ AliceVision-2.4.0.new/src/cmake/openexr/FindOpenEXR.cmake 2021-05-30 08:30:50.611355400 +0200
@@ -1,178 +1,138 @@
-# Module to find OpenEXR.
+# - 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 module will set
-# OPENEXR_FOUND true, if found
-# OPENEXR_INCLUDE_DIR directory where headers are found
-# OPENEXR_LIBRARIES libraries for OpenEXR + IlmBase
-# ILMBASE_LIBRARIES libraries just IlmBase
-# OPENEXR_VERSION OpenEXR version (accurate for >= 2.0.0,
-# otherwise will just guess 1.6.1)
+# 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
#
-# Special inputs:
-# OPENEXR_CUSTOM_INCLUDE_DIR - custom location of headers
-# OPENEXR_CUSTOM_LIB_DIR - custom location of libraries
-# OPENEXR_CUSTOM_LIB_PREFIX - special snowflake library prefix
-# OPENEXR_CUSTOM_LIB_SUFFIX - special snowflake library suffix
+# also defined, but not for general use are
+# OPENEXR_LIBRARY, where to find the OpenEXR library.
+
+#=============================================================================
+# Copyright 2011 Blender Foundation.
#
+# 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
+)
-# Other standard issue macros
-include (FindPackageHandleStandardArgs)
-include (SelectLibraryConfigurations)
-
-find_package (ZLIB REQUIRED)
-
-# Link with pthreads if required
-find_package (Threads)
-if (CMAKE_USE_PTHREADS_INIT)
- set (ILMBASE_PTHREADS ${CMAKE_THREAD_LIBS_INIT})
-endif ()
-
-# List of likely places to find the headers -- note priority override of
-# OPENEXR_CUSTOM_INCLUDE_DIR and ${OPENEXR_HOME}/include.
-# ILMBASE is needed in case ilmbase an openexr are installed in separate
-# directories, like NixOS does
-set (GENERIC_INCLUDE_PATHS
- ${OPENEXR_CUSTOM_INCLUDE_DIR}
- ${OPENEXR_HOME}/include
- ${ILMBASE_HOME}/include
-# /usr/local/include
-# /usr/include
-# /usr/include/${CMAKE_LIBRARY_ARCHITECTURE}
-# /sw/include
-# /opt/local/include
+SET(_openexr_SEARCH_DIRS
+ ${OPENEXR_ROOT_DIR}
+ /opt/lib/openexr
)
-# Find the include file locations. We call find_path twice -- first using
-# only the custom paths, then if that fails, try the default paths only.
-# This seems to be the most robust way I can find to not get confused when
-# both system and custom libraries are present.
-find_path (ILMBASE_INCLUDE_PATH OpenEXR/IlmBaseConfig.h
- PATHS ${GENERIC_INCLUDE_PATHS})
-#find_path (ILMBASE_INCLUDE_PATH OpenEXR/IlmBaseConfig.h)
-find_path (OPENEXR_INCLUDE_PATH OpenEXR/OpenEXRConfig.h
- PATHS ${GENERIC_INCLUDE_PATHS})
-#find_path (OPENEXR_INCLUDE_PATH OpenEXR/OpenEXRConfig.h)
-
-# message(WARNING "GENERIC_INCLUDE_PATHS: ${GENERIC_INCLUDE_PATHS}")
-# message(WARNING "Test if file exist: ${OPENEXR_INCLUDE_PATH}/OpenEXR/ImfMultiPartInputFile.h")
-
-
-# Try to figure out version number
-if (EXISTS "${OPENEXR_INCLUDE_PATH}/OpenEXR/ImfMultiPartInputFile.h")
- # message(WARNING "Yes, file exist")
-
- # Must be at least 2.0
- file(STRINGS "${OPENEXR_INCLUDE_PATH}/OpenEXR/OpenEXRConfig.h" TMP REGEX "^#define OPENEXR_VERSION_STRING .*$")
- string (REGEX MATCHALL "[0-9]+[.0-9]+" OPENEXR_VERSION ${TMP})
- file(STRINGS "${OPENEXR_INCLUDE_PATH}/OpenEXR/OpenEXRConfig.h" TMP REGEX "^#define OPENEXR_VERSION_MAJOR .*$")
- string (REGEX MATCHALL "[0-9]+" OPENEXR_VERSION_MAJOR ${TMP})
- file(STRINGS "${OPENEXR_INCLUDE_PATH}/OpenEXR/OpenEXRConfig.h" TMP REGEX "^#define OPENEXR_VERSION_MINOR .*$")
- string (REGEX MATCHALL "[0-9]+" OPENEXR_VERSION_MINOR ${TMP})
-else ()
- message(STATUS "File ${OPENEXR_INCLUDE_PATH}/OpenEXR/ImfMultiPartInputFile.h does not exist. Default to 1.6.1")
- # Assume an old one, predates 2.x that had versions
- set (OPENEXR_VERSION 1.6.1)
- set (OPENEXR_MAJOR 1)
- set (OPENEXR_MINOR 6)
-endif ()
-
-
-# List of likely places to find the libraries -- note priority override of
-# OPENEXR_CUSTOM_LIB_DIR and ${OPENEXR_HOME}/lib.
-
-# If there's no OPENEXR_HOME or ILMBASE_HOME, then the path will point to
-# "/lib", which may not always be wanted/expected.
-if (OPENEXR_CUSTOM_LIB_DIR)
- set (GENERIC_LIBRARY_PATHS ${GENERIC_LIBRARY_PATHS} ${OPENEXR_CUSTOM_LIB_DIR})
-endif()
-
-if (OPENEXR_HOME)
- set (GENERIC_LIBRARY_PATHS ${GENERIC_LIBRARY_PATHS} ${OPENEXR_HOME})
-endif()
-
-if (ILMBASE_HOME)
- set (GENERIC_LIBRARY_PATHS ${GENERIC_LIBRARY_PATHS} ${ILMBASE_HOME})
-endif()
-
-set (GENERIC_LIBRARY_PATHS
- ${GENERIC_LIBRARY_PATHS}
- ${OPENEXR_INCLUDE_PATH}/../lib
- ${ILMBASE_INCLUDE_PATH}/../lib
- /usr/local/lib
- /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
- /usr/lib
- /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
- /sw/lib
- /opt/local/lib
- $ENV{PROGRAM_FILES}/OpenEXR/lib/static )
-
-# Handle request for static libs by altering CMAKE_FIND_LIBRARY_SUFFIXES.
-# We will restore it at the end of this file.
-set (_openexr_orig_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
-if (OpenEXR_USE_STATIC_LIBS)
- if (WIN32)
- set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
- else ()
- set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
- endif ()
-endif ()
-
-# Look for the libraries themselves, for all the components. Like with the
-# headers, we do two finds -- first for custom locations, then for default.
-# This is complicated because the OpenEXR libraries may or may not be
-# built with version numbers embedded.
-set (_openexr_components IlmThread IlmImf Imath Iex Half)
-foreach (COMPONENT ${_openexr_components})
- string (TOUPPER ${COMPONENT} UPPERCOMPONENT)
- # First try with the version embedded
- set (FULL_COMPONENT_NAME ${OPENEXR_CUSTOM_LIB_PREFIX}${COMPONENT}-${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}${OPENEXR_CUSTOM_LIB_SUFFIX})
- find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME}
- PATHS ${GENERIC_LIBRARY_PATHS} NO_DEFAULT_PATH)
- # Again, with no directory restrictions
- find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME})
- # Try again without the version
- set (FULL_COMPONENT_NAME ${OPENEXR_CUSTOM_LIB_PREFIX}${COMPONENT}${OPENEXR_CUSTOM_LIB_SUFFIX})
- find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME}
- PATHS ${GENERIC_LIBRARY_PATHS} NO_DEFAULT_PATH)
- # One more time, with no restrictions
- find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME})
-endforeach ()
-#Half usually has no suffix
-find_library (OPENEXR_HALF_LIBRARY ${OPENEXR_CUSTOM_LIB_PREFIX}Half
- PATHS ${GENERIC_LIBRARY_PATHS} NO_DEFAULT_PATH)
-find_library (OPENEXR_HALF_LIBRARY ${OPENEXR_CUSTOM_LIB_PREFIX}Half)
-
-# Set the FOUND, INCLUDE_DIR, and LIBRARIES variables.
-if (ILMBASE_INCLUDE_PATH AND OPENEXR_INCLUDE_PATH AND
- OPENEXR_IMATH_LIBRARY AND OPENEXR_ILMIMF_LIBRARY AND
- OPENEXR_IEX_LIBRARY AND OPENEXR_HALF_LIBRARY)
- set (OPENEXR_FOUND TRUE)
- set (ILMBASE_FOUND TRUE)
- set (ILMBASE_INCLUDE_DIR ${ILMBASE_INCLUDE_PATH};${ILMBASE_INCLUDE_PATH}/OpenEXR CACHE STRING "The include paths needed to use IlmBase")
- set (OPENEXR_INCLUDE_DIR ${OPENEXR_INCLUDE_PATH} CACHE STRING "The include paths needed to use OpenEXR")
- set (ILMBASE_LIBRARIES ${OPENEXR_IMATH_LIBRARY} ${OPENEXR_IEX_LIBRARY} ${OPENEXR_HALF_LIBRARY} ${OPENEXR_ILMTHREAD_LIBRARY} ${ILMBASE_PTHREADS} CACHE STRING "The libraries needed to use IlmBase")
- set (OPENEXR_LIBRARIES ${OPENEXR_ILMIMF_LIBRARY} ${ILMBASE_LIBRARIES} ${ZLIB_LIBRARIES} CACHE STRING "The libraries needed to use OpenEXR")
-endif ()
-
-find_package_handle_standard_args (OpenEXR
- REQUIRED_VARS ILMBASE_INCLUDE_PATH OPENEXR_INCLUDE_PATH
- OPENEXR_IMATH_LIBRARY OPENEXR_ILMIMF_LIBRARY
- OPENEXR_IEX_LIBRARY OPENEXR_HALF_LIBRARY
- VERSION_VAR OPENEXR_VERSION
+FIND_PATH(OPENEXR_INCLUDE_DIR
+ NAMES
+ OpenEXR/ImfXdr.h
+ HINTS
+ ${_openexr_SEARCH_DIRS}
+ PATH_SUFFIXES
+ include
+)
+
+# 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
)
-message(WARNING "ILMBASE_INCLUDE_DIR: ${ILMBASE_INCLUDE_DIR}")
+ 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()
-MARK_AS_ADVANCED(
- ILMBASE_INCLUDE_DIR
- OPENEXR_INCLUDE_DIR
- ILMBASE_LIBRARIES
- OPENEXR_LIBRARIES
- OPENEXR_ILMIMF_LIBRARY
- OPENEXR_IMATH_LIBRARY
- OPENEXR_IEX_LIBRARY
- OPENEXR_HALF_LIBRARY
- OPENEXR_VERSION)
+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_DIR)
+
+IF(OPENEXR_FOUND)
+ SET(OPENEXR_LIBRARIES ${_openexr_LIBRARIES})
+ # Both include paths are needed because of dummy OSL headers mixing #include <OpenEXR/foo.h> and #include <foo.h> :(
+ SET(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR_INCLUDE_DIR}/OpenEXR ${OPENEXR_INCLUDE_DIR}/Imath)
+ENDIF()
-# Restore the original CMAKE_FIND_LIBRARY_SUFFIXES
-set (CMAKE_FIND_LIBRARY_SUFFIXES ${_openexr_orig_suffixes})
+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)