diff options
author | Alan Antonuk <alan.antonuk@gmail.com> | 2012-09-22 01:08:16 -0400 |
---|---|---|
committer | Alan Antonuk <aega@med.umich.edu> | 2012-10-04 10:40:33 -0400 |
commit | 20289c2ecc871c7016db8b3d7301f5ea94485e48 (patch) | |
tree | 6fa12326946d641bc7ad1ba858390e0e82667634 /CMakeLists.txt | |
parent | 4db29ffd997388c19863c3840f8c69385ad33ea0 (diff) | |
download | rabbitmq-c-github-ask-20289c2ecc871c7016db8b3d7301f5ea94485e48.tar.gz |
CMake build support for building with Python3
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 98f7f70..3471aa4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,64 @@ endif() #find python find_package(PythonInterp REQUIRED) +#Determine Python Version: +if(PYTHON_EXECUTABLE) + execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c + "import sys; sys.stdout.write(';'.join([str(x) for x in sys.version_info[:3]]))" + OUTPUT_VARIABLE _VERSION + RESULT_VARIABLE _PYTHON_VERSION_RESULT + ERROR_QUIET) + if(NOT _PYTHON_VERSION_RESULT) + string(REPLACE ";" "." PYTHON_VERSION_STRING "${_VERSION}") + list(GET _VERSION 0 PYTHON_VERSION_MAJOR) + list(GET _VERSION 1 PYTHON_VERSION_MINOR) + list(GET _VERSION 2 PYTHON_VERSION_PATCH) + if(PYTHON_VERSION_PATCH EQUAL 0) + # it's called "Python 2.7", not "2.7.0" + string(REGEX REPLACE "\\.0$" "" PYTHON_VERSION_STRING "${PYTHON_VERSION_STRING}") + endif() + else() + # sys.version predates sys.version_info, so use that + execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import sys; sys.stdout.write(sys.version)" + OUTPUT_VARIABLE _VERSION + RESULT_VARIABLE _PYTHON_VERSION_RESULT + ERROR_QUIET) + if(NOT _PYTHON_VERSION_RESULT) + string(REGEX REPLACE " .*" "" PYTHON_VERSION_STRING "${_VERSION}") + string(REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}") + string(REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}") + if(PYTHON_VERSION_STRING MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+.*") + string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" PYTHON_VERSION_PATCH "${PYTHON_VERSION_STRING}") + else() + set(PYTHON_VERSION_PATCH "0") + endif() + else() + # sys.version was first documented for Python 1.5, so assume + # this is older. + set(PYTHON_VERSION_STRING "1.4") + set(PYTHON_VERSION_MAJOR "1") + set(PYTHON_VERSION_MAJOR "4") + set(PYTHON_VERSION_MAJOR "0") + endif() + endif() + unset(_PYTHON_VERSION_RESULT) + unset(_VERSION) +endif(PYTHON_EXECUTABLE) + +# If we're running v3.x look for a 2to3 utility +if (PYTHON_VERSION_MAJOR GREATER 2) + get_filename_component(PYTHON_EXE_DIR ${PYTHON_EXECUTABLE} PATH) + find_program(PYTHON_2TO3_EXECUTABLE + NAMES 2to3 + HINTS ${PYTHON_EXE_DIR} + ) + + if ("PYTHON_2TO3_EXECUTABLE-NOTFOUND" STREQUAL PYTHON_2TO3_EXECUTABLE) + message(FATAL_ERROR "Unable to find 2to3 python utility, specify python 2.7 or specify 2to3 utility") + endif () +endif () + + #check for json or simplejson execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import json" RESULT_VARIABLE CHECK_PYTHON_JSON_FAILED |