tibbs / rpms / freecad

Forked from rpms/freecad 5 years ago
Clone

Blame freecad-pycxx.patch

f5ca97c
--- a/cMake/FindPyCXX.cmake
f5ca97c
+++ b/cMake/FindPyCXX.cmake
f5ca97c
@@ -89,11 +89,25 @@ else(PYCXX_SOURCE_DIR)
f5ca97c
     endif(NOT PYCXX_SOURCE_DIR)
f5ca97c
 endif(PYCXX_SOURCE_DIR)
f5ca97c
 
f5ca97c
+# Find PyCXX Version
f5ca97c
+if(PYCXX_INCLUDE_DIR AND PYCXX_SOURCE_DIR)
f5ca97c
+    file(READ ${PYCXX_INCLUDE_DIR}/CXX/Version.hxx PYCXX_VERSION_H)
f5ca97c
+    foreach(item IN ITEMS MAJOR MINOR PATCH)
f5ca97c
+        string(REGEX REPLACE
f5ca97c
+            ".*#define[ \t]+PYCXX_VERSION_${item}[ \t]+([0-9]+).*"
f5ca97c
+            "\\1" PYCXX_VERSION_${item}
f5ca97c
+            "${PYCXX_VERSION_H}"
f5ca97c
+        )
f5ca97c
+    endforeach()
f5ca97c
+    set(PYCXX_VERSION ${PYCXX_VERSION_MAJOR}.${PYCXX_VERSION_MINOR}.${PYCXX_VERSION_PATCH})
f5ca97c
+endif()
f5ca97c
+
f5ca97c
 # see what we've got
f5ca97c
 if(PYCXX_FOUND)
f5ca97c
     MESSAGE(STATUS "PyCXX found:")
f5ca97c
     MESSAGE(STATUS "  Headers:  ${PYCXX_INCLUDE_DIR}")
f5ca97c
     MESSAGE(STATUS "  Sources:  ${PYCXX_SOURCE_DIR}")
f5ca97c
+    MESSAGE(STATUS "  Version:  ${PYCXX_VERSION}")
f5ca97c
 
f5ca97c
     # Build the list of sources for convenience
f5ca97c
     set(PYCXX_SOURCES
f5ca97c
@@ -102,6 +116,11 @@ if(PYCXX_FOUND)
f5ca97c
 	${PYCXX_SOURCE_DIR}/cxxsupport.cxx
f5ca97c
 	${PYCXX_SOURCE_DIR}/IndirectPythonInterface.cxx
f5ca97c
     )
f5ca97c
+    if(${PYCXX_VERSION} VERSION_GREATER_EQUAL 7.0.0)
f5ca97c
+        list(APPEND PYCXX_SOURCES
f5ca97c
+            ${PYCXX_SOURCE_DIR}/cxx_exceptions.cxx)
f5ca97c
+        add_definitions(-DPYCXX_6_2_COMPATIBILITY)
f5ca97c
+    endif()
f5ca97c
 else(PYCXX_FOUND)
f5ca97c
     MESSAGE(STATUS "PyCXX not found")
f5ca97c
 endif(PYCXX_FOUND)