summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2013-01-16 02:04:00 -0500
committerAlan Antonuk <alan.antonuk@gmail.com>2013-01-16 02:04:00 -0500
commitd008bb0f322d188399441519aabf746d50ebd3b5 (patch)
treedbed66e91408ddae7958fb09fa2cba7adc774d0e /CMakeLists.txt
parent395834331c4f50445957603bd5158803056c3386 (diff)
downloadrabbitmq-c-github-ask-d008bb0f322d188399441519aabf746d50ebd3b5.tar.gz
Build without amqp_framing.py codegen
Changes to support building rabbitmq-c without having run the python code generator, or do a git submodule init/update. This is to facilitate creating links to downloadable source archives from github
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt159
1 files changed, 83 insertions, 76 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 250ed30..9ed5b8e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -95,97 +95,104 @@ set(CMAKE_REQUIRED_LIBRARIES ${SOCKET_LIBRARIES})
check_function_exists(htonll HAVE_HTONLL)
cmake_pop_check_state()
-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)"
+option(REGENERATE_AMQP_FRAMING "Regenerate amqp_framing.h/amqp_framing.c sources (for developer use)" OFF)
+mark_as_advanced(REGENERATE_AMQP_FRAMING)
+
+if (REGENERATE_AMQP_FRAMING)
+ find_package(PythonInterp)
+ if (NOT PYTHONINTERP_FOUND)
+ message(FATAL_ERROR "REGENERATE_AMQP_FRAMING requires Python to be available")
+ endif ()
+
+ #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(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")
+ 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 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")
+ # 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()
- 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 ()
-
+ 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 (PYTHON_VERSION_MAJOR GREATER 2)
-#check for json or simplejson
-execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import json"
- RESULT_VARIABLE CHECK_PYTHON_JSON_FAILED
-)
-if (CHECK_PYTHON_JSON_FAILED)
- execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import simplejson"
- RESULT_VARIABLE CHECK_PYTHON_SIMPLEJSON_FAILED
+ #check for json or simplejson
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import json"
+ RESULT_VARIABLE CHECK_PYTHON_JSON_FAILED
)
- if (CHECK_PYTHON_SIMPLEJSON_FAILED)
- message(FATAL_ERROR "could not find a python that can 'import simplejson")
- endif (CHECK_PYTHON_SIMPLEJSON_FAILED)
-endif (CHECK_PYTHON_JSON_FAILED)
+ if (CHECK_PYTHON_JSON_FAILED)
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import simplejson"
+ RESULT_VARIABLE CHECK_PYTHON_SIMPLEJSON_FAILED
+ )
+ if (CHECK_PYTHON_SIMPLEJSON_FAILED)
+ message(FATAL_ERROR "REGENERATE_AMQP_FRAMING requires a python with json or simplejson modules")
+ endif (CHECK_PYTHON_SIMPLEJSON_FAILED)
+ endif (CHECK_PYTHON_JSON_FAILED)
-find_path(AMQP_CODEGEN_DIR
- amqp_codegen.py
- PATHS ${CMAKE_CURRENT_SOURCE_DIR}/codegen
- ${CMAKE_CURRENT_SOURCE_DIR}/rabbitmq-codegen
- ${CMAKE_CURRENT_SOURCE_DIR}/../rabbitmq-codegen
- DOC "Path to directory containing amqp_codegen.py (rabbitmq-codegen)"
- NO_DEFAULT_PATH
- )
-if (AMQP_CODEGEN_DIR STREQUAL "AMQP_CODEGEN_DIR-NOTFOUND")
- message(SEND_ERROR "Cannot find amqp_codegen.py, did you forget to:\n\ngit submodule init\ngit submodule update\n?\n\n Or set AMQP_CODEGEN_DIR to directory containing amqp_codegen.py")
-else ()
- message(STATUS "Found amqp_codegen.py in ${AMQP_CODEGEN_DIR}")
-endif()
+ find_path(AMQP_CODEGEN_DIR
+ amqp_codegen.py
+ PATHS ${CMAKE_CURRENT_SOURCE_DIR}/codegen
+ ${CMAKE_CURRENT_SOURCE_DIR}/rabbitmq-codegen
+ ${CMAKE_CURRENT_SOURCE_DIR}/../rabbitmq-codegen
+ DOC "Path to directory containing amqp_codegen.py (rabbitmq-codegen)"
+ NO_DEFAULT_PATH
+ )
-mark_as_advanced(AMQP_CODEGEN_DIR)
+ if (AMQP_CODEGEN_DIR STREQUAL "AMQP_CODEGEN_DIR-NOTFOUND")
+ message(SEND_ERROR "REGENERATE_AMQP_FRAMING requires the amqp_codegen.py script. If this is a git clone you can:\n\ngit submodule init\ngit submodule update\n\n Or set AMQP_CODEGEN_DIR to directory containing amqp_codegen.py")
+ else ()
+ message(STATUS "Found amqp_codegen.py in ${AMQP_CODEGEN_DIR}")
+ endif()
+endif (REGENERATE_AMQP_FRAMING)
find_package(POPT)
find_package(XmlTo)