Skip to content

Commit 6738de9

Browse files
committed
Improved handing of external rabbitmq-codegen
- By default look in the CMAKE_SOURCE_DIR/rabbitmq-codegen, then CMAKE_SOURCE_DIR/../rabbitmq-codegen unless RABBITMQ_CODEGEN_DIR is set - If FETCH_CODEGEN_FROM_GIT use the CMake ExternalProject to do it
1 parent c817cb2 commit 6738de9

File tree

1 file changed

+38
-14
lines changed

1 file changed

+38
-14
lines changed

CMakeLists.txt

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,47 @@ if (CHECK_PYTHON_JSON_FAILED)
1919
endif (CHECK_PYTHON_SIMPLEJSON_FAILED)
2020
endif (CHECK_PYTHON_JSON_FAILED)
2121

22-
2322
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
2423
include(TestCInline)
2524

26-
include(ExternalProject)
27-
ExternalProject_Add(
28-
amqp_codegen
29-
GIT_REPOSITORY https://github.com/rabbitmq/rabbitmq-codegen.git
30-
GIT_TAG rabbitmq_v2_5_1
31-
SOURCE_DIR amqp_codegen
32-
CONFIGURE_COMMAND ""
33-
BUILD_COMMAND ""
34-
INSTALL_COMMAND ""
35-
TEST_COMMAND "")
36-
37-
ExternalProject_Get_Property(amqp_codegen SOURCE_DIR)
38-
set(AMQP_CODEGEN_DIR ${SOURCE_DIR})
25+
option(FETCH_CODEGEN_FROM_GIT "Fetch codegen directly from the git repository" OFF)
26+
27+
set(CODEGEN_GIT_TAG rabbitmq_v2_5_1 CACHE STRING "Git tag in rabbitmq-codegen to fetch with FETCH_CODEGEN_FROM_GIT")
28+
if (FETCH_CODEGEN_FROM_GIT)
29+
include(ExternalProject)
30+
ExternalProject_Add(
31+
amqp_codegen
32+
GIT_REPOSITORY https://github.com/rabbitmq/rabbitmq-codegen.git
33+
GIT_TAG ${CODEGEN_GIT_TAG}
34+
SOURCE_DIR amqp_codegen
35+
CONFIGURE_COMMAND ""
36+
BUILD_COMMAND ""
37+
INSTALL_COMMAND ""
38+
TEST_COMMAND "")
39+
40+
ExternalProject_Get_Property(amqp_codegen SOURCE_DIR)
41+
set(AMQP_CODEGEN_DIR ${SOURCE_DIR} CACHE PATH "Path to rabbitmq-codegen" FORCE)
42+
message(STATUS "Using amqp_codegen.py in ${AMQP_CODEGEN_DIR}")
43+
else (FETCH_CODEGEN_FROM_GIT)
44+
find_path(RABBITMQ_CODEGEN_DIR
45+
amqp_codegen.py
46+
PATHS ${CMAKE_SOURCE_DIR}/rabbitmq-codegen
47+
${CMAKE_SOURCE_DIR}/../rabbitmq-codegen
48+
DOC "Path to directory containing amqp_codegen.py (rabbitmq-codegen)"
49+
NO_DEFAULT_PATH
50+
)
51+
52+
if (RABBITMQ_CODEGEN_DIR STREQUAL "RABBITMQ_CODEGEN_DIR-NOTFOUND")
53+
message(SEND_ERROR "Cannot find rabbitmq-codegen, set RABBITMQ_CODEGEN_DIR to a rabbitmq-codegen checkout, or set FETCH_CODEGEN_FROM_GIT to download it from git automatically")
54+
else ()
55+
message(STATUS "Using amqp_codegen.py in ${RABBITMQ_CODEGEN_DIR}")
56+
endif()
57+
58+
set(AMQP_CODEGEN_DIR ${RABBITMQ_CODEGEN_DIR} CACHE PATH "Path to rabbitmq-codegen" FORCE)
59+
endif (FETCH_CODEGEN_FROM_GIT)
60+
61+
mark_as_advanced(AMQP_CODEGEN_DIR)
62+
3963

4064
add_subdirectory(librabbitmq)
4165
add_subdirectory(examples)

0 commit comments

Comments
 (0)