From 5852222acd9169e57a215c627027d8eb4107a552 Mon Sep 17 00:00:00 2001 From: XiaoGuang Zeng Date: Thu, 3 Mar 2011 15:50:06 +0800 Subject: add cmake build support. librabbitmq and example/amqp_sendstring can be build under linux now. --- CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ examples/CMakeLists.txt | 4 ++++ librabbitmq/CMakeLists.txt | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 examples/CMakeLists.txt create mode 100644 librabbitmq/CMakeLists.txt 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}) -- cgit v1.2.1