Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adsk contrib - Add support for neon intrinsic integration #1828

Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e60e6cd
Merging the previous ARM Neon branch
cedrik-fuoco-adsk Aug 24, 2023
00e06c4
Testing each SIMD variants using a small code snippet and first pass …
cedrik-fuoco-adsk Aug 21, 2023
036ed40
Removing the usage of USE_SSE in favor of the new OCIO_USE_SSE2 as th…
cedrik-fuoco-adsk Aug 21, 2023
a134556
Using try_compile instead of check_cxx_source_compiles as it was give…
cedrik-fuoco-adsk Aug 23, 2023
248dde7
Comments clean up and refactor some comments and documentations
cedrik-fuoco-adsk Aug 24, 2023
bb78900
Added something in the documentation for Rosetta and small change in …
cedrik-fuoco-adsk Aug 24, 2023
f799a27
Fixing the build under Rosetta and fixing issue in the MacOS CI.
cedrik-fuoco-adsk Aug 25, 2023
590be95
Using try_compile for CheckSupportSSEUsingSSE2NEON to standardize the…
cedrik-fuoco-adsk Aug 28, 2023
c31c07d
use emmintrin.h for only sse2 features
markreidvfx Aug 27, 2023
8a864dd
Allow F16C to be completely turned off
markreidvfx Aug 27, 2023
0065242
Seperate SIMD test code from code that adds unit tests.
markreidvfx Aug 27, 2023
7534eea
remove uneeded checks
markreidvfx Aug 28, 2023
e3c5ef0
use software implementations of f16c intrinsics for SSE2
markreidvfx Aug 28, 2023
dfcde18
Added preprocessor checks for ARM as it is needed for universal build…
cedrik-fuoco-adsk Aug 28, 2023
5bb952a
Adding missing checks for "not arm64"
cedrik-fuoco-adsk Aug 28, 2023
2415a98
Ease the future maintainability a the new OCIO_USE_xyz be moving the …
cedrik-fuoco-adsk Aug 29, 2023
84ca7fe
Fixing some spacing, documentations and making some cmake conditions …
cedrik-fuoco-adsk Aug 29, 2023
fac52ff
Adding a build in ci_workflow for macos USE_OCIO_SSE2NEON=OFF
cedrik-fuoco-adsk Aug 29, 2023
2ac201d
typo
cedrik-fuoco-adsk Aug 29, 2023
c2083c0
Changing back all the macOS (except one) builds to x86_64 only as it …
cedrik-fuoco-adsk Aug 29, 2023
e40b223
Merge branch 'main' into adsk_contrib/add-support-for-neon-intrinsic-…
cedrik-fuoco-adsk Aug 30, 2023
e563a90
Merge branch 'main' into adsk_contrib/add-support-for-neon-intrinsic-…
cedrik-fuoco-adsk Aug 31, 2023
6765e8a
Update the CMakeLists.txt logic to accomodate all scenario and fixing…
cedrik-fuoco-adsk Aug 31, 2023
8cd2592
Merge branch 'main' into adsk_contrib/add-support-for-neon-intrinsic-…
cedrik-fuoco-adsk Aug 31, 2023
32eea12
Merge branch 'main' into adsk_contrib/add-support-for-neon-intrinsic-…
doug-walker Aug 31, 2023
3a91fb8
Update documentation and remove ocio_use_sse2neon from the CI matrix
cedrik-fuoco-adsk Sep 1, 2023
e2489b3
Merge branch 'adsk_contrib/add-support-for-neon-intrinsic-integration…
cedrik-fuoco-adsk Sep 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ jobs:
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_SIMD=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
Expand Down Expand Up @@ -384,7 +384,7 @@ jobs:
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_SIMD=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
Expand Down Expand Up @@ -532,7 +532,7 @@ jobs:
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_SIMD=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
Expand Down
114 changes: 102 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ if(APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
endif()


###############################################################################
# By default, build the library, tests, tools, and Python binding as universal binaries for macOS.

if(APPLE AND (NOT DEFINED CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL ""))
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "Default OS X architectures" FORCE)
endif()


