@@ -48,7 +48,7 @@ endmacro()
4848
4949configure_file (setup.in.py ${CMAKE_CURRENT_BINARY_DIR} /setup.py)
5050
51- macro (ADD_BINDINGS PYTHON SOURCES )
51+ macro (ADD_BINDINGS PYTHON PYTHON_EXECUTABLE SOURCES )
5252 # Create the build directory
5353 set (SETUP_LOCATION "${CMAKE_CURRENT_BINARY_DIR} /${PYTHON} /$<CONFIGURATION>" )
5454 if (DEFINED CMAKE_BUILD_TYPE )
@@ -66,7 +66,7 @@ macro(ADD_BINDINGS PYTHON SOURCES)
6666 # Target to build the bindings
6767 set (TARGET_NAME eigen-${PYTHON} -bindings)
6868 add_custom_target (${TARGET_NAME} ALL
69- COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON } setup.py build_ext --inplace
69+ COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON_EXECUTABLE } setup.py build_ext --inplace
7070 COMMENT "Generating local Eigen ${PYTHON} bindings"
7171 DEPENDS ${SOURCES} SOURCES ${SOURCES}
7272 )
@@ -84,19 +84,19 @@ macro(ADD_BINDINGS PYTHON SOURCES)
8484 endforeach ()
8585 # Manual target to force regeneration
8686 add_custom_target (force-${TARGET_NAME}
87- COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON } setup.py build_ext --inplace --force
87+ COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON_EXECUTABLE } setup.py build_ext --inplace --force
8888 COMMENT "Generating local Eigen ${PYTHON} bindings (forced)"
8989 )
9090 if (NOT ${DISABLE_TESTS} )
9191 enable_testing ()
9292 add_test (NAME test -${TARGET_NAME}
93- COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON } -m "pytest"
93+ COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON_EXECUTABLE } -m "pytest"
9494 )
9595 endif ()
9696 # Install targets
9797 if (DEFINED PYTHON_DEB_ROOT)
9898 add_custom_target (install -${TARGET_NAME}
99- COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON } setup.py install --root=${PYTHON_DEB_ROOT} --install -layout=deb
99+ COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON_EXECUTABLE } setup.py install --root=${PYTHON_DEB_ROOT} --install -layout=deb
100100 COMMENT "Install Eigen ${PYTHON} bindings (Debian layout)"
101101 )
102102 else ()
@@ -105,16 +105,16 @@ macro(ADD_BINDINGS PYTHON SOURCES)
105105 set (PIP_EXTRA_OPTIONS "--user" )
106106 endif ()
107107 if (DEFINED PIP_INSTALL_PREFIX)
108- _pip_has_install_system(${PYTHON } PIP_HAS_INSTALL_SYSTEM)
109- execute_process (COMMAND ${PYTHON } -c "import sys; print(\" python{}.{}\" .format(sys.version_info.major, sys.version_info.minor));" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
108+ _pip_has_install_system(${PYTHON_EXECUTABLE } PIP_HAS_INSTALL_SYSTEM)
109+ execute_process (COMMAND ${PYTHON_EXECUTABLE } -c "import sys; print(\" python{}.{}\" .format(sys.version_info.major, sys.version_info.minor));" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
110110 set (PIP_TARGET "${PIP_INSTALL_PREFIX} /lib/${PYTHON_VERSION} /site-packages/" )
111111 set (PIP_EXTRA_OPTIONS --target "${PIP_TARGET} " )
112112 if (${PIP_HAS_INSTALL_SYSTEM} )
113113 set (PIP_EXTRA_OPTIONS --system ${PIP_EXTRA_OPTIONS} )
114114 endif ()
115115 endif ()
116116 add_custom_target (install -${TARGET_NAME}
117- COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON } -m pip install . ${PIP_EXTRA_OPTIONS} --upgrade
117+ COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION} " ${PYTHON_EXECUTABLE } -m pip install . ${PIP_EXTRA_OPTIONS} --upgrade
118118 COMMENT "Install Eigen ${PYTHON} bindings"
119119 )
120120 endif ()
@@ -134,16 +134,26 @@ set(BINDINGS_SOURCES
134134 tests/test_eigen.py
135135)
136136
137+ if (NOT DEFINED Python_EXECUTABLE)
138+ set (Python_EXECUTABLE "python" )
139+ endif ()
140+ if (NOT DEFINED Python2_EXECUTABLE)
141+ set (Python2_EXECUTABLE "python2" )
142+ endif ()
143+ if (NOT DEFINED Python3_EXECUTABLE)
144+ set (Python3_EXECUTABLE "python3" )
145+ endif ()
146+
137147if (${PYTHON_BINDING} )
138148 if (${PYTHON_BINDING_BUILD_PYTHON2_AND_PYTHON3} )
139- ADD_BINDINGS(" python2" "${BINDINGS_SOURCES} " )
140- ADD_BINDINGS(" python3" "${BINDINGS_SOURCES} " )
149+ ADD_BINDINGS(python2 " ${Python2_EXECUTABLE} " "${BINDINGS_SOURCES} " )
150+ ADD_BINDINGS(python3 " ${Python3_EXECUTABLE} " "${BINDINGS_SOURCES} " )
141151 elseif (${PYTHON_BINDING_FORCE_PYTHON3} )
142- ADD_BINDINGS(" python3" "${BINDINGS_SOURCES} " )
152+ ADD_BINDINGS(python3 " ${Python3_EXECUTABLE} " "${BINDINGS_SOURCES} " )
143153 elseif (${PYTHON_BINDING_FORCE_PYTHON2} )
144- ADD_BINDINGS(" python2" "${BINDINGS_SOURCES} " )
154+ ADD_BINDINGS(python2 " ${Python2_EXECUTABLE} " "${BINDINGS_SOURCES} " )
145155 else ()
146- ADD_BINDINGS(" python" "${BINDINGS_SOURCES} " )
156+ ADD_BINDINGS(python " ${Python_EXECUTABLE} " "${BINDINGS_SOURCES} " )
147157 endif ()
148158else ()
149159 enable_testing ()
0 commit comments