Files
IfcOpenShell/cmake/FindUSD.cmake
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

87 lines
2.5 KiB
CMake
Raw Permalink Normal View History

2025-11-19 19:30:54 +05:00
#
# Input variables:
# - `USD_INCLUDE_DIR`
# - `USD_LIBRARY_DIR`
2025-12-05 20:16:33 +05:00
# - `TBB_INCLUDE_DIR`
# - `TBB_LIBRARY_DIR`
2025-11-19 19:30:54 +05:00
# Input variables could also be provided as environment variables.
2025-12-08 12:15:46 +05:00
# If `USD_INCLUDE_DIR` and `USD_LIBRARY_DIR` are not provided,
# try to find USD by locating its config file.
2025-11-19 19:30:54 +05:00
#
2025-12-05 20:16:33 +05:00
# Output targets:
2025-12-08 12:15:46 +05:00
# - `pxr::USD`
2025-11-19 19:30:54 +05:00
UNIFY_ENVVARS_AND_CACHE(USD_INCLUDE_DIR)
UNIFY_ENVVARS_AND_CACHE(USD_LIBRARY_DIR)
2025-12-05 20:16:33 +05:00
UNIFY_ENVVARS_AND_CACHE(TBB_INCLUDE_DIR)
UNIFY_ENVVARS_AND_CACHE(TBB_LIBRARY_DIR)
2025-11-19 19:30:54 +05:00
2025-12-08 12:15:46 +05:00
if(NOT USD_LIBRARY_DIR AND NOT USD_INCLUDE_DIR)
find_package(pxr CONFIG)
if(pxr_FOUND)
add_library(pxr::USD INTERFACE IMPORTED)
target_link_libraries(pxr::USD INTERFACE ${PXR_LIBRARIES})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(USD REQUIRED_VARS pxr_DIR)
return()
endif()
endif()
2025-12-05 20:16:33 +05:00
if(NOT USD_INCLUDE_DIR)
2025-12-20 13:27:35 +05:00
find_path(USD_INCLUDE_DIR pxr.h PATHS /usr/include/pxr /usr/local/include/pxr REQUIRED)
2025-11-19 19:30:54 +05:00
if(USD_INCLUDE_DIR)
message(STATUS "Found USD include files in: ${USD_INCLUDE_DIR}")
else()
message(FATAL_ERROR "Unable to find USD include directory, specify USD_INCLUDE_DIR manually.")
endif()
else()
set(USD_INCLUDE_DIR ${USD_INCLUDE_DIR} CACHE FILEPATH "USD header files")
message(STATUS "Looking for USD include files in: ${USD_INCLUDE_DIR}")
endif()
set(USD_LIBRARIES
2025-12-20 13:27:35 +05:00
usd_usd
usd_usdGeom
usd_usdShade
usd_usdLux
usd_vt
usd_sdf
usd_tf
usd_gf
usd_kind
usd_pcp
usd_arch
usd_ar
usd_plug
usd_js
usd_sdr
usd_work
usd_trace
usd_ndr
usd_ts
)
2025-11-19 19:30:54 +05:00
2025-12-20 13:27:35 +05:00
find_library(USD_LIBRARY NAMES ${USD_LIBRARIES} PATHS ${USD_LIBRARY_DIR})
2025-11-19 19:30:54 +05:00
if(USD_LIBRARY)
message(STATUS "USD libraries ${USD_LIBRARIES} found in: ${USD_LIBRARY_DIR}")
link_directories(${USD_LIBRARY_DIR})
else()
message(FATAL_ERROR "Unable to find USD libraries in: ${USD_LIBRARY_DIR}")
endif()
2025-12-08 12:15:46 +05:00
add_library(pxr::USD INTERFACE IMPORTED)
2025-12-20 13:27:35 +05:00
target_link_directories(pxr::USD INTERFACE ${USD_LIBRARY_DIR} ${TBB_LIBRARY_DIR})
target_include_directories(pxr::USD INTERFACE ${USD_INCLUDE_DIR} ${TBB_INCLUDE_DIR})
2025-12-05 20:16:33 +05:00
# We don't link TBB libraries - on Windows they're provided using `pragma(lib)`.
# On Unix there's no `pragma(lib)`, so in theory it will break.
2025-12-20 13:27:35 +05:00
target_link_libraries(pxr::USD INTERFACE ${USD_LIBRARIES})
2025-12-05 20:16:33 +05:00
if(MSVC)
2025-12-20 13:27:35 +05:00
target_link_libraries(pxr::USD INTERFACE debug DbgHelp.lib)
2025-12-05 20:16:33 +05:00
endif()
2025-12-20 13:27:35 +05:00
target_compile_definitions(pxr::USD INTERFACE PXR_STATIC WITH_USD)
2025-12-05 20:16:33 +05:00
2025-11-19 19:30:54 +05:00
set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_USD)