Unity-Technologies/usd-unity-sdk

SWIG build step failing

nickblockFB opened this issue · 2 comments

I cannot get past the SWIG build step.

Windows 10,
MSVC 2019
Swig 3.0.12
USD 22.08
Unity 2022.1.8f1

Built USD using the command line in BUILDING.md

When running:

python3 bin/build.py --usd_version 20.08 --library_path ..\artifacts-usd-22.08 --unity_version 2022.1.8f1

output looks good until:

INFO:root:================================================================================
INFO:root:Running CMake:
cmake -S . -B ./build_usdcs  -DPXR_USD_LOCATION="C:\Users\me\Documents\artifacts-usd-22.08\usd-v20.08-python36\usd-v20.08_no_python" -DPXR_USD_LOCATION_PYTHON_BUILD="C:\Users\me\Documents\artifacts-usd-22.08\usd-v20.08-python36\usd-v20.08" -DUNITY_VERSION=2022.1.8f1  -DBUILD_USDCS=True  -DBUILD_USD_NET=False  -DBUILD_TESTS=False  -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_MODULE_PATH=./cmake/modules -DUSE_CUSTOM_MONO=False -G "Visual Studio 16 2019"


-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.19044.
C:\Users\me\Documents\artifacts-usd-22.08\usd-v20.08-python36\usd-v20.08
-- USD include dir: C:/Users/me/Documents/artifacts/usd-v20.08-python36/usd-v20.08_no_python/include
-- USD library dir: C:/Users/me/Documents/artifacts/usd-v20.08-python36/usd-v20.08_no_python/lib
-- USD bin dir: C:/Users/me/Documents/artifacts/usd-v20.08-python36/usd-v20.08_no_python/bin
-- USD version:
Python exec     
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/me/Documents/usd-unity-sdk/build_usdcs
INFO:root:


INFO:root:Running CMake build:
cmake --build ./build_usdcs --config RelWithDebInfo --target install


Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

  -[ Generating type info from USD python ]-
  Generating Sdf 
  Generating Vt 
  Generating UsdGeom
  Generating UsdLux
  Generating UsdRi
  Generating UsdShade
  Generating UsdSkel
  Generating Kind
  Swig compile C:/Users/me/Documents/usd-unity-sdk/src/Swig/usdCs.i for csharp
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\pxr.i(79): error : Unable to find 'pxr\base\tf\declarePtrs.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\src\UsdCs\UsdCs.vcx
proj]
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\base\tf\tfStringUtils.i(30): error : Unable to find 'pxr\base\tf\stringUtils.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\s 
rc\UsdCs\UsdCs.vcxproj]
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\base\tf\tfToken.i(40): error : Unable to find 'pxr\base\tf\token.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\src\UsdCs\Usd 
Cs.vcxproj]
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\base\tf\tf.i(30): error : Unable to find 'pxr\base\tf\token.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\src\UsdCs\UsdCs.vc 
xproj]
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\base\js\jsValue.i(23): error : Unable to find 'pxr\base\js\value.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\src\UsdCs\Usd 
Cs.vcxproj]
C:\Users\me\Documents\usd-unity-sdk\src\Swig\pxr\base\js\jsTypes.i(30): error : Unable to find 'pxr\base\js\types.h' [C:\Users\me\Documents\usd-unity-sdk\build_usdcs\src\UsdCs\Usd 
Cs.vcxproj]

...and many more errors alike.

i tried calling swig manually with the include path to the USD artifact:

swig -csharp -I<localpath>\artifacts-usd-22.08\usd-v20.08-python36\usd-v20.08\include <localpath>/usd-unity-sdk/src/Swig/usdCs.i

siimlar but different:


<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdLux\lightPortal.i(22) : Error: Unable to find 'pxr\usd\usdLux\lightPortal.h'
<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdLux\light.i(22) : Error: Unable to find 'pxr\usd\usdLux\light.h'
<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdRi\lightFilterAPI.i(22) : Error: Unable to find 'pxr\usd\usdRi\lightFilterAPI.h'
<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdRi\lightPortalAPI.i(22) : Error: Unable to find 'pxr\usd\usdRi\lightPortalAPI.h'
<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdRi\pxrAovLight.i(20) : Error: Unable to find 'pxr\usd\usdRi\pxrAovLight.h'
<localpath>\usd-unity-sdk\src\Swig\pxr\usd\usdRi\pxrBarnLightFilter.i(20) : Error: Unable to find 'pxr\usd\usdRi\pxrBarnLightFilter.h'

these files like "pxr\usd\usdLux\lightPortal.h" dont exist in USD at all.

Any ideas?

Hi @nickblockFB,

USD 22.08 is not currently supported.

That said, CMake should be taking care of passing the USD include directory to Swig:
https://github.com/Unity-Technologies/usd-unity-sdk/blob/dev/src/UsdCs/CMakeLists.txt#L52-L60

You can try adding:
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON

To the CMake arguments in bin/build.py to see how it is invoking SWIG:
https://github.com/Unity-Technologies/usd-unity-sdk/blob/dev/bin/build.py#L128-L143

The errors that you are getting after calling SWIG manually are due to changes to the USD API between USD 20.08 and 22.08 that have not been reflected in the bindings, e.g. UsdLuxLight was replaced with the UsdLuxLightAPI, UsdLuxLightPortal was replaced with UsdLuxPortalLight.

Ah wrong version!!

Thank you very much.