189 lines
4.6 KiB
CMake
189 lines
4.6 KiB
CMake
# FindOpenUSD.cmake
|
|
# Finds OpenUSD installation and sets up necessary variables
|
|
#
|
|
# This module defines:
|
|
# OpenUSD_FOUND - System has OpenUSD
|
|
# OpenUSD_INCLUDE_DIRS - OpenUSD include directories
|
|
# OpenUSD_LIBRARIES - Libraries needed to use OpenUSD
|
|
# OpenUSD_LIBRARY_DIR - Directory containing OpenUSD libraries
|
|
# OpenUSD_VERSION - Version of OpenUSD found
|
|
|
|
# Look for OpenUSD root
|
|
find_path(OpenUSD_ROOT_DIR
|
|
NAMES include/pxr/pxr.h lib/usd_usd.lib
|
|
PATHS
|
|
${CMAKE_PREFIX_PATH}
|
|
$ENV{OpenUSD_ROOT}
|
|
DOC "OpenUSD root directory"
|
|
)
|
|
|
|
if(OpenUSD_ROOT_DIR)
|
|
set(OpenUSD_INCLUDE_DIR "${OpenUSD_ROOT_DIR}/include")
|
|
set(OpenUSD_LIBRARY_DIR "${OpenUSD_ROOT_DIR}/lib")
|
|
set(OpenUSD_BIN_DIR "${OpenUSD_ROOT_DIR}/lib")
|
|
endif()
|
|
|
|
# Find Python 3.12 (required by this USD build)
|
|
find_path(Python312_INCLUDE_DIR
|
|
NAMES Python.h
|
|
PATHS
|
|
"$ENV{LOCALAPPDATA}/Programs/Python/Python312/include"
|
|
"C:/Python312/include"
|
|
"C:/Program Files/Python312/include"
|
|
DOC "Python 3.12 include directory"
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
find_path(Python312_LIBRARY_DIR
|
|
NAMES python312.lib
|
|
PATHS
|
|
"$ENV{LOCALAPPDATA}/Programs/Python/Python312/libs"
|
|
"C:/Python312/libs"
|
|
"C:/Program Files/Python312/libs"
|
|
DOC "Python 3.12 library directory"
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
# Core USD libraries needed for the project
|
|
set(OpenUSD_REQUIRED_LIBS
|
|
arch
|
|
tf
|
|
gf
|
|
vt
|
|
work
|
|
plug
|
|
trace
|
|
sdf
|
|
pcp
|
|
usd
|
|
usdGeom
|
|
usdLux
|
|
usdShade
|
|
usdImaging
|
|
usdImagingGL
|
|
hdx
|
|
hd
|
|
hdSt
|
|
hf
|
|
hgi
|
|
hgiGL
|
|
glf
|
|
hio
|
|
ar
|
|
kind
|
|
ndr
|
|
sdr
|
|
python
|
|
cameraUtil
|
|
)
|
|
|
|
# Dependency libraries bundled with USD
|
|
set(OpenUSD_DEP_LIBS
|
|
tbb
|
|
tbbmalloc
|
|
Imath-3_1
|
|
osdCPU
|
|
)
|
|
|
|
# Find USD libraries
|
|
set(OpenUSD_LIBRARIES "")
|
|
foreach(lib ${OpenUSD_REQUIRED_LIBS})
|
|
find_library(OpenUSD_${lib}_LIBRARY
|
|
NAMES usd_${lib}
|
|
PATHS ${OpenUSD_LIBRARY_DIR}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
if(OpenUSD_${lib}_LIBRARY)
|
|
list(APPEND OpenUSD_LIBRARIES ${OpenUSD_${lib}_LIBRARY})
|
|
else()
|
|
message(WARNING "Could not find OpenUSD library: usd_${lib}")
|
|
endif()
|
|
endforeach()
|
|
|
|
# Find dependency libraries
|
|
foreach(lib ${OpenUSD_DEP_LIBS})
|
|
find_library(OpenUSD_dep_${lib}_LIBRARY
|
|
NAMES ${lib}
|
|
PATHS ${OpenUSD_LIBRARY_DIR}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
|
|
if(OpenUSD_dep_${lib}_LIBRARY)
|
|
list(APPEND OpenUSD_LIBRARIES ${OpenUSD_dep_${lib}_LIBRARY})
|
|
endif()
|
|
endforeach()
|
|
|
|
# Find Python library
|
|
if(Python312_LIBRARY_DIR)
|
|
find_library(Python312_LIBRARY
|
|
NAMES python312
|
|
PATHS ${Python312_LIBRARY_DIR}
|
|
NO_DEFAULT_PATH
|
|
)
|
|
if(Python312_LIBRARY)
|
|
list(APPEND OpenUSD_LIBRARIES ${Python312_LIBRARY})
|
|
endif()
|
|
endif()
|
|
|
|
# Try to find version from pxr.h
|
|
if(OpenUSD_INCLUDE_DIR AND EXISTS "${OpenUSD_INCLUDE_DIR}/pxr/pxr.h")
|
|
file(STRINGS "${OpenUSD_INCLUDE_DIR}/pxr/pxr.h" _version_line
|
|
REGEX "^#define PXR_VERSION ")
|
|
if(_version_line)
|
|
string(REGEX REPLACE "^#define PXR_VERSION ([0-9]+).*" "\\1" OpenUSD_VERSION "${_version_line}")
|
|
endif()
|
|
endif()
|
|
|
|
# Handle standard find_package arguments
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(OpenUSD
|
|
REQUIRED_VARS
|
|
OpenUSD_INCLUDE_DIR
|
|
OpenUSD_LIBRARY_DIR
|
|
OpenUSD_LIBRARIES
|
|
VERSION_VAR OpenUSD_VERSION
|
|
)
|
|
|
|
if(OpenUSD_FOUND)
|
|
set(OpenUSD_INCLUDE_DIRS
|
|
${OpenUSD_INCLUDE_DIR}
|
|
)
|
|
|
|
# Add Python include if found
|
|
if(Python312_INCLUDE_DIR)
|
|
list(APPEND OpenUSD_INCLUDE_DIRS ${Python312_INCLUDE_DIR})
|
|
endif()
|
|
|
|
# Create imported target
|
|
if(NOT TARGET OpenUSD::OpenUSD)
|
|
add_library(OpenUSD::OpenUSD INTERFACE IMPORTED)
|
|
set_target_properties(OpenUSD::OpenUSD PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${OpenUSD_INCLUDE_DIRS}"
|
|
INTERFACE_LINK_LIBRARIES "${OpenUSD_LIBRARIES}"
|
|
)
|
|
|
|
# Add required compile definitions for USD
|
|
target_compile_definitions(OpenUSD::OpenUSD INTERFACE
|
|
NOMINMAX
|
|
)
|
|
endif()
|
|
|
|
message(STATUS "Found OpenUSD: ${OpenUSD_INCLUDE_DIR}")
|
|
message(STATUS "OpenUSD Libraries: ${OpenUSD_LIBRARY_DIR}")
|
|
message(STATUS "OpenUSD Binaries: ${OpenUSD_BIN_DIR}")
|
|
if(Python312_INCLUDE_DIR)
|
|
message(STATUS "Python 3.12: ${Python312_INCLUDE_DIR}")
|
|
endif()
|
|
if(OpenUSD_VERSION)
|
|
message(STATUS "OpenUSD Version: ${OpenUSD_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
mark_as_advanced(
|
|
OpenUSD_INCLUDE_DIR
|
|
OpenUSD_LIBRARY_DIR
|
|
Python312_INCLUDE_DIR
|
|
Python312_LIBRARY_DIR
|
|
)
|