diff options
| -rw-r--r-- | find-modules/FindPythonModuleGeneration.cmake | 37 | 
1 files changed, 25 insertions, 12 deletions
| diff --git a/find-modules/FindPythonModuleGeneration.cmake b/find-modules/FindPythonModuleGeneration.cmake index 2362c454..8688787f 100644 --- a/find-modules/FindPythonModuleGeneration.cmake +++ b/find-modules/FindPythonModuleGeneration.cmake @@ -174,10 +174,6 @@ if (NOT GBP_SIP_COMMAND)    _report_NOT_FOUND("The sip executable must be available to use ${CMAKE_FIND_PACKAGE_NAME}.")  endif() -if (NOT GPB_PYTHON2_COMMAND) -  _report_NOT_FOUND("The python2 executable is required by clang-python for the ${CMAKE_FIND_PACKAGE_NAME} Module.") -endif() -  if (NOT libclang_LIBRARY)    set(_LIBCLANG_MAX_MAJOR_VERSION 7)    set(_LIBCLANG_MIN_MAJOR_VERSION 5) @@ -209,13 +205,30 @@ else()    message(STATUS "Found ${libclang_LIBRARY}")  endif() -execute_process( -  COMMAND ${GPB_PYTHON2_COMMAND} ${CMAKE_CURRENT_LIST_DIR}/sip_generator.py --self-check ${libclang_LIBRARY} -  RESULT_VARIABLE selfCheckErrors -) +foreach (pyversion "2" "3") +  set(GPB_PYTHON_COMMAND ${GPB_PYTHON${pyversion}_COMMAND}) +  if (NOT GPB_PYTHON_COMMAND) +    continue() +  endif() +  message(STATUS "Testing if ${GPB_PYTHON_COMMAND} can be used to run sip_generator") + +  execute_process( +    COMMAND ${GPB_PYTHON_COMMAND} ${CMAKE_CURRENT_LIST_DIR}/sip_generator.py --self-check ${libclang_LIBRARY} +    RESULT_VARIABLE selfCheckErrors +    ERROR_QUIET +  ) + +  if (selfCheckErrors) +    message(STATUS "sip_generator self-check for ${GPB_PYTHON_COMMAND} failed") +    unset(GPB_PYTHON_COMMAND) +  else() +    message(STATUS "Self-check passed, Using ${GPB_PYTHON_COMMAND} to generate bindings") +    break() +  endif() +endforeach() -if (selfCheckErrors) -  _report_NOT_FOUND("sip_generator failed a self-check for the ${CMAKE_FIND_PACKAGE_NAME} Module.") +if (NOT GPB_PYTHON_COMMAND) +   _report_NOT_FOUND("No usable python version found to run sip_generator for the ${CMAKE_FIND_PACKAGE_NAME} Module.")  endif()  get_filename_component(libclang_file "${libclang_file}" REALPATH) @@ -351,7 +364,7 @@ function(ecm_generate_python_binding          set(comp_flags "$<JOIN:$<TARGET_PROPERTY:${target_value},INTERFACE_COMPILE_OPTIONS>;${stdFlag},;>")          add_custom_command(OUTPUT ${sip_file} -            COMMAND ${GPB_PYTHON2_COMMAND} ${GPB_MODULE_DIR}/sip_generator.py +            COMMAND ${GPB_PYTHON_COMMAND} ${GPB_MODULE_DIR}/sip_generator.py                --flags " ${inc_dirs};${sys_inc_dirs};${comp_defs};${comp_flags}"                --include_filename "${hdr_filename}"                ${libclang_LIBRARY} @@ -399,7 +412,7 @@ headers = sipAPI${modulename_value}      add_custom_command(OUTPUT        "${CMAKE_CURRENT_BINARY_DIR}/pybuild/${pythonnamespace_value}/${modulename_value}/unified${modulename_value}.cpp" -      COMMAND ${GPB_PYTHON2_COMMAND} "${GPB_MODULE_DIR}/run-sip.py" --sip ${GBP_SIP_COMMAND} +      COMMAND ${GPB_PYTHON_COMMAND} "${GPB_MODULE_DIR}/run-sip.py" --sip ${GBP_SIP_COMMAND}         --unify "${CMAKE_CURRENT_BINARY_DIR}/pybuild/${pythonnamespace_value}/${modulename_value}/unified${modulename_value}.cpp"         --module-name "${modulename_value}"         -c "${CMAKE_CURRENT_BINARY_DIR}/pybuild/${pythonnamespace_value}/${modulename_value}" | 
