diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 98 |
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 + ) |