123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- # Copyright (c) DreamWorks Animation LLC
- #
- # All rights reserved. This software is distributed under the
- # Mozilla Public License 2.0 ( http://www.mozilla.org/MPL/2.0/ )
- #
- # Redistributions of source code must retain the above copyright
- # and license notice and the following restrictions and disclaimer.
- #
- # * Neither the name of DreamWorks Animation nor the names of
- # its contributors may be used to endorse or promote products derived
- # from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "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 COPYRIGHT
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY 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.
- # IN NO EVENT SHALL THE COPYRIGHT HOLDERS' AND CONTRIBUTORS' AGGREGATE
- # LIABILITY FOR ALL CLAIMS REGARDLESS OF THEIR BASIS EXCEED US$250.00.
- #
- #[=======================================================================[.rst:
- FindOpenVDB
- -----------
- Find OpenVDB include dirs, libraries and settings
- Use this module by invoking find_package with the form::
- find_package(OpenVDB
- [version] [EXACT] # Minimum or EXACT version
- [REQUIRED] # Fail with error if OpenVDB is not found
- [COMPONENTS <libs>...] # OpenVDB libraries by their canonical name
- # e.g. "openvdb" for "libopenvdb"
- )
- IMPORTED Targets
- ^^^^^^^^^^^^^^^^
- ``OpenVDB::openvdb``
- The core openvdb library target.
- Result Variables
- ^^^^^^^^^^^^^^^^
- This will define the following variables:
- ``OpenVDB_FOUND``
- True if the system has the OpenVDB library.
- ``OpenVDB_VERSION``
- The version of the OpenVDB library which was found.
- ``OpenVDB_INCLUDE_DIRS``
- Include directories needed to use OpenVDB.
- ``OpenVDB_LIBRARIES``
- Libraries needed to link to OpenVDB.
- ``OpenVDB_LIBRARY_DIRS``
- OpenVDB library directories.
- ``OpenVDB_DEFINITIONS``
- Definitions to use when compiling code that uses OpenVDB.
- ``OpenVDB_{COMPONENT}_FOUND``
- True if the system has the named OpenVDB component.
- ``OpenVDB_USES_BLOSC``
- True if the OpenVDB Library has been built with blosc support
- ``OpenVDB_USES_LOG4CPLUS``
- True if the OpenVDB Library has been built with log4cplus support
- ``OpenVDB_USES_EXR``
- True if the OpenVDB Library has been built with openexr support
- ``OpenVDB_ABI``
- Set if this module was able to determine the ABI number the located
- OpenVDB Library was built against. Unset otherwise.
- Cache Variables
- ^^^^^^^^^^^^^^^
- The following cache variables may also be set:
- ``OpenVDB_INCLUDE_DIR``
- The directory containing ``openvdb/version.h``.
- ``OpenVDB_{COMPONENT}_LIBRARY``
- Individual component libraries for OpenVDB
- Hints
- ^^^^^
- Instead of explicitly setting the cache variables, the following variables
- may be provided to tell this module where to look.
- ``OPENVDB_ROOT``
- Preferred installation prefix.
- ``OPENVDB_INCLUDEDIR``
- Preferred include directory e.g. <prefix>/include
- ``OPENVDB_LIBRARYDIR``
- Preferred library directory e.g. <prefix>/lib
- ``SYSTEM_LIBRARY_PATHS``
- Paths appended to all include and lib searches.
- #]=======================================================================]
- # If an explicit openvdb module path was specified, that will be used
- if (OPENVDB_FIND_MODULE_PATH)
- set(_module_path_bak ${CMAKE_MODULE_PATH})
- set(CMAKE_MODULE_PATH ${OPENVDB_FIND_MODULE_PATH})
- find_package(
- OpenVDB ${OpenVDB_FIND_VERSION} QUIET
- COMPONENTS
- ${OpenVDB_FIND_COMPONENTS}
- )
- set(CMAKE_MODULE_PATH ${_module_path_bak})
- if (OpenVDB_FOUND)
- return()
- endif ()
- if (NOT OpenVDB_FIND_QUIETLY)
- message(STATUS "Using bundled find module for OpenVDB")
- endif ()
- endif ()
- # ###########################################################################
- cmake_minimum_required(VERSION 3.3)
- # Monitoring <PackageName>_ROOT variables
- if(POLICY CMP0074)
- cmake_policy(SET CMP0074 NEW)
- endif()
- if(OpenVDB_FIND_QUIETLY)
- set (_quiet "QUIET")
- else()
- set (_quiet "")
- endif()
- if(OpenVDB_FIND_REQUIRED)
- set (_required "REQUIRED")
- else()
- set (_required "")
- endif()
- # Include utility functions for version information
- include(${CMAKE_CURRENT_LIST_DIR}/OpenVDBUtils.cmake)
- mark_as_advanced(
- OpenVDB_INCLUDE_DIR
- OpenVDB_LIBRARY
- )
- set(_OPENVDB_COMPONENT_LIST
- openvdb
- )
- if(OpenVDB_FIND_COMPONENTS)
- set(OPENVDB_COMPONENTS_PROVIDED TRUE)
- set(_IGNORED_COMPONENTS "")
- foreach(COMPONENT ${OpenVDB_FIND_COMPONENTS})
- if(NOT ${COMPONENT} IN_LIST _OPENVDB_COMPONENT_LIST)
- list(APPEND _IGNORED_COMPONENTS ${COMPONENT})
- endif()
- endforeach()
- if(_IGNORED_COMPONENTS)
- message(STATUS "Ignoring unknown components of OpenVDB:")
- foreach(COMPONENT ${_IGNORED_COMPONENTS})
- message(STATUS " ${COMPONENT}")
- endforeach()
- list(REMOVE_ITEM OpenVDB_FIND_COMPONENTS ${_IGNORED_COMPONENTS})
- endif()
- else()
- set(OPENVDB_COMPONENTS_PROVIDED FALSE)
- set(OpenVDB_FIND_COMPONENTS ${_OPENVDB_COMPONENT_LIST})
- endif()
- # Append OPENVDB_ROOT or $ENV{OPENVDB_ROOT} if set (prioritize the direct cmake var)
- set(_OPENVDB_ROOT_SEARCH_DIR "")
- # Additionally try and use pkconfig to find OpenVDB
- find_package(PkgConfig ${_quiet} )
- pkg_check_modules(PC_OpenVDB QUIET OpenVDB)
- # ------------------------------------------------------------------------
- # Search for OpenVDB include DIR
- # ------------------------------------------------------------------------
- set(_OPENVDB_INCLUDE_SEARCH_DIRS "")
- list(APPEND _OPENVDB_INCLUDE_SEARCH_DIRS
- ${OPENVDB_INCLUDEDIR}
- ${_OPENVDB_ROOT_SEARCH_DIR}
- ${PC_OpenVDB_INCLUDE_DIRS}
- ${SYSTEM_LIBRARY_PATHS}
- )
- # Look for a standard OpenVDB header file.
- find_path(OpenVDB_INCLUDE_DIR openvdb/version.h
- PATHS ${_OPENVDB_INCLUDE_SEARCH_DIRS}
- PATH_SUFFIXES include
- )
- OPENVDB_VERSION_FROM_HEADER("${OpenVDB_INCLUDE_DIR}/openvdb/version.h"
- VERSION OpenVDB_VERSION
- MAJOR OpenVDB_MAJOR_VERSION
- MINOR OpenVDB_MINOR_VERSION
- PATCH OpenVDB_PATCH_VERSION
- )
- # ------------------------------------------------------------------------
- # Search for OPENVDB lib DIR
- # ------------------------------------------------------------------------
- set(_OPENVDB_LIBRARYDIR_SEARCH_DIRS "")
- # Append to _OPENVDB_LIBRARYDIR_SEARCH_DIRS in priority order
- list(APPEND _OPENVDB_LIBRARYDIR_SEARCH_DIRS
- ${OPENVDB_LIBRARYDIR}
- ${_OPENVDB_ROOT_SEARCH_DIR}
- ${PC_OpenVDB_LIBRARY_DIRS}
- ${SYSTEM_LIBRARY_PATHS}
- )
- # Build suffix directories
- set(OPENVDB_PATH_SUFFIXES
- lib64
- lib
- )
- # Static library setup
- if(UNIX AND OPENVDB_USE_STATIC_LIBS)
- set(_OPENVDB_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
- endif()
- set(OpenVDB_LIB_COMPONENTS "")
- set(OpenVDB_DEBUG_SUFFIX "d" CACHE STRING "Suffix for the debug libraries")
- get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
- foreach(COMPONENT ${OpenVDB_FIND_COMPONENTS})
- set(LIB_NAME ${COMPONENT})
- find_library(OpenVDB_${COMPONENT}_LIBRARY_RELEASE ${LIB_NAME} lib${LIB_NAME}
- PATHS ${_OPENVDB_LIBRARYDIR_SEARCH_DIRS}
- PATH_SUFFIXES ${OPENVDB_PATH_SUFFIXES}
- )
- find_library(OpenVDB_${COMPONENT}_LIBRARY_DEBUG ${LIB_NAME}${OpenVDB_DEBUG_SUFFIX} lib${LIB_NAME}${OpenVDB_DEBUG_SUFFIX}
- PATHS ${_OPENVDB_LIBRARYDIR_SEARCH_DIRS}
- PATH_SUFFIXES ${OPENVDB_PATH_SUFFIXES}
- )
- if (_is_multi)
- list(APPEND OpenVDB_LIB_COMPONENTS ${OpenVDB_${COMPONENT}_LIBRARY_RELEASE})
- if (OpenVDB_${COMPONENT}_LIBRARY_DEBUG)
- list(APPEND OpenVDB_LIB_COMPONENTS ${OpenVDB_${COMPONENT}_LIBRARY_DEBUG})
- endif ()
- list(FIND CMAKE_CONFIGURATION_TYPES "Debug" _has_debug)
-
- if(OpenVDB_${COMPONENT}_LIBRARY_RELEASE AND (NOT MSVC OR _has_debug LESS 0 OR OpenVDB_${COMPONENT}_LIBRARY_DEBUG))
- set(OpenVDB_${COMPONENT}_FOUND TRUE)
- else()
- set(OpenVDB_${COMPONENT}_FOUND FALSE)
- endif()
- set(OpenVDB_${COMPONENT}_LIBRARY ${OpenVDB_${COMPONENT}_LIBRARY_RELEASE})
- else ()
- string(TOUPPER "${CMAKE_BUILD_TYPE}" _BUILD_TYPE)
- set(OpenVDB_${COMPONENT}_LIBRARY ${OpenVDB_${COMPONENT}_LIBRARY_${_BUILD_TYPE}})
- if (NOT OpenVDB_${COMPONENT}_LIBRARY)
- set(OpenVDB_${COMPONENT}_LIBRARY ${OpenVDB_${COMPONENT}_LIBRARY_RELEASE})
- endif ()
- list(APPEND OpenVDB_LIB_COMPONENTS ${OpenVDB_${COMPONENT}_LIBRARY})
- if(OpenVDB_${COMPONENT}_LIBRARY)
- set(OpenVDB_${COMPONENT}_FOUND TRUE)
- else()
- set(OpenVDB_${COMPONENT}_FOUND FALSE)
- endif()
- endif ()
- endforeach()
- if(UNIX AND OPENVDB_USE_STATIC_LIBS)
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${_OPENVDB_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
- unset(_OPENVDB_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
- endif()
- # ------------------------------------------------------------------------
- # Cache and set OPENVDB_FOUND
- # ------------------------------------------------------------------------
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(OpenVDB
- FOUND_VAR OpenVDB_FOUND
- REQUIRED_VARS
- OpenVDB_INCLUDE_DIR
- OpenVDB_LIB_COMPONENTS
- VERSION_VAR OpenVDB_VERSION
- HANDLE_COMPONENTS
- )
- # ------------------------------------------------------------------------
- # Determine ABI number
- # ------------------------------------------------------------------------
- # Set the ABI number the library was built against. Uses vdb_print
- find_program(OPENVDB_PRINT vdb_print PATHS ${OpenVDB_INCLUDE_DIR} )
- OPENVDB_ABI_VERSION_FROM_PRINT(
- "${OPENVDB_PRINT}"
- ABI OpenVDB_ABI
- )
- if(NOT OpenVDB_FIND_QUIETLY)
- if(NOT OpenVDB_ABI)
- message(WARNING "Unable to determine OpenVDB ABI version from OpenVDB "
- "installation. The library major version \"${OpenVDB_MAJOR_VERSION}\" "
- "will be inferred. If this is not correct, use "
- "add_definitions(-DOPENVDB_ABI_VERSION_NUMBER=N)"
- )
- else()
- message(STATUS "OpenVDB ABI Version: ${OpenVDB_ABI}")
- endif()
- endif()
- # ------------------------------------------------------------------------
- # Handle OpenVDB dependencies
- # ------------------------------------------------------------------------
- # Add standard dependencies
- macro(just_fail msg)
- set(OpenVDB_FOUND FALSE)
- if(OpenVDB_FIND_REQUIRED)
- message(FATAL_ERROR ${msg})
- elseif(NOT OpenVDB_FIND_QUIETLY)
- message(WARNING ${msg})
- endif()
- return()
- endmacro()
- find_package(IlmBase QUIET)
- if(NOT IlmBase_FOUND)
- pkg_check_modules(IlmBase QUIET IlmBase)
- endif()
- if (IlmBase_FOUND AND NOT TARGET IlmBase::Half)
- message(STATUS "Falling back to IlmBase found by pkg-config...")
- find_library(IlmHalf_LIBRARY NAMES Half)
- if(IlmHalf_LIBRARY-NOTFOUND OR NOT IlmBase_INCLUDE_DIRS)
- just_fail("IlmBase::Half can not be found!")
- endif()
-
- add_library(IlmBase::Half UNKNOWN IMPORTED)
- set_target_properties(IlmBase::Half PROPERTIES
- IMPORTED_LOCATION "${IlmHalf_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${IlmBase_INCLUDE_DIRS}")
- elseif(NOT IlmBase_FOUND)
- just_fail("IlmBase::Half can not be found!")
- endif()
- find_package(TBB ${_quiet} ${_required} COMPONENTS tbb)
- find_package(ZLIB ${_quiet} ${_required})
- find_package(Boost ${_quiet} ${_required} COMPONENTS iostreams system )
- # Use GetPrerequisites to see which libraries this OpenVDB lib has linked to
- # which we can query for optional deps. This basically runs ldd/otoll/objdump
- # etc to track deps. We could use a vdb_config binary tools here to improve
- # this process
- include(GetPrerequisites)
- set(_EXCLUDE_SYSTEM_PREREQUISITES 1)
- set(_RECURSE_PREREQUISITES 0)
- set(_OPENVDB_PREREQUISITE_LIST)
- if(NOT OPENVDB_USE_STATIC_LIBS)
- get_prerequisites(${OpenVDB_openvdb_LIBRARY}
- _OPENVDB_PREREQUISITE_LIST
- ${_EXCLUDE_SYSTEM_PREREQUISITES}
- ${_RECURSE_PREREQUISITES}
- ""
- "${SYSTEM_LIBRARY_PATHS}"
- )
- endif()
- unset(_EXCLUDE_SYSTEM_PREREQUISITES)
- unset(_RECURSE_PREREQUISITES)
- # As the way we resolve optional libraries relies on library file names, use
- # the configuration options from the main CMakeLists.txt to allow users
- # to manually identify the requirements of OpenVDB builds if they know them.
- set(OpenVDB_USES_BLOSC ${USE_BLOSC})
- set(OpenVDB_USES_LOG4CPLUS ${USE_LOG4CPLUS})
- set(OpenVDB_USES_ILM ${USE_EXR})
- set(OpenVDB_USES_EXR ${USE_EXR})
- # Search for optional dependencies
- foreach(PREREQUISITE ${_OPENVDB_PREREQUISITE_LIST})
- set(_HAS_DEP)
- get_filename_component(PREREQUISITE ${PREREQUISITE} NAME)
- string(FIND ${PREREQUISITE} "blosc" _HAS_DEP)
- if(NOT ${_HAS_DEP} EQUAL -1)
- set(OpenVDB_USES_BLOSC ON)
- endif()
- string(FIND ${PREREQUISITE} "log4cplus" _HAS_DEP)
- if(NOT ${_HAS_DEP} EQUAL -1)
- set(OpenVDB_USES_LOG4CPLUS ON)
- endif()
- string(FIND ${PREREQUISITE} "IlmImf" _HAS_DEP)
- if(NOT ${_HAS_DEP} EQUAL -1)
- set(OpenVDB_USES_ILM ON)
- endif()
- endforeach()
- unset(_OPENVDB_PREREQUISITE_LIST)
- unset(_HAS_DEP)
- if(OpenVDB_USES_BLOSC)
- find_package(Blosc QUIET)
- if(NOT Blosc_FOUND OR NOT TARGET Blosc::blosc)
- message(STATUS "find_package could not find Blosc. Using fallback blosc search...")
- find_path(Blosc_INCLUDE_DIR blosc.h)
- find_library(Blosc_LIBRARY NAMES blosc)
- if (Blosc_INCLUDE_DIR AND Blosc_LIBRARY)
- set(Blosc_FOUND TRUE)
- add_library(Blosc::blosc UNKNOWN IMPORTED)
- set_target_properties(Blosc::blosc PROPERTIES
- IMPORTED_LOCATION "${Blosc_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES ${Blosc_INCLUDE_DIR})
- elseif()
- just_fail("Blosc library can not be found!")
- endif()
- endif()
- endif()
- if(OpenVDB_USES_LOG4CPLUS)
- find_package(Log4cplus ${_quiet} ${_required})
- endif()
- if(OpenVDB_USES_ILM)
- find_package(IlmBase ${_quiet} ${_required})
- endif()
- if(OpenVDB_USES_EXR)
- find_package(OpenEXR ${_quiet} ${_required})
- endif()
- if(UNIX)
- find_package(Threads ${_quiet} ${_required})
- endif()
- # Set deps. Note that the order here is important. If we're building against
- # Houdini 17.5 we must include OpenEXR and IlmBase deps first to ensure the
- # users chosen namespaced headers are correctly prioritized. Otherwise other
- # include paths from shared installs (including houdini) may pull in the wrong
- # headers
- set(_OPENVDB_VISIBLE_DEPENDENCIES
- Boost::iostreams
- Boost::system
- IlmBase::Half
- )
- set(_OPENVDB_DEFINITIONS)
- if(OpenVDB_ABI)
- list(APPEND _OPENVDB_DEFINITIONS "-DOPENVDB_ABI_VERSION_NUMBER=${OpenVDB_ABI}")
- endif()
- if(OpenVDB_USES_EXR)
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES
- IlmBase::IlmThread
- IlmBase::Iex
- IlmBase::Imath
- OpenEXR::IlmImf
- )
- list(APPEND _OPENVDB_DEFINITIONS "-DOPENVDB_TOOLS_RAYTRACER_USE_EXR")
- endif()
- if(OpenVDB_USES_LOG4CPLUS)
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES Log4cplus::log4cplus)
- list(APPEND _OPENVDB_DEFINITIONS "-DOPENVDB_USE_LOG4CPLUS")
- endif()
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES
- TBB::tbb
- )
- if(UNIX)
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES
- Threads::Threads
- )
- endif()
- set(_OPENVDB_HIDDEN_DEPENDENCIES)
- if(OpenVDB_USES_BLOSC)
- if(OPENVDB_USE_STATIC_LIBS)
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES $<LINK_ONLY:Blosc::blosc>)
- else()
- list(APPEND _OPENVDB_HIDDEN_DEPENDENCIES Blosc::blosc)
- endif()
- endif()
- if(OPENVDB_USE_STATIC_LIBS)
- list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES $<LINK_ONLY:ZLIB::ZLIB>)
- else()
- list(APPEND _OPENVDB_HIDDEN_DEPENDENCIES ZLIB::ZLIB)
- endif()
- # ------------------------------------------------------------------------
- # Configure imported target
- # ------------------------------------------------------------------------
- set(OpenVDB_LIBRARIES
- ${OpenVDB_LIB_COMPONENTS}
- )
- set(OpenVDB_INCLUDE_DIRS ${OpenVDB_INCLUDE_DIR})
- set(OpenVDB_DEFINITIONS)
- list(APPEND OpenVDB_DEFINITIONS "${PC_OpenVDB_CFLAGS_OTHER}")
- list(APPEND OpenVDB_DEFINITIONS "${_OPENVDB_DEFINITIONS}")
- list(REMOVE_DUPLICATES OpenVDB_DEFINITIONS)
- set(OpenVDB_LIBRARY_DIRS "")
- foreach(LIB ${OpenVDB_LIB_COMPONENTS})
- get_filename_component(_OPENVDB_LIBDIR ${LIB} DIRECTORY)
- list(APPEND OpenVDB_LIBRARY_DIRS ${_OPENVDB_LIBDIR})
- endforeach()
- list(REMOVE_DUPLICATES OpenVDB_LIBRARY_DIRS)
- foreach(COMPONENT ${OpenVDB_FIND_COMPONENTS})
- if(NOT TARGET OpenVDB::${COMPONENT})
- if (${COMPONENT} STREQUAL openvdb)
- include (${CMAKE_CURRENT_LIST_DIR}/CheckAtomic.cmake)
- set(_LINK_LIBS ${_OPENVDB_VISIBLE_DEPENDENCIES} ${CMAKE_REQUIRED_LIBRARIES})
- else ()
- set(_LINK_LIBS _OPENVDB_VISIBLE_DEPENDENCIES)
- endif ()
- add_library(OpenVDB::${COMPONENT} UNKNOWN IMPORTED)
- set_target_properties(OpenVDB::${COMPONENT} PROPERTIES
- INTERFACE_COMPILE_OPTIONS "${OpenVDB_DEFINITIONS}"
- INTERFACE_INCLUDE_DIRECTORIES "${OpenVDB_INCLUDE_DIR}"
- IMPORTED_LINK_DEPENDENT_LIBRARIES "${_OPENVDB_HIDDEN_DEPENDENCIES}" # non visible deps
- INTERFACE_LINK_LIBRARIES "${_LINK_LIBS}" # visible deps (headers)
- INTERFACE_COMPILE_FEATURES cxx_std_11
- IMPORTED_LOCATION "${OpenVDB_${COMPONENT}_LIBRARY}"
- )
- if (_is_multi)
- set_target_properties(OpenVDB::${COMPONENT} PROPERTIES
- IMPORTED_LOCATION_RELEASE "${OpenVDB_${COMPONENT}_LIBRARY_RELEASE}"
- )
- if (MSVC OR OpenVDB_${COMPONENT}_LIBRARY_DEBUG)
- set_target_properties(OpenVDB::${COMPONENT} PROPERTIES
- IMPORTED_LOCATION_DEBUG "${OpenVDB_${COMPONENT}_LIBRARY_DEBUG}"
- )
- endif ()
- endif ()
- if (OPENVDB_USE_STATIC_LIBS)
- set_target_properties(OpenVDB::${COMPONENT} PROPERTIES
- INTERFACE_COMPILE_DEFINITIONS "OPENVDB_STATICLIB;OPENVDB_OPENEXR_STATICLIB"
- )
- endif()
- endif()
- endforeach()
- if(OpenVDB_FOUND AND NOT OpenVDB_FIND_QUIETLY)
- message(STATUS "OpenVDB libraries: ${OpenVDB_LIBRARIES}")
- endif()
- unset(_OPENVDB_DEFINITIONS)
- unset(_OPENVDB_VISIBLE_DEPENDENCIES)
- unset(_OPENVDB_HIDDEN_DEPENDENCIES)
|