@@ -29,6 +29,7 @@ set(PYZMQ_LIBSODIUM_URL "" CACHE STRING "full URL to download bundled libsodium"
29
29
set (PYZMQ_LIBSODIUM_CONFIGURE_ARGS "" CACHE STRING "semicolon-separated list of arguments to pass to ./configure for bundled libsodium" )
30
30
set (PYZMQ_LIBSODIUM_MSBUILD_ARGS "" CACHE STRING "semicolon-separated list of arguments to pass to msbuild for bundled libsodium" )
31
31
set (PYZMQ_LIBSODIUM_VS_VERSION "" CACHE STRING "Visual studio solution version for bundled libsodium (default: detect from MSVC_VERSION)" )
32
+ set (PYZMQ_BACKEND "" CACHE STRING "pyzmq backend to build ('cffi' or 'cython'). Default: cffi on PyPy, else Cython." )
32
33
33
34
if (NOT CMAKE_BUILD_TYPE )
34
35
# default to Release
@@ -57,6 +58,7 @@ foreach(_optname
57
58
PYZMQ_LIBSODIUM_CONFIGURE_ARGS
58
59
PYZMQ_LIBSODIUM_MSBUILD_ARGS
59
60
PYZMQ_LIBSODIUM_VS_VERSION
61
+ PYZMQ_BACKEND
60
62
)
61
63
if (DEFINED ENV{${_optname}} )
62
64
if (_optname MATCHES ".*_ARGS" )
@@ -367,8 +369,19 @@ set(EXT_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/_src")
367
369
set (ZMQ_BUILDUTILS "${CMAKE_CURRENT_SOURCE_DIR} /buildutils" )
368
370
file (MAKE_DIRECTORY "${EXT_SRC_DIR} " )
369
371
370
- if (Python_INTERPRETER_ID STREQUAL "PyPy" )
372
+ if (NOT PYZMQ_BACKEND )
373
+ if (Python_INTERPRETER_ID STREQUAL "PyPy" )
374
+ set (PYZMQ_BACKEND "cffi" )
375
+ else ()
376
+ set (PYZMQ_BACKEND "cython" )
377
+ endif ()
378
+ endif ()
379
+
380
+ if (PYZMQ_BACKEND STREQUAL "cffi" )
371
381
message (STATUS "Building CFFI backend" )
382
+ if (NOT Python_INTERPRETER_ID STREQUAL "PyPy" )
383
+ message (WARNING "Building CFFI backend on ${Python_INTERPRETER_ID} , not PyPy. This is not supported and may not work." )
384
+ endif ()
372
385
set (ZMQ_EXT_NAME "_cffi" )
373
386
374
387
set (ZMQ_BACKEND_DEST "zmq/backend/cffi" )
@@ -381,8 +394,11 @@ if(Python_INTERPRETER_ID STREQUAL "PyPy")
381
394
"${ZMQ_BUILDUTILS} /build_cffi.py"
382
395
"${ZMQ_C} "
383
396
)
384
- else ( )
397
+ elseif ( PYZMQ_BACKEND STREQUAL "cython" )
385
398
message (STATUS "Building Cython backend" )
399
+ if (NOT Python_INTERPRETER_ID STREQUAL "Python" )
400
+ message (WARNING "Building Cython backend on ${Python_INTERPRETER_ID} , not CPython. This is not supported and may not work." )
401
+ endif ()
386
402
find_program (CYTHON "cython" )
387
403
388
404
set (ZMQ_BACKEND_DEST "zmq/backend/cython" )
@@ -400,6 +416,8 @@ else()
400
416
--module-name "zmq.backend.cython._zmq"
401
417
${ZMQ_PYX}
402
418
)
419
+ else ()
420
+ message (FATAL_ERROR "Unsupported PYZMQ_BACKEND=${PYZMQ_BACKEND} . Must be 'cffi' or 'cython'." )
403
421
endif ()
404
422
405
423
file (MAKE_DIRECTORY ${ZMQ_BACKEND_DEST} )
0 commit comments