blender/build_files/cmake/Modules/FindEmbree.cmake
Campbell Barton 5478798526 Cleanup: use lowercase cmake commands
The `Find*.cmake` modules originally used uppercase commands to match
CMake's own conventions. Since then CMake uses lower-case and even
within our own find modules, using all uppercase wasn't done
consistently. Opt for lowercase everywhere.
2023-08-17 13:15:56 +10:00

137 lines
3.3 KiB
CMake

# SPDX-FileCopyrightText: 2018 Blender Authors
#
# SPDX-License-Identifier: BSD-3-Clause
# - Find Embree library
# Find the native Embree includes and library
# This module defines
# EMBREE_INCLUDE_DIRS, where to find rtcore.h, Set when
# EMBREE_INCLUDE_DIR is found.
# EMBREE_LIBRARIES, libraries to link against to use Embree.
# EMBREE_ROOT_DIR, The base directory to search for Embree.
# This can also be an environment variable.
# EMBREEFOUND, If false, do not try to use Embree.
# If `EMBREE_ROOT_DIR` was defined in the environment, use it.
if(DEFINED EMBREE_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{EMBREE_ROOT_DIR})
set(EMBREE_ROOT_DIR $ENV{EMBREE_ROOT_DIR})
else()
set(EMBREE_ROOT_DIR "")
endif()
set(_embree_SEARCH_DIRS
${EMBREE_ROOT_DIR}
/opt/lib/embree
)
find_path(EMBREE_INCLUDE_DIR
NAMES
embree4/rtcore.h
embree3/rtcore.h
HINTS
${_embree_SEARCH_DIRS}
PATH_SUFFIXES
include
)
if(EXISTS ${EMBREE_INCLUDE_DIR}/embree4/rtcore_config.h)
set(EMBREE_MAJOR_VERSION 4)
else()
set(EMBREE_MAJOR_VERSION 3)
endif()
if(EMBREE_INCLUDE_DIR)
file(READ ${EMBREE_INCLUDE_DIR}/embree${EMBREE_MAJOR_VERSION}/rtcore_config.h _embree_config_header)
if(_embree_config_header MATCHES "#define EMBREE_STATIC_LIB")
set(EMBREE_STATIC_LIB TRUE)
else()
set(EMBREE_STATIC_LIB FALSE)
endif()
if(_embree_config_header MATCHES "#define EMBREE_SYCL_SUPPORT")
set(EMBREE_SYCL_SUPPORT TRUE)
else()
set(EMBREE_SYCL_SUPPORT FALSE)
endif()
unset(_embree_config_header)
endif()
if(EMBREE_STATIC_LIB)
if(NOT (("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64") OR (APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64"))))
set(_embree_SIMD_COMPONENTS
embree_sse42
embree_avx
embree_avx2
)
endif()
if(EMBREE_SYCL_SUPPORT)
set(_embree_GPU_COMPONENTS
embree4_sycl
embree_rthwif
)
endif()
set(_embree_FIND_COMPONENTS
embree${EMBREE_MAJOR_VERSION}
${_embree_SIMD_COMPONENTS}
${_embree_GPU_COMPONENTS}
lexers
math
simd
sys
tasking
)
else()
set(_embree_FIND_COMPONENTS
embree${EMBREE_MAJOR_VERSION}
)
if(EMBREE_SYCL_SUPPORT)
list(APPEND _embree_FIND_COMPONENTS
embree4_sycl
)
endif()
endif()
set(_embree_LIBRARIES)
foreach(COMPONENT ${_embree_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
find_library(EMBREE_${UPPERCOMPONENT}_LIBRARY
NAMES
${COMPONENT}
HINTS
${_embree_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
list(APPEND _embree_LIBRARIES "${EMBREE_${UPPERCOMPONENT}_LIBRARY}")
endforeach()
# handle the QUIETLY and REQUIRED arguments and set EMBREE_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Embree DEFAULT_MSG
_embree_LIBRARIES EMBREE_INCLUDE_DIR)
if(EMBREE_FOUND)
set(EMBREE_LIBRARIES ${_embree_LIBRARIES})
set(EMBREE_INCLUDE_DIRS ${EMBREE_INCLUDE_DIR})
endif()
mark_as_advanced(
EMBREE_INCLUDE_DIR
EMBREE_MAJOR_VERSION
EMBREE_SYCL_SUPPORT
EMBREE_STATIC_LIB
)
foreach(COMPONENT ${_embree_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
mark_as_advanced(EMBREE_${UPPERCOMPONENT}_LIBRARY)
endforeach()
unset(_embree_SEARCH_DIRS)
unset(_embree_FIND_COMPONENTS)
unset(_embree_LIBRARIES)