# # Copyright 2016 Pixar # # Licensed under the terms set forth in the LICENSE.txt file available at # https://openusd.org/license. # option(PXR_STRICT_BUILD_MODE "Turn on additional warnings. Enforce all warnings as errors." OFF) option(PXR_VALIDATE_GENERATED_CODE "Validate script generated code" OFF) option(PXR_HEADLESS_TEST_MODE "Disallow GUI based tests, useful for running under headless CI systems." OFF) option(PXR_BUILD_TESTS "Build tests" ON) option(PXR_BUILD_EXAMPLES "Build examples" ON) option(PXR_BUILD_TUTORIALS "Build tutorials" ON) option(PXR_BUILD_USD_TOOLS "Build commandline tools" ON) option(PXR_BUILD_IMAGING "Build imaging components" ON) option(PXR_BUILD_EMBREE_PLUGIN "Build embree imaging plugin" OFF) option(PXR_BUILD_OPENIMAGEIO_PLUGIN "Build OpenImageIO plugin" OFF) if(APPLE) option(PXR_BUILD_IMAGEIO_PLUGIN "Build the ImageIO.framework plugin for Apple platforms" ON) endif() option(PXR_BUILD_OPENCOLORIO_PLUGIN "Build OpenColorIO plugin" OFF) option(PXR_BUILD_USD_IMAGING "Build USD imaging components" ON) option(PXR_BUILD_USD_VALIDATION "Build USD validation library and core USD validators" ON) option(PXR_BUILD_EXEC "Build the Exec libraries" ON) option(PXR_BUILD_USDVIEW "Build usdview" ON) option(PXR_BUILD_ALEMBIC_PLUGIN "Build the Alembic plugin for USD" OFF) option(PXR_BUILD_DRACO_PLUGIN "Build the Draco plugin for USD" OFF) option(PXR_BUILD_PRMAN_PLUGIN "Build the PRMan imaging plugin" OFF) option(PXR_ENABLE_MATERIALX_SUPPORT "Enable MaterialX support" OFF) option(PXR_BUILD_DOCUMENTATION "Generate doxygen documentation" OFF) option(PXR_BUILD_PYTHON_DOCUMENTATION "Generate Python documentation" OFF) option(PXR_BUILD_HTML_DOCUMENTATION "Generate HTML documentation if PXR_BUILD_DOCUMENTATION is ON" ON) option(PXR_ENABLE_PYTHON_SUPPORT "Enable Python based components for USD" ON) option(PXR_USE_DEBUG_PYTHON "Build with debug python" OFF) option(PXR_ENABLE_HDF5_SUPPORT "Enable HDF5 backend in the Alembic plugin for USD" OFF) option(PXR_ENABLE_OSL_SUPPORT "Enable OSL (OpenShadingLanguage) based components" OFF) option(PXR_ENABLE_PTEX_SUPPORT "Enable Ptex support" OFF) option(PXR_ENABLE_OPENVDB_SUPPORT "Enable OpenVDB support" OFF) option(PXR_ENABLE_NAMESPACES "Enable C++ namespaces." ON) option(PXR_PREFER_SAFETY_OVER_SPEED "Enable certain checks designed to avoid crashes or out-of-bounds memory reads with malformed input files. These checks may negatively impact performance." ON) if(APPLE) # Cross Compilation detection as defined in CMake docs # Required to be handled here so it can configure options later on # https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-ios-tvos-visionos-or-watchos # Note: All these SDKs may not be supported by OpenUSD, but are all listed here for future proofing set(PXR_APPLE_EMBEDDED OFF) if (CMAKE_SYSTEM_NAME MATCHES "iOS" OR CMAKE_SYSTEM_NAME MATCHES "tvOS" OR CMAKE_SYSTEM_NAME MATCHES "visionOS" OR CMAKE_SYSTEM_NAME MATCHES "watchOS") set(PXR_APPLE_EMBEDDED ON) if(${PXR_BUILD_USD_TOOLS}) MESSAGE(STATUS "Setting PXR_BUILD_USD_TOOLS=OFF because they are not supported on Apple embedded platforms") set(PXR_BUILD_USD_TOOLS OFF) endif() if(${PXR_BUILD_OPENCOLORIO_PLUGIN}) MESSAGE(STATUS "Setting PXR_BUILD_OPENCOLORIO_PLUGIN=OFF because it is not supported on Apple embedded platforms") set(PXR_BUILD_OPENCOLORIO_PLUGIN OFF) endif() if(${PXR_BUILD_OPENIMAGEIO_PLUGIN}) MESSAGE(STATUS "Setting PXR_BUILD_OPENIMAGEIO_PLUGIN=OFF because it is not supported on Apple embedded platforms") set(PXR_BUILD_OPENIMAGEIO_PLUGIN OFF) endif() if(${PXR_ENABLE_OPENVDB_SUPPORT}) MESSAGE(STATUS "Setting PXR_ENABLE_OPENVDB_SUPPORT=OFF because it is not supported on Apple embedded platforms") set(PXR_ENABLE_OPENVDB_SUPPORT OFF) endif() endif () option(PXR_BUILD_APPLE_FRAMEWORK "Builds an Apple Framework." ${PXR_APPLE_EMBEDDED}) set(PXR_APPLE_FRAMEWORK_NAME "OpenUSD" CACHE STRING "Name to provide Apple Framework build") set(PXR_APPLE_IDENTIFIER_DOMAIN "org.openusd" CACHE STRING "Name to provide Apple Framework build") endif() # Determine GFX api # Metal only valid on Apple platforms set(pxr_enable_metal "OFF") if(APPLE) set(pxr_enable_metal "ON") endif() option(PXR_ENABLE_METAL_SUPPORT "Enable Metal based components" "${pxr_enable_metal}") option(PXR_ENABLE_VULKAN_SUPPORT "Enable Vulkan based components" OFF) option(PXR_ENABLE_GL_SUPPORT "Enable OpenGL based components" ON) # Precompiled headers are a win on Windows, not on gcc. set(pxr_enable_pch "OFF") if(MSVC) set(pxr_enable_pch "ON") endif() option(PXR_ENABLE_PRECOMPILED_HEADERS "Enable precompiled headers." "${pxr_enable_pch}") set(PXR_PRECOMPILED_HEADER_NAME "pch.h" CACHE STRING "Default name of precompiled header files" ) set(PXR_WORK_IMPL "" CACHE STRING "Name of CMake package containing custom implementation for libWork." ) set(PXR_INSTALL_LOCATION "" CACHE STRING "Intended final location for plugin resource files." ) set(PXR_PYTHON_INSTALL_DIR "" CACHE STRING "Directory for installing Python bindings (relative to \ CMAKE_INSTALL_PREFIX or absolute). If unspecified, defaults to \ 'lib/pythonX.Y/site-packages' on Linux and MacOS and 'Lib\\site-packages' \ on Windows." ) set(PXR_OVERRIDE_PLUGINPATH_NAME "" CACHE STRING "Name of the environment variable that will be used to get plugin paths." ) set(PXR_TEST_RUN_TEMP_DIR_PREFIX "" CACHE STRING "Prefix for test run temporary directory names. \ Setting this option to \"foo-\" will create directories like \ \"/foo-\"." ) set(PXR_ALL_LIBS "" CACHE INTERNAL "Aggregation of all built libraries." ) set(PXR_STATIC_LIBS "" CACHE INTERNAL "Aggregation of all built explicitly static libraries." ) set(PXR_CORE_LIBS "" CACHE INTERNAL "Aggregation of all built core libraries." ) set(PXR_OBJECT_LIBS "" CACHE INTERNAL "Aggregation of all core libraries built as OBJECT libraries." ) string(CONCAT helpstr "Prefix for built library filenames. If unspecified, defaults " "to 'libusd_' on Linux/macOS and 'usd_' on Windows, or '' for " "monolithic builds." ) set(PXR_LIB_PREFIX "" CACHE STRING "${helpstr}" ) option(BUILD_SHARED_LIBS "Build shared libraries." ON) option(PXR_BUILD_MONOLITHIC "Build a monolithic library." OFF) set(PXR_MONOLITHIC_IMPORT "" CACHE STRING "Path to cmake file that imports a usd_m target" ) set(PXR_EXTRA_PLUGINS "" CACHE INTERNAL "Aggregation of extra plugin directories containing a plugInfo.json.") if (PXR_BUILD_APPLE_FRAMEWORK) MESSAGE(STATUS "Framework build requires monolithic builds.") set(PXR_BUILD_MONOLITHIC ON) set(BUILD_SHARED_LIBS ON) set(PXR_APPLE_FRAMEWORK_RELATIVE_RESOURCES "" CACHE STRING "Relative path to search for resources within an Apple framework.") mark_as_advanced(PXR_APPLE_FRAMEWORK_RELATIVE_RESOURCES) if(PXR_APPLE_EMBEDDED) set(PXR_APPLE_FRAMEWORK_RELATIVE_RESOURCES "Assets") else() set(PXR_APPLE_FRAMEWORK_RELATIVE_RESOURCES "Resources") endif() endif () # Resolve options that depend on one another so that subsequent .cmake scripts # all have the final value for these options. if (${PXR_BUILD_USD_IMAGING} AND NOT ${PXR_BUILD_IMAGING}) message(STATUS "Setting PXR_BUILD_USD_IMAGING=OFF because PXR_BUILD_IMAGING=OFF") set(PXR_BUILD_USD_IMAGING "OFF" CACHE BOOL "" FORCE) endif() if (${PXR_ENABLE_METAL_SUPPORT}) if (NOT APPLE) message(STATUS "Setting PXR_ENABLE_METAL_SUPPORT=OFF because Metal is only supported on macOS") set(PXR_ENABLE_METAL_SUPPORT "OFF" CACHE BOOL "" FORCE) endif() endif() if (${PXR_ENABLE_GL_SUPPORT} OR ${PXR_ENABLE_METAL_SUPPORT} OR ${PXR_ENABLE_VULKAN_SUPPORT}) set(PXR_BUILD_GPU_SUPPORT "ON") else() set(PXR_BUILD_GPU_SUPPORT "OFF") endif() if (${PXR_BUILD_USDVIEW}) if (NOT ${PXR_BUILD_USD_IMAGING}) message(STATUS "Setting PXR_BUILD_USDVIEW=OFF because " "PXR_BUILD_USD_IMAGING=OFF") set(PXR_BUILD_USDVIEW "OFF" CACHE BOOL "" FORCE) elseif (NOT ${PXR_ENABLE_PYTHON_SUPPORT}) message(STATUS "Setting PXR_BUILD_USDVIEW=OFF because " "PXR_ENABLE_PYTHON_SUPPORT=OFF") set(PXR_BUILD_USDVIEW "OFF" CACHE BOOL "" FORCE) elseif (NOT ${PXR_BUILD_GPU_SUPPORT}) message(STATUS "Setting PXR_BUILD_USDVIEW=OFF because " "PXR_BUILD_GPU_SUPPORT=OFF") set(PXR_BUILD_USDVIEW "OFF" CACHE BOOL "" FORCE) endif() endif() if (${PXR_BUILD_EMBREE_PLUGIN}) if (NOT ${PXR_BUILD_IMAGING}) message(STATUS "Setting PXR_BUILD_EMBREE_PLUGIN=OFF because PXR_BUILD_IMAGING=OFF") set(PXR_BUILD_EMBREE_PLUGIN "OFF" CACHE BOOL "" FORCE) elseif (NOT ${PXR_BUILD_GPU_SUPPORT}) message(STATUS "Setting PXR_BUILD_EMBREE_PLUGIN=OFF because " "PXR_BUILD_GPU_SUPPORT=OFF") set(PXR_BUILD_EMBREE_PLUGIN "OFF" CACHE BOOL "" FORCE) endif() endif() if (${PXR_BUILD_PRMAN_PLUGIN}) if (NOT ${PXR_BUILD_IMAGING}) message(STATUS "Setting PXR_BUILD_PRMAN_PLUGIN=OFF because PXR_BUILD_IMAGING=OFF") set(PXR_BUILD_PRMAN_PLUGIN "OFF" CACHE BOOL "" FORCE) endif() endif() # Error out if user is building monolithic library on windows with draco plugin # enabled. This currently results in missing symbols. if (${PXR_BUILD_DRACO_PLUGIN} AND ${PXR_BUILD_MONOLITHIC} AND WIN32) message(FATAL_ERROR "Draco plugin can not be enabled for monolithic builds on Windows") endif() # Make sure PXR_BUILD_DOCUMENTATION and PXR_ENABLE_PYTHON_SUPPORT are enabled # if PXR_BUILD_PYTHON_DOCUMENTATION is enabled if (${PXR_BUILD_PYTHON_DOCUMENTATION}) if (NOT ${PXR_BUILD_DOCUMENTATION}) message(STATUS "Setting PXR_BUILD_PYTHON_DOCUMENTATION=OFF because " "PXR_BUILD_DOCUMENTATION=OFF") set(PXR_BUILD_PYTHON_DOCUMENTATION "OFF" CACHE BOOL "" FORCE) elseif (NOT ${PXR_ENABLE_PYTHON_SUPPORT}) message(STATUS "Setting PXR_BUILD_PYTHON_DOCUMENTATION=OFF because " "PXR_ENABLE_PYTHON_SUPPORT=OFF") set(PXR_BUILD_PYTHON_DOCUMENTATION "OFF" CACHE BOOL "" FORCE) endif() endif() if (EMSCRIPTEN) if (${PXR_BUILD_EXEC}) MESSAGE(STATUS "Setting PXR_BUILD_EXEC=OFF because it is not supported " "when targeting Wasm") set(PXR_BUILD_EXEC "OFF") endif() if (${BUILD_SHARED_LIBS}) MESSAGE(STATUS "Setting BUILD_SHARED_LIBS=OFF because shared libs are not " "supported when targeting wasm") set(BUILD_SHARED_LIBS "OFF") endif() endif() if (PXR_BUILD_APPLE_FRAMEWORK) if(PXR_BUILD_USD_TOOLS) MESSAGE(STATUS "Setting PXR_BUILD_USD_TOOLS=OFF because PXR_BUILD_APPLE_FRAMEWORK is enabled.") endif() set(PXR_BUILD_USD_TOOLS OFF) if(PXR_ENABLE_PYTHON_SUPPORT) MESSAGE(STATUS "Setting PXR_ENABLE_PYTHON_SUPPORT=OFF because PXR_BUILD_APPLE_FRAMEWORK is enabled.") endif () set(PXR_ENABLE_PYTHON_SUPPORT OFF) endif() # Configure the use of compiler caches for faster compilation option(PXR_ENABLE_COMPILER_CACHE "Enable the use of a compiler cache" OFF) set(PXR_COMPILER_CACHE_NAME "ccache" CACHE STRING "The name of the compiler cache program to use" )