summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <aega@med.umich.edu>2011-08-31 12:19:57 -0400
committerAlan Antonuk <aega@med.umich.edu>2011-10-25 16:18:28 -0400
commitf62fea68cd0c9a5b9cb0b75f8cb7285fa418d582 (patch)
treef6fda7b1142b521107c3a40c46d7dc3a1db6440b
parent0583b01ad8a8ac46fdbb178dfdd78c0a7dabd8e3 (diff)
downloadrabbitmq-c-github-ask-f62fea68cd0c9a5b9cb0b75f8cb7285fa418d582.tar.gz
Adding the codegen stuff as an ExternalProject
-rw-r--r--CMakeLists.txt47
-rw-r--r--librabbitmq/CMakeLists.txt12
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)