diff options
author | Alan Antonuk <aega@med.umich.edu> | 2011-08-31 12:19:57 -0400 |
---|---|---|
committer | Alan Antonuk <aega@med.umich.edu> | 2011-10-25 16:18:28 -0400 |
commit | f62fea68cd0c9a5b9cb0b75f8cb7285fa418d582 (patch) | |
tree | f6fda7b1142b521107c3a40c46d7dc3a1db6440b | |
parent | 0583b01ad8a8ac46fdbb178dfdd78c0a7dabd8e3 (diff) | |
download | rabbitmq-c-github-ask-f62fea68cd0c9a5b9cb0b75f8cb7285fa418d582.tar.gz |
Adding the codegen stuff as an ExternalProject
-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) |