diff options
author | Alan Antonuk <alan.antonuk@gmail.com> | 2013-01-16 02:04:00 -0500 |
---|---|---|
committer | Alan Antonuk <alan.antonuk@gmail.com> | 2013-01-16 02:04:00 -0500 |
commit | d008bb0f322d188399441519aabf746d50ebd3b5 (patch) | |
tree | dbed66e91408ddae7958fb09fa2cba7adc774d0e /librabbitmq/CMakeLists.txt | |
parent | 395834331c4f50445957603bd5158803056c3386 (diff) | |
download | rabbitmq-c-github-ask-d008bb0f322d188399441519aabf746d50ebd3b5.tar.gz |
Build without amqp_framing.py codegen
Changes to support building rabbitmq-c without having run the python
code generator, or do a git submodule init/update.
This is to facilitate creating links to downloadable source archives
from github
Diffstat (limited to 'librabbitmq/CMakeLists.txt')
-rw-r--r-- | librabbitmq/CMakeLists.txt | 96 |
1 files changed, 50 insertions, 46 deletions
diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt index 5b14697..345d772 100644 --- a/librabbitmq/CMakeLists.txt +++ b/librabbitmq/CMakeLists.txt @@ -1,47 +1,49 @@ project(librabbitmq "C") -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -# Stuff dealing with code generation -set(AMQP_CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/amqp_codegen.py") -set(CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/codegen.py") -set(AMQP_SPEC_JSON_PATH "${AMQP_CODEGEN_DIR}/amqp-rabbitmq-0.9.1.json") - -#generate amqp_framing.h/amqp_framing.c - -if (PYTHON_VERSION_MAJOR GREATER 2) - set(CONVERT_CODEGEN ${PYTHON_2TO3_EXECUTABLE} -w ${CODEGEN_PY} > codegen_2to3.out) - set(CONVERT_AMQP_CODEGEN ${PYTHON_2TO3_EXECUTABLE} -w ${AMQP_CODEGEN_PY} > amqp_codegen_2to3.out) -else () - set(CONVERT_CODEGEN "") - set(CONVERT_AMQP_CODEGEN "") -endif () - -add_custom_command( - OUTPUT ${CODEGEN_PY} - COMMAND ${CMAKE_COMMAND} ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/codegen.py ${CODEGEN_PY} - COMMAND ${CONVERT_CODEGEN} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/codegen.py - VERBATIM) - -add_custom_command( - OUTPUT ${AMQP_CODEGEN_PY} - COMMAND ${CMAKE_COMMAND} ARGS -E copy ${AMQP_CODEGEN_DIR}/amqp_codegen.py ${AMQP_CODEGEN_PY} - COMMAND ${CONVERT_AMQP_CODEGEN} - DEPENDS ${AMQP_CODEGEN_DIR}/amqp_codegen.py ${AMQP_CODEGEN_TARGET} - VERBATIM) - -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/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 ${CMAKE_CURRENT_BINARY_DIR}/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) +if (REGENERATE_AMQP_FRAMING) + set(AMQP_CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/amqp_codegen.py") + set(CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/codegen.py") + set(AMQP_SPEC_JSON_PATH "${AMQP_CODEGEN_DIR}/amqp-rabbitmq-0.9.1.json") + set(AMQP_FRAMING_H_PATH ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h) + set(AMQP_FRAMING_C_PATH ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.c) + + if (PYTHON_VERSION_MAJOR GREATER 2) + set(CONVERT_CODEGEN ${PYTHON_2TO3_EXECUTABLE} -w ${CODEGEN_PY} > codegen_2to3.out) + set(CONVERT_AMQP_CODEGEN ${PYTHON_2TO3_EXECUTABLE} -w ${AMQP_CODEGEN_PY} > amqp_codegen_2to3.out) + else () + set(CONVERT_CODEGEN "") + set(CONVERT_AMQP_CODEGEN "") + endif () + + add_custom_command( + OUTPUT ${CODEGEN_PY} + COMMAND ${CMAKE_COMMAND} ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/codegen.py ${CODEGEN_PY} + COMMAND ${CONVERT_CODEGEN} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/codegen.py + VERBATIM) + + add_custom_command( + OUTPUT ${AMQP_CODEGEN_PY} + COMMAND ${CMAKE_COMMAND} ARGS -E copy ${AMQP_CODEGEN_DIR}/amqp_codegen.py ${AMQP_CODEGEN_PY} + COMMAND ${CONVERT_AMQP_CODEGEN} + DEPENDS ${AMQP_CODEGEN_DIR}/amqp_codegen.py ${AMQP_CODEGEN_TARGET} + VERBATIM) + + add_custom_command( + OUTPUT ${AMQP_FRAMING_H_PATH} + COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} header ${AMQP_SPEC_JSON_PATH} ${AMQP_FRAMING_H_PATH} + DEPENDS ${AMQP_SPEC_JSON_PATH} ${CODEGEN_PY} ${AMQP_CODEGEN_PY} + VERBATIM) + + add_custom_command( + OUTPUT ${AMQP_FRAMING_C_PATH} + COMMAND ${PYTHON_EXECUTABLE} ARGS ${CODEGEN_PY} body ${AMQP_SPEC_JSON_PATH} ${AMQP_FRAMING_C_PATH} + DEPENDS ${AMQP_SPEC_JSON_PATH} ${CODEGEN_PY} ${AMQP_CODEGEN_PY} + VERBATIM) +else (REGENERATE_AMQP_FRAMING) + set(AMQP_FRAMING_H_PATH ${CMAKE_CURRENT_SOURCE_DIR}/amqp_framing.h) + set(AMQP_FRAMING_C_PATH ${CMAKE_CURRENT_SOURCE_DIR}/amqp_framing.c) +endif (REGENERATE_AMQP_FRAMING) if(WIN32) set(SOCKET_IMPL "win32") @@ -56,9 +58,11 @@ if(MSVC) endif(MSVC_VERSION LESS 1600) endif(MSVC) +# NOTE: order is important here: if we generate amqp_framing.h/.c it'll be in the +# binary directory, and should shadow whats in the source directory set(LIBRABBITMQ_INCLUDE_DIRS + ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} ${SOCKET_IMPL} ${MSINTTYPES_INCLUDE} ) @@ -72,8 +76,8 @@ set(LIBRABBITMQ_INCLUDE_DIRS add_definitions(-DHAVE_CONFIG_H) set(RABBITMQ_SOURCES - ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h - ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.c + ${AMQP_FRAMING_H_PATH} + ${AMQP_FRAMING_C_PATH} amqp_api.c amqp.h amqp_connection.c amqp_mem.c amqp_private.h amqp_socket.c amqp_table.c amqp_url.c @@ -131,7 +135,7 @@ if (BUILD_STATIC_LIBS) endif () endif (BUILD_STATIC_LIBS) -install(FILES amqp.h ${CMAKE_CURRENT_BINARY_DIR}/amqp_framing.h ${STDINT_H_INSTALL_FILE} +install(FILES amqp.h ${AMQP_FRAMING_H_PATH} ${STDINT_H_INSTALL_FILE} DESTINATION include ) |