summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt98
1 files changed, 60 insertions, 38 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b4f95e2..194c25a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,20 @@
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 2.6)
project(rabbitmq-c "C")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
+set(VERSION "0.2")
+
+if (MSVC)
+ set(CMAKE_C_FLAGS "/W4 /nologo ${CMAKE_C_FLAGS}")
+else ()
+ set(CMAKE_C_FLAGS "-Wall -Wextra -pedantic -Wstrict-prototypes -Wcast-align -Wno-unused-function -fno-common -fvisibility=hidden ${CMAKE_C_FLAGS}")
+endif ()
+
+if (NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
+endif()
+
#find python
find_package(PythonInterp REQUIRED)
@@ -23,58 +35,68 @@ endif (CHECK_PYTHON_JSON_FAILED)
include(TestCInline)
-option(FETCH_CODEGEN_FROM_GIT "Fetch codegen directly from the git repository" OFF)
-
-set(CODEGEN_GIT_TAG rabbitmq_v2_5_1 CACHE STRING "Git tag in rabbitmq-codegen to fetch with FETCH_CODEGEN_FROM_GIT")
-if (FETCH_CODEGEN_FROM_GIT)
- include(ExternalProject)
- ExternalProject_Add(
- amqp_codegen
- GIT_REPOSITORY https://github.com/rabbitmq/rabbitmq-codegen.git
- GIT_TAG ${CODEGEN_GIT_TAG}
- CONFIGURE_COMMAND ""
- UPDATE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- TEST_COMMAND "")
-
- ExternalProject_Get_Property(amqp_codegen SOURCE_DIR)
- set(AMQP_CODEGEN_DIR ${SOURCE_DIR} CACHE PATH "Path to rabbitmq-codegen" FORCE)
- SET(AMQP_CODEGEN_TARGET amqp_codegen)
- message(STATUS "Using amqp_codegen.py in ${AMQP_CODEGEN_DIR}")
-else (FETCH_CODEGEN_FROM_GIT)
- find_path(RABBITMQ_CODEGEN_DIR
- amqp_codegen.py
- PATHS ${CMAKE_SOURCE_DIR}/rabbitmq-codegen
- ${CMAKE_SOURCE_DIR}/../rabbitmq-codegen
- ${CMAKE_SOURCE_DIR}/codegen
+find_path(RABBITMQ_CODEGEN_DIR
+ amqp_codegen.py
+ PATHS ${CMAKE_SOURCE_DIR}/codegen
+ ${CMAKE_SOURCE_DIR}/rabbitmq-codegen
+ ${CMAKE_SOURCE_DIR}/../rabbitmq-codegen
DOC "Path to directory containing amqp_codegen.py (rabbitmq-codegen)"
NO_DEFAULT_PATH
)
- if (RABBITMQ_CODEGEN_DIR STREQUAL "RABBITMQ_CODEGEN_DIR-NOTFOUND")
- 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")
- else ()
- message(STATUS "Using amqp_codegen.py in ${RABBITMQ_CODEGEN_DIR}")
- endif()
-
- set(AMQP_CODEGEN_DIR ${RABBITMQ_CODEGEN_DIR} CACHE PATH "Path to rabbitmq-codegen" FORCE)
-endif (FETCH_CODEGEN_FROM_GIT)
+if (RABBITMQ_CODEGEN_DIR STREQUAL "RABBITMQ_CODEGEN_DIR-NOTFOUND")
+ message(SEND_ERROR "Cannot find amqp_codegen.py, did you forget to:\n\ngit submodule init\ngit submodule update\n?")
+else ()
+ message(STATUS "Using amqp_codegen.py in ${RABBITMQ_CODEGEN_DIR}")
+endif()
+set(AMQP_CODEGEN_DIR ${RABBITMQ_CODEGEN_DIR} CACHE PATH "Path to rabbitmq-codegen" FORCE)
mark_as_advanced(AMQP_CODEGEN_DIR)
find_package(POPT)
+find_package(XmlTo)
+
+if (POPT_FOUND AND XmlTo_FOUND)
+ set(DO_DOCS ON)
+endif()
option(BUILD_SHARED_LIBS "Build rabbitmq-c as a shared library" ON)
+option(BUILD_EXAMPLES "Build Examples" ON)
+option(BUILD_TOOLS "Build Tools (requires POPT Library)" ${POPT_FOUND})
+option(BUILD_TOOLS_DOCS "Build man pages for Tools (requires xmlto)" ${DO_DOCS})
+option(BUILD_TESTS "Build tests (run tests with make test)" ON)
if (WIN32 AND NOT BUILD_SHARED_LIBS)
message(FATAL_ERROR "The rabbitmq-c library cannot be built as a static library on Win32. Set BUILD_SHARED_LIBS=ON to get around this.")
endif()
add_subdirectory(librabbitmq)
-add_subdirectory(examples)
-if (POPT_FOUND)
- add_subdirectory(tools)
-endif (POPT_FOUND)
+if (BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif ()
+if (BUILD_TOOLS)
+ if (POPT_FOUND)
+ add_subdirectory(tools)
+ else ()
+ message(WARNING "POpt library was not found. Tools will not be built")
+ endif ()
+endif ()
+
+if (BUILD_TESTS)
+ enable_testing()
+ add_subdirectory(tests)
+endif (BUILD_TESTS)
+
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
+set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
+set(includedir ${CMAKE_INSTALL_PREFIX}/include)
+
+configure_file(librabbitmq.pc.in ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc @ONLY)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig
+ )