set(PXR_PREFIX pxr/usd)
set(PXR_PACKAGE usdGeom)

pxr_library(usdGeom
    LIBRARIES
        js
        tf
        plug
        vt
        sdf
        tracelite
        usd
        work
        ${Boost_PYTHON_LIBRARY}

    INCLUDE_DIRS
        ${Boost_INCLUDE_DIRS}

    PUBLIC_CLASSES
        debugCodes
        tokens
        bboxCache
        constraintTarget
        primvar
        xformCache
        basisCurves
        boundable
        boundableComputeExtent
        camera
        capsule
        cone
        cube
        curves
        cylinder
        collectionAPI
        faceSetAPI
        imageable
        gprim
        mesh
        metrics
        modelAPI
        nurbsCurves
        nurbsPatch
        pointBased
        pointInstancer
        points
        scope
        sphere
        xform
        xformable
        xformOp
        xformCommonAPI
        
    PUBLIC_HEADERS
        api.h

    CPPFILES
        moduleDeps.cpp

    PYMODULE_CPPFILES
        module.cpp
        wrapBBoxCache.cpp
        wrapBasisCurves.cpp
        wrapBoundable.cpp
        wrapCamera.cpp
        wrapConstraintTarget.cpp
        wrapCapsule.cpp
        wrapCollectionAPI.cpp
        wrapCone.cpp
        wrapCube.cpp
        wrapCurves.cpp
        wrapCylinder.cpp
        wrapFaceSetAPI.cpp
        wrapGprim.cpp
        wrapImageable.cpp
        wrapMesh.cpp
        wrapMetrics.cpp
        wrapModelAPI.cpp
        wrapNurbsCurves.cpp
        wrapNurbsPatch.cpp
        wrapPointBased.cpp
        wrapPointInstancer.cpp
        wrapPoints.cpp
        wrapPrimvar.cpp
        wrapScope.cpp
        wrapSphere.cpp
        wrapTokens.cpp
        wrapXform.cpp
        wrapXformCache.cpp
        wrapXformable.cpp
        wrapXformOp.cpp
        wrapXformCommonAPI.cpp

    PYTHON_FILES
        __init__.py

    RESOURCE_FILES
        plugInfo.json
        generatedSchema.usda
)

pxr_test_scripts(
    testenv/testUsdGeomBasisCurves.py
    testenv/testUsdGeomBBoxCache.py
    testenv/testUsdGeomCamera.py
    testenv/testUsdGeomCollectionAPI.py
    testenv/testUsdGeomConstraintTarget.py
    testenv/testUsdGeomConsts.py
    testenv/test_UsdGeomCurves.py
    testenv/testUsdGeomFaceSetAPI.py
    testenv/testUsdGeomNoPlugLoad.py
    testenv/testUsdGeomPointInstancer.py
    testenv/testUsdGeomPrimvar.py
    testenv/testUsdGeomPurposeVisibility.py
    testenv/testUsdGeomSchemata.py
    testenv/testUsdGeomXformable.py
    testenv/testUsdGeomXformCommonAPI.py
)

pxr_build_test(testUsdGeomXformCache
    LIBRARIES
        usd
        usdGeom
    CPPFILES
        testenv/testUsdGeomXformCache.cpp
)


pxr_build_test(testUsdGeomCreateAttribute
    LIBRARIES
        usd
        usdGeom
    CPPFILES
        testenv/testUsdGeomCreateAttribute.cpp
)

pxr_build_test(testUsdGeomIsA
    LIBRARIES
        usd
        usdGeom
    CPPFILES
        testenv/testUsdGeomIsA.cpp
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomBasisCurves
    DEST testUsdGeomBasisCurves
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomBBoxCache
    DEST testUsdGeomBBoxCache
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomCollectionAPI
    DEST testUsdGeomCollectionAPI
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomConsts
    DEST testUsdGeomConsts
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomFaceSetAPI
    DEST testUsdGeomFaceSetAPI
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomPointInstancer
    DEST testUsdGeomPointInstancer
)

pxr_install_test_dir(
    SRC testenv/testUsdGeomBBoxCache
    DEST testUsdGeomBBoxCache
)

pxr_register_test(testUsdGeomBasisCurves
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomBasisCurves"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomBBoxCache
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomBBoxCache"
    EXPECTED_RETURN_CODE 0
    ENV 
        TF_DEBUG=USDGEOM_BBOX
        USD_ASSIGN_MASTERS_DETERMINISTICALLY=1
)

pxr_register_test(testUsdGeomCamera
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomCamera"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomCollectionAPI
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomCollectionAPI"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomConstraintTarget
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomConstraintTarget"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomConsts
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomConsts"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomCreateAttribute
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomCreateAttribute"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomCurves
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/test_UsdGeomCurves"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomFaceSetAPI
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomFaceSetAPI"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomIsA
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomIsA"
    EXPECTED_RETURN_CODE 0
)

# This tests functionality when usdGeom has not been loaded.  That isn't
# possible with a monolithic library.
if(NOT PXR_BUILD_MONOLITHIC)
pxr_register_test(testUsdGeomNoPlugLoad
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomNoPlugLoad"
    EXPECTED_RETURN_CODE 0
)
endif()

pxr_register_test(testUsdGeomPrimvar
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomPrimvar"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomPointInstancer
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomPointInstancer"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomPurposeVisibility
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomPurposeVisibility"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomSchemata
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomSchemata"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomXformable
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomXformable"
    EXPECTED_RETURN_CODE 0
)

pxr_register_test(testUsdGeomXformCache
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomXformCache"
    EXPECTED_RETURN_CODE 0 
)

pxr_register_test(testUsdGeomXformCommonAPI
    PYTHON
    COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdGeomXformCommonAPI"
    EXPECTED_RETURN_CODE 0
)
