summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaoGuang Zeng <xgzeng@gmail.com>2011-03-03 15:50:06 +0800
committerAlan Antonuk <aega@med.umich.edu>2011-10-25 16:17:19 -0400
commit5852222acd9169e57a215c627027d8eb4107a552 (patch)
tree8a6130cec42bd6f469ff9dad5e819c8d9486c7d8
parent2edff50c851c1dff603b5add904d56436b1dcd4e (diff)
downloadrabbitmq-c-github-ask-5852222acd9169e57a215c627027d8eb4107a552.tar.gz
add cmake build support.
librabbitmq and example/amqp_sendstring can be build under linux now.
-rw-r--r--CMakeLists.txt30
-rw-r--r--examples/CMakeLists.txt4
-rw-r--r--librabbitmq/CMakeLists.txt34
3 files changed, 68 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..cb1646d
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,30 @@
+cmake_minimum_required(VERSION 2.6)
+
+#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("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
+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()
+
+add_subdirectory(librabbitmq)
+add_subdirectory(examples)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..170a3ef
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,4 @@
+include_directories(${librabbitmq_SOURCE_DIR} ${librabbitmq_BINARY_DIR})
+
+add_executable(amqp_sendstring amqp_sendstring.c utils.h utils.c)
+target_link_libraries(amqp_sendstring rabbitmq)
diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt
new file mode 100644
index 0000000..9670280
--- /dev/null
+++ b/librabbitmq/CMakeLists.txt
@@ -0,0 +1,34 @@
+project(librabbitmq "C")
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+file(COPY "${AMQP_CODEGEN_DIR}/amqp_codegen.py" "codegen.py"
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
+)
+file(COPY "${AMQP_CODEGEN_DIR}/amqp_codegen.py"
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
+)
+set(CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/codegen.py")
+
+#generate amqp_framing.h/amqp_framing.c
+add_custom_command(
+ OUTPUT "amqp_framing.h" "amqp_framing.c"
+ COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} header ${AMQP_SPEC_JSON_PATH} "amqp_framing.h"
+ COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} body ${AMQP_SPEC_JSON_PATH} "amqp_framing.c"
+ DEPENDS ${AMQP_SPEC_JSON_PATH}
+ VERBATIM)
+
+#prepare config.h
+file(WRITE "config.h" "#define VERSION \"0.0.1\"")
+
+include_directories("unix")
+
+set(RABBITMQ_SOURCES
+ ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h
+ ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.c
+ amqp_api.c amqp.h
+ amqp_connection.c amqp_mem.c amqp_private.h amqp_socket.c amqp_table.c
+ unix/socket.h unix/socket.c
+)
+
+add_library(rabbitmq ${RABBITMQ_SOURCES})