From 8f12e3c2e0232456eff06642e1620a9538811f29 Mon Sep 17 00:00:00 2001 From: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> Date: Sat, 11 May 2019 14:27:50 +0100 Subject: [PATCH] Fixes for Python3 and loading the python module on MacOS Signed-off-by: Nick Avramoussis <4256455+Idclip@users.noreply.github.com> --- openvdb/python/CMakeLists.txt | 9 ++++++++- openvdb/python/pyOpenVDBModule.cc | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/openvdb/python/CMakeLists.txt b/openvdb/python/CMakeLists.txt index c1e7a2b2..b255483a 100644 --- a/openvdb/python/CMakeLists.txt +++ b/openvdb/python/CMakeLists.txt @@ -182,9 +182,16 @@ target_link_libraries(pyopenvdb ) set_target_properties(pyopenvdb PROPERTIES - PREFIX "" + PREFIX "" # no 'lib' prefix ) +if(UNIX) + # must be .so (not .dylib) + set_target_properties(pyopenvdb PROPERTIES + SUFFIX ".so" + ) +endif() + if(OPENVDB_ENABLE_RPATH) # @todo There is probably a better way to do this for imported targets set(RPATHS "") diff --git a/openvdb/python/pyOpenVDBModule.cc b/openvdb/python/pyOpenVDBModule.cc index b41095bb..5f423176 100644 --- a/openvdb/python/pyOpenVDBModule.cc +++ b/openvdb/python/pyOpenVDBModule.cc @@ -320,7 +320,11 @@ struct PointIndexConverter /// @return nullptr if the given Python object is not convertible to the PointIndex. static void* convertible(PyObject* obj) { +#if PY_MAJOR_VERSION >= 3 + if (!PyLong_Check(obj)) return nullptr; // not a Python integer +#else if (!PyInt_Check(obj)) return nullptr; // not a Python integer +#endif return obj; } @@ -336,8 +340,11 @@ struct PointIndexConverter // Extract the PointIndex from the python integer PointIndexT* index = static_cast(storage); - +#if PY_MAJOR_VERSION >= 3 + *index = static_cast(PyLong_AsLong(obj)); +#else *index = static_cast(PyInt_AsLong(obj)); +#endif } /// Register both the PointIndex-to-integer and the integer-to-PointIndex converters.