diff options
-rw-r--r-- | CMakeLists.txt | 47 | ||||
-rw-r--r-- | librabbitmq/CMakeLists.txt | 12 |
2 files changed, 33 insertions, 26 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 39e2a5b..1cac545 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,35 +1,42 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.8) project(rabbitmq-c) -#detect amqp_codegen directory -find_path(AMQP_CODEGEN_DIR "amqp-rabbitmq-0.9.1.json" - PATHS "${CMAKE_CURRENT_SOURCE_DIR}/../rabbitmq-codegen" "${CMAKE_CURRENT_SOURCE_DIR}/../codegen" - NO_DEFAULT_PATH) - -if(NOT AMQP_CODEGEN_DIR) - message(FATAL_ERROR "rabbitmq-codegen not found") -else() - message(STATUS "rabbitmq-codegen found at ${AMQP_CODEGEN_DIR}") - set(AMQP_SPEC_JSON_PATH "${AMQP_CODEGEN_DIR}/amqp-rabbitmq-0.9.1.json") -endif() - #find python find_package(PythonInterp REQUIRED) -#check simplejson +#check for json or simplejson execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import json" RESULT_VARIABLE CHECK_PYTHON_JSON_FAILED ) -execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import simplejson" - RESULT_VARIABLE CHECK_PYTHON_SIMPLEJSON_FAILED -) -if(CHECK_PYTHON_JSON_FAILED AND CHECK_PYTHON_SIMPLEJSON_FAILED) - message(FATAL_ERROR "could not find a python that can 'import simplejson") -endif() + +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 "could not find a python that can 'import simplejson") + endif (CHECK_PYTHON_SIMPLEJSON_FAILED) +endif (CHECK_PYTHON_JSON_FAILED) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}) include(TestCInline) +include(ExternalProject) +ExternalProject_Add( + amqp_codegen + GIT_REPOSITORY https://github.com/rabbitmq/rabbitmq-codegen.git + GIT_TAG rabbitmq_v2_5_1 + SOURCE_DIR amqp_codegen + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "") + +ExternalProject_Get_Property(amqp_codegen SOURCE_DIR) +set(AMQP_CODEGEN_DIR ${SOURCE_DIR}) + add_subdirectory(librabbitmq) add_subdirectory(examples) diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt index 69fa57f..5a5c9d2 100644 --- a/librabbitmq/CMakeLists.txt +++ b/librabbitmq/CMakeLists.txt @@ -3,22 +3,22 @@ project(librabbitmq "C") set(CMAKE_INCLUDE_CURRENT_DIR ON) # Stuff dealing with code generation -configure_file(codegen.py ${CMAKE_CURRENT_BINARY_DIR}/codegen.py) -configure_file(${AMQP_CODEGEN_DIR}/amqp_codegen.py ${CMAKE_CURRENT_BINARY_DIR}/amqp_codegen.py) +configure_file(codegen.py ${AMQP_CODEGEN_DIR}/codegen.py) -set(AMQP_CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/amqp_codegen.py") -set(CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/codegen.py") +set(AMQP_CODEGEN_PY "${AMQP_CODEGEN_DIR}/amqp_codegen.py") +set(CODEGEN_PY "${AMQP_CODEGEN_DIR}/codegen.py") +set(AMQP_SPEC_JSON_PATH "${AMQP_CODEGEN_DIR}/amqp-rabbitmq-0.9.1.json") #generate amqp_framing.h/amqp_framing.c add_custom_command( OUTPUT "amqp_framing.h" - COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} header ${AMQP_SPEC_JSON_PATH} "amqp_framing.h" + COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} header ${AMQP_SPEC_JSON_PATH} ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h DEPENDS ${AMQP_SPEC_JSON_PATH} ${CODEGEN_PY} ${AMQP_CODEGEN_PY} VERBATIM) add_custom_command( OUTPUT "amqp_framing.c" - COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} body ${AMQP_SPEC_JSON_PATH} "amqp_framing.c" + COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} body ${AMQP_SPEC_JSON_PATH} ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.c DEPENDS ${AMQP_SPEC_JSON_PATH} ${CODEGEN_PY} ${AMQP_CODEGEN_PY} VERBATIM) |