diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index 56d95da9a7..995810d52b 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -12,6 +12,7 @@ macro(InitializeFreeCADBuildOptions) option(FREECAD_USE_EXTERNAL_ONDSELSOLVER "Use system installed OndselSolver instead of git submodule." OFF) option(FREECAD_USE_FREETYPE "Builds the features using FreeType libs" ON) option(FREECAD_BUILD_DEBIAN "Prepare for a build of a Debian package" OFF) + option(FREECAD_CHECK_PIVY "Check for pivy version using Python at build time" ON) option(BUILD_WITH_CONDA "Set ON if you build FreeCAD with conda" OFF) option(BUILD_DYNAMIC_LINK_PYTHON "If OFF extension-modules do not link against python-libraries" ON) option(INSTALL_TO_SITEPACKAGES "If ON the freecad root namespace (python) is installed into python's site-packages" ON) diff --git a/cMake/FreeCAD_Helpers/SetupCoin3D.cmake b/cMake/FreeCAD_Helpers/SetupCoin3D.cmake index ef159ac749..c0040aa2d6 100644 --- a/cMake/FreeCAD_Helpers/SetupCoin3D.cmake +++ b/cMake/FreeCAD_Helpers/SetupCoin3D.cmake @@ -35,43 +35,45 @@ endmacro(SetupCoin3D) macro(SetupPivy) # -------------------------------- Pivy -------------------------------- - IF (NOT PIVY_VERSION) - message(STATUS "Checking Pivy version by importing it in a Python program...") + IF (FREECAD_CHECK_PIVY) # do not make pivy a host dependency for cross compiling + IF (NOT PIVY_VERSION) + message(STATUS "Checking Pivy version by importing it in a Python program...") + execute_process( + COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.__version__,end='')" + OUTPUT_VARIABLE PIVY_VERSION + RESULT_VARIABLE RETURN_CODE) + if (RETURN_CODE EQUAL 0) + message(STATUS "Found Pivy ${PIVY_VERSION}") + else () + message(ERROR "Failed to import Pivy using ${Python3_EXECUTABLE}") + endif () + ENDIF () + + message(STATUS "Checking Pivy Coin3D version by importing it in a Python program...") execute_process( - COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.__version__,end='')" - OUTPUT_VARIABLE PIVY_VERSION + COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.SoDB.getVersion(),end='')" + OUTPUT_VARIABLE PIVY_COIN_VERSION RESULT_VARIABLE RETURN_CODE) if (RETURN_CODE EQUAL 0) - message(STATUS "Found Pivy ${PIVY_VERSION}") + message(STATUS "Found Pivy Coin3D ${PIVY_COIN_VERSION}") else () - message(ERROR "Failed to import Pivy using ${Python3_EXECUTABLE}") + message(ERROR "Failed to get Pivy Coin3D version using ${Python3_EXECUTABLE}") endif () - ENDIF () - message(STATUS "Checking Pivy Coin3D version by importing it in a Python program...") - execute_process( - COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.SoDB.getVersion(),end='')" - OUTPUT_VARIABLE PIVY_COIN_VERSION - RESULT_VARIABLE RETURN_CODE) - if (RETURN_CODE EQUAL 0) - message(STATUS "Found Pivy Coin3D ${PIVY_COIN_VERSION}") - else () - message(ERROR "Failed to get Pivy Coin3D version using ${Python3_EXECUTABLE}") - endif () + if (${PIVY_COIN_VERSION} MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)") + set(PIVY_COIN_MAJOR_VERSION ${CMAKE_MATCH_1}) + set(PIVY_COIN_MINOR_VERSION ${CMAKE_MATCH_2}) + set(PIVY_COIN_MICRO_VERSION ${CMAKE_MATCH_3}) + set(PIVY_COIN_VERSION "${PIVY_COIN_MAJOR_VERSION}.${PIVY_COIN_MINOR_VERSION}.${PIVY_COIN_MICRO_VERSION}") + else () + message(FATAL_ERROR "Failed to match Pivy Coin3D version string output") + endif () - if (${PIVY_COIN_VERSION} MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)") - set(PIVY_COIN_MAJOR_VERSION ${CMAKE_MATCH_1}) - set(PIVY_COIN_MINOR_VERSION ${CMAKE_MATCH_2}) - set(PIVY_COIN_MICRO_VERSION ${CMAKE_MATCH_3}) - set(PIVY_COIN_VERSION "${PIVY_COIN_MAJOR_VERSION}.${PIVY_COIN_MINOR_VERSION}.${PIVY_COIN_MICRO_VERSION}") - else () - message(FATAL_ERROR "Failed to match Pivy Coin3D version string output") - endif () - - if (NOT ( - (${COIN3D_MAJOR_VERSION} EQUAL ${PIVY_COIN_MAJOR_VERSION}) AND - (${COIN3D_MINOR_VERSION} EQUAL ${PIVY_COIN_MINOR_VERSION}) AND - (${COIN3D_MICRO_VERSION} EQUAL ${PIVY_COIN_MICRO_VERSION}))) - message(FATAL_ERROR "Coin3D version ${COIN3D_VERSION} mismatches Pivy Coin3D ${PIVY_COIN_VERSION}.") - endif () + if (NOT ( + (${COIN3D_MAJOR_VERSION} EQUAL ${PIVY_COIN_MAJOR_VERSION}) AND + (${COIN3D_MINOR_VERSION} EQUAL ${PIVY_COIN_MINOR_VERSION}) AND + (${COIN3D_MICRO_VERSION} EQUAL ${PIVY_COIN_MICRO_VERSION}))) + message(FATAL_ERROR "Coin3D version ${COIN3D_VERSION} mismatches Pivy Coin3D ${PIVY_COIN_VERSION}.") + endif () + endif(FREECAD_CHECK_PIVY) endmacro(SetupPivy)