###############################################################################
# Project definition.

Expand Down Expand Up @@ -173,21 +181,49 @@ endif()

###############################################################################
# Optimization / internal linking preferences

option(OCIO_USE_SSE "Specify whether to enable SSE CPU performance optimizations" ON)
option(OCIO_USE_SIMD "Specify whether to enable SIMD CPU performance optimizations" ON)
option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ocioconvert and ociodisplay), the default uses OpenEXR." OFF)

if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|X86|x86_64|i386|i686)")
option(OCIO_USE_SSE2 "Specify whether to enable SSE2 CPU performance optimizations" ON)
option(OCIO_USE_SSE3 "Specify whether to enable SSE3 CPU performance optimizations" ON)
option(OCIO_USE_SSSE3 "Specify whether to enable SSSE3 CPU performance optimizations" ON)
option(OCIO_USE_SSE4 "Specify whether to enable SSE4 CPU performance optimizations" ON)
option(OCIO_USE_SSE42 "Specify whether to enable SSE4.2 CPU performance optimizations" ON)
option(OCIO_USE_AVX "Specify whether to enable AVX CPU performance optimizations" ON)
option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizations" ON)
option(OCIO_USE_AVX512 "Specify whether to enable AVX512 CPU performance optimizations" ON)
option(OCIO_USE_F16C "Specify whether to enable F16C CPU performance optimizations" ON)
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|X86|x86_64|i386|i686)" OR
(APPLE AND "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64" AND "${CMAKE_OSX_ARCHITECTURES}" MATCHES "(arm64;x86_64|x86_64;arm64|x86_64)"))

# Enable OCIO_ARCH_X86 for any intel-based architecture or Apple Rosetta (x86_64 or universal build).
set(OCIO_ARCH_X86 1)

# For a Mac OS universal build, OCIO translates the SSE instructions into ARM Neon with
# the library SSE2NEON for the arm64 side of the binary.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
elseif(APPLE AND "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64" AND "${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64")

# Apple ARM only build.
remia marked this conversation as resolved.
Show resolved Hide resolved

# OCIO translates the SSE instructions into ARM Neon with the library SSE2NEON.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# OCIO does not translate AVX to ARM Neon.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
# Turn F16C off since they are x86_64 instructions.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
else()
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
set(OCIO_ARCH_X86 0)
endif()

option(OCIO_USE_SSE2 "Specify whether to enable SSE2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE3 "Specify whether to enable SSE3 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSSE3 "Specify whether to enable SSSE3 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE4 "Specify whether to enable SSE4 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE42 "Specify whether to enable SSE4.2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_AVX "Specify whether to enable AVX CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_AVX512 "Specify whether to enable AVX512 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_F16C "Specify whether to enable F16C CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C})

if (APPLE)
option(OCIO_USE_SSE2NEON "Specify whether to enable SSE CPU performance optimizations using SSE2NEON for Apple ARM architecture" ON)
endif()

###############################################################################
Expand All @@ -197,6 +233,60 @@ message(STATUS "Checking for GPU configuration...")
include(CheckSupportGL)


###############################################################################
# Check for ARM neon here because we need to know if ARM NEON is supported
# quickly. Once we know that ARM NEON is supported, we can add sse2neon library
# to the build.

if(OCIO_USE_SIMD)
include(CheckSupportARMNeon)

if (NOT COMPILER_SUPPORTS_ARM_NEON)
# Force it to OFF since ARM Neon is not supported.
set(OCIO_USE_SSE2NEON OFF)
endif()
endif()


###############################################################################
# Add sse2neon to the build if ARM NEON intrinsics are supported.

if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON)
# Install sse2neon. Please note that sse2neon is downloaded during the configure step as it is
# needed for CompilerFlags.cmake and CheckSupportSSE2.cmake.

# Sse2neon is not treated like an imported target. The logic to find sse2neon is here because
# a find module is not suitable for sse2neon's use case.
find_path(sse2neon_INCLUDE_DIR
NAMES
sse2neon.h
HINTS
${sse2neon_ROOT}
PATH_SUFFIXES
sse2neon
include
sse2neon/include
)

