Blob Blame History Raw
# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)
# Copyright (c) 2018, Mellanox Technologies. All rights reserved.  See COPYING file

execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c
  "from Cython.Compiler.Main import main; import Cython; print(Cython.__version__);"
  OUTPUT_VARIABLE _VERSION
  RESULT_VARIABLE _VERSION_RESULT
  ERROR_QUIET)

if(NOT _VERSION_RESULT)
  # We make our own cython script because it is very hard to figure out which
  # cython exectuable wrapper is appropriately matched to the python
  # interpreter we want to use. Cython must use the matching version of python
  # or things will go wrong.
  string(STRIP "${_VERSION}" CYTHON_VERSION_STRING)
  set(CYTHON_EXECUTABLE "${BUILD_PYTHON}/cython")
  file(WRITE "${CYTHON_EXECUTABLE}" "#!${PYTHON_EXECUTABLE}
from Cython.Compiler.Main import main
main(command_line = 1)")
  execute_process(COMMAND "chmod" "a+x" "${CYTHON_EXECUTABLE}")

  # Dockers with older Cython versions fail to build pyverbs. Until we get to
  # the bottom of this, disable pyverbs for older Cython versions.
  if (CYTHON_VERSION_STRING VERSION_LESS "0.25")
	message("Cython version < 0.25, disabling")
	unset(CYTHON_EXECUTABLE)
  endif()

endif()
unset(_VERSION_RESULT)
unset(_VERSION)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(cython
  REQUIRED_VARS CYTHON_EXECUTABLE CYTHON_VERSION_STRING
  VERSION_VAR CYTHON_VERSION_STRING)
mark_as_advanced(CYTHON_EXECUTABLE)