add option to disable check for pivy at build-time (#19718)

Co-authored-by: João Matos <joao@tritao.eu>
This commit is contained in:
lorenz
2025-02-20 12:32:58 +01:00
committed by GitHub
parent e1512dc009
commit ba60cc61e6
2 changed files with 35 additions and 32 deletions

View File

@@ -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)

View File

@@ -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)