# As per instructions on sse2neon's GitHub page, the following compiler flags should be used:
# "-march=armv8-a+fp+simd+crypto+crc". These flags are required for some ARM platforms that do
# not enable floating point calculations or SIMD instructions by default. However, for ARM64
# (Apple ARM platform) and x86_64 platforms, these features are already enabled by default.
# Therefore, no additional compiler flags are needed.
if (NOT sse2neon_INCLUDE_DIR)
include(Installsse2neon)
else()
# Any changes to the following lines must be replicated in Installsse2neon.cmake as well.
# Create a target for sse2neon (non-imported)
add_library(sse2neon INTERFACE)
# Add the include directories to the target.
target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}")
# Ignore the warnings coming from sse2neon.h as they are false positives.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
endif()
endif()


###############################################################################
# Define compilation and link flags

Expand Down
26 changes: 25 additions & 1 deletion docs/quick_start/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ CMake Options
+++++++++++++

There are many options available in `CMake.

<https://cmake.org/cmake/help/latest/guide/user-interaction/index.html#guide:User%20Interaction%20Guide>`_

Several of the most common ones are:
Expand All @@ -277,14 +278,37 @@ Here are the most common OCIO-specific CMake options (the default values are sho
- ``-DOCIO_USE_OIIO_FOR_APPS=OFF`` (Set ON to build tools with OpenImageIO rather than OpenEXR)
- ``-DOCIO_BUILD_PYTHON=ON`` (Set to OFF to not build the Python binding)
- ``-DOCIO_BUILD_OPENFX=OFF`` (Set to ON to build the OpenFX plug-ins)
- ``-DOCIO_USE_SSE=ON`` (Set to OFF to turn off SSE CPU performance optimizations)
- ``-DOCIO_USE_SIMD=ON`` (Set to OFF to turn off SIMD CPU performance optimizations, such as SSE and NEON)
- ``-DOCIO_USE_SSE2=ON`` (Set to OFF to turn off SSE2 CPU performance optimizations)
- ``-DOCIO_USE_SSE3=ON`` (Set to OFF to turn off SSE3 CPU performance optimizations)
- ``-DOCIO_USE_SSSE2=ON`` (Set to OFF to turn off SSSE3 CPU performance optimizations)
remia marked this conversation as resolved.
Show resolved Hide resolved
- ``-DOCIO_USE_SSE4=ON`` (Set to OFF to turn off SSE4 CPU performance optimizations)
- ``-DOCIO_USE_SSE42=ON`` (Set to OFF to turn off SSE4.2 CPU performance optimizations)
- ``-DOCIO_USE_AVX=ON`` (Set to OFF to turn off AVX CPU performance optimizations)
- ``-DOCIO_USE_AVX2=ON`` (Set to OFF to turn off AVX2 CPU performance optimizations)
- ``-DOCIO_USE_AVX512=ON`` (Set to OFF to turn off AVX512 CPU performance optimizations)
- ``-DOCIO_USE_F16C=ON`` (Set to OFF to turn off F16C CPU performance optimizations)
- ``-OCIO_USE_SSE2NEON=ON`` (Apple Only; Set to OFF to turn off the SSE2NEON translation performance optimizations on Apple ARM)
- ``-DOCIO_BUILD_TESTS=ON`` (Set to OFF to not build the unit tests)
- ``-DOCIO_BUILD_GPU_TESTS=ON`` (Set to OFF to not build the GPU unit tests)
- ``-DOCIO_USE_HEADLESS=OFF`` (Set to ON to do headless GPU reendering)
- ``-DOCIO_WARNING_AS_ERROR=ON`` (Set to OFF to turn off warnings as errors)
- ``-DOCIO_BUILD_DOCS=OFF`` (Set to ON to build the documentation)
- ``-DOCIO_BUILD_FROZEN_DOCS=OFF`` (Set to ON to update the Python documentation)

Note that OCIO will turn off any specific SIMD CPU performance optimizations if they are not supported
by the build target architecture.

On the MacOS, the default is to build universal binaries
(natively supporting both the Intel and ARM processors). The ``-DCMAKE_OSX_ARCHITECTURES`` option
may be set to just arm64 or x86_64 to override the default value, which is ``arm64;x86_64``.

Copy link
Contributor

@markreidvfx markreidvfx Aug 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubled checked, the order the architectures doesn't cause any issues, but we might want to reword this to show you need quotes around the architectures -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64". It took me like 10mins to realize the semicolon ; in bash or zshell ends a command :p

When doing a universal build, note that the OCIO dependencies must be built as universal libraries
too. If you are running in OCIO_INSTALL_EXT_PACKAGES=MISSING or NONE mode, your build will fail if
any of your installed libraries are not universal. The easiest way to address this is to set
OCIO_INSTALL_EXT_PACKAGES=ALL in order to let OCIO build everything. Alternatively, you may set
remia marked this conversation as resolved.
Show resolved Hide resolved
CMAKE_OSX_ARCHITECTURES to just the platform you are targeting.
remia marked this conversation as resolved.
Show resolved Hide resolved

Several command-line tools (such as ``ocioconvert``) require reading or writing image files.
If ``OCIO_USE_OIIO_FOR_APPS=OFF``, these will be built using OpenEXR rather than OpenImageIO
and therefore you will be limited to using OpenEXR files with these tools rather than the
Expand Down
66 changes: 66 additions & 0 deletions share/cmake/macros/CheckForOpenEXRCompatibility.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# Check for compatibility between OpenEXR and OpenImageIO since OCIO requires OpenEXR 3+.
#

message(STATUS "Checking if the OpenImageIO found is built with OpenEXR 3+...")

find_path (OpenImageIO_INCLUDE_DIR
NAMES
OpenImageIO/imageio.h
HINTS
${OpenImageIO_ROOT}
# Assuming that OpenImageIO was installed normally, go back a few folders down
# to get the equivalent of OpenImageIO_ROOT.
${OpenImageIO_DIR}/../../..
PATH_SUFFIXES
OpenImageIO/include
include
)

if (NOT OpenImageIO_INCLUDE_DIR)
message(STATUS "${ColorWarning}Could not find OpenImageIO header to evaluate the OpenEXR version.")
message(STATUS "Please provide the OpenImageIO_DIR variable.")
message(STATUS "If your OpenImageIO's files are located in different root directory, \
please provide the OpenImageIO_ROOT where the include files are located.${ColorReset}")
endif()

# Try to figure out version number
set (OIIO_VERSION_HEADER "${OpenImageIO_INCLUDE_DIR}/OpenImageIO/oiioversion.h")
if (EXISTS "${OIIO_VERSION_HEADER}")
file (STRINGS "${OIIO_VERSION_HEADER}" TMP REGEX "^#define OIIO_VERSION_MAJOR .*$")
string (REGEX MATCHALL "[0-9]+" OpenImageIO_VERSION_MAJOR ${TMP})
file (STRINGS "${OIIO_VERSION_HEADER}" TMP REGEX "^#define OIIO_VERSION_MINOR .*$")
string (REGEX MATCHALL "[0-9]+" OpenImageIO_VERSION_MINOR ${TMP})
file (STRINGS "${OIIO_VERSION_HEADER}" TMP REGEX "^#define OIIO_VERSION_PATCH .*$")
string (REGEX MATCHALL "[0-9]+" OpenImageIO_VERSION_PATCH ${TMP})
file (STRINGS "${OIIO_VERSION_HEADER}" TMP REGEX "^#define OIIO_VERSION_TWEAK .*$")
if (TMP)
string (REGEX MATCHALL "[0-9]+" OpenImageIO_VERSION_TWEAK ${TMP})
else ()
set (OpenImageIO_VERSION_TWEAK 0)
endif ()
set (OpenImageIO_VERSION "${OpenImageIO_VERSION_MAJOR}.${OpenImageIO_VERSION_MINOR}.${OpenImageIO_VERSION_PATCH}.${OpenImageIO_VERSION_TWEAK}")
endif ()

set (OIIO_IMATH_HEADER "${OpenImageIO_INCLUDE_DIR}/OpenImageIO/Imath.h")
if (EXISTS "${OIIO_IMATH_HEADER}")
file(STRINGS "${OIIO_IMATH_HEADER}" TMP REGEX "^#define OIIO_USING_IMATH .*$")
string(REGEX MATCHALL "[0-9]" OIIO_IMATH_VERSION ${TMP})
if (OIIO_IMATH_VERSION LESS 3)
message(STATUS "Skipping OpenImageIO built against OpenEXR 2, please use version 3 or greater.")
else()
set(is_OpenEXR_VERSION_valid TRUE)
endif()
endif()

# clean up variables
unset(OpenImageIO_INCLUDE_DIR)
unset(OIIO_VERSION_HEADER)
unset(OIIO_VERSION_MAJOR)
unset(OIIO_VERSION_MINOR)
unset(OIIO_VERSION_PATCH)
unset(OIIO_VERSION_TWEAK)
unset(OIIO_IMATH_HEADER)
unset(OIIO_IMATH_VERSION)
38 changes: 0 additions & 38 deletions share/cmake/macros/ocio_check_dependency_version.cmake

This file was deleted.

13 changes: 4 additions & 9 deletions share/cmake/modules/FindExtPackages.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -197,13 +197,10 @@ if((OCIO_BUILD_APPS AND OCIO_USE_OIIO_FOR_APPS) OR OCIO_BUILD_TESTS)
# Supported from OIIO 2.4+. Setting this for lower versions doesn't affect anything.
set(OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH 1)

include(ocio_check_dependency_version)
# Since OpenImageIO will try to find OpenEXR through its OpenImageIOConfig.cmake file,
# let's try to find OpenEXR first and if the version is too old, OCIO will not try to find
# OpenImageIO.
ocio_check_dependency_version( OpenEXR "is_OpenEXR_VERSION_valid"
MIN_VERSION ${OpenEXR_MININUM_VERSION}
CONFIG)
set(is_OpenEXR_VERSION_valid FALSE)
# Check for compatibility between OpenEXR and OpenImageIO.
# Will set is_OpenEXR_VERSION_valid to TRUE if valid.
include(CheckForOpenEXRCompatibility)

# Do not try to find OpenImageIO if the version of OpenEXR is too old.
if (is_OpenEXR_VERSION_valid)
Expand All @@ -227,8 +224,6 @@ if((OCIO_BUILD_APPS AND OCIO_USE_OIIO_FOR_APPS) OR OCIO_BUILD_TESTS)
MIN_VERSION ${OIIO_VERSION}
RECOMMENDED_VERSION ${OIIO_RECOMMENDED_VERSION}
PROMOTE_TARGET OpenImageIO::OpenImageIO)
else()
message(WARNING "Skipping OpenImageIO because the OpenEXR found by OpenImageIO is too old (under ${OpenEXR_MININUM_VERSION})")
endif()
endif()

Expand Down
2 changes: 2 additions & 0 deletions share/cmake/modules/install/InstallOpenEXR.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ if(_OpenEXR_TARGET_CREATE)
IMPORTED_LOCATION ${IlmThread_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "OpenEXR::IlmThreadConfig;OpenEXR::IlmThreadConfig;OpenEXR::Iex;Threads::Threads"
STATIC_LIBRARY_OPTIONS "-no_warning_for_no_symbols"
)
set_target_properties(OpenEXR::IlmThreadConfig PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR};${OpenEXR_INCLUDE_DIR}/OpenEXR"
Expand All @@ -217,6 +218,7 @@ if(_OpenEXR_TARGET_CREATE)
IMPORTED_LOCATION ${OpenEXRCore_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "OpenEXR::IlmThreadConfig;ZLIB::ZLIB;\$<LINK_ONLY:Imath::ImathConfig>"
STATIC_LIBRARY_OPTIONS "-no_warning_for_no_symbols"
)
set_target_properties(OpenEXR::OpenEXRUtil PROPERTIES
IMPORTED_LOCATION ${OpenEXRUtil_LIBRARY}
Expand Down
Loading