diff options
author | Andrew Stitcher <astitcher@apache.org> | 2011-11-03 14:32:01 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2011-11-03 14:32:01 +0000 |
commit | d057421fbd5695e6ed133c1d271025dc57ab43f5 (patch) | |
tree | c8d30f06a378c648ee99d193cdfc05e1e3c69434 /cpp/src | |
parent | 596792273ee7d5a694000c291c2d605f976860dd (diff) | |
download | qpid-python-d057421fbd5695e6ed133c1d271025dc57ab43f5.tar.gz |
QPID-3464: Build Improvements (CMake) [from Jan-Marek Glogowski]
- Improved CMake build significantly bringing it closer in parity to
autotools build
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1197146 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/CMakeLists.txt | 122 | ||||
-rw-r--r-- | cpp/src/cluster.cmake | 11 | ||||
-rw-r--r-- | cpp/src/rdma.cmake | 2 | ||||
-rw-r--r-- | cpp/src/ssl.cmake | 25 | ||||
-rw-r--r-- | cpp/src/versions.cmake | 38 |
5 files changed, 136 insertions, 62 deletions
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index 02db779e1b..2736500b45 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -17,6 +17,9 @@ # under the License. # +# library versions +include (versions.cmake) + # Option to require building optional plugins foreach (r ${REQUIRE}) set(${r}_force ON) @@ -256,7 +259,6 @@ if (ENABLE_VALGRIND AND NOT VALGRIND) endif (ENABLE_VALGRIND AND NOT VALGRIND) if (CMAKE_COMPILER_IS_GNUCXX) - set (COMPILER_FLAGS "") # Warnings: Enable as many as possible, keep the code clean. Please # do not disable warnings or remove -Werror without discussing on # qpid-dev list. @@ -465,7 +467,6 @@ IF (NOT HAVE_UUID AND NOT HAVE_UUID_H) message(FATAL_ERROR "Uuid library and/or header file not found") ENDIF (NOT HAVE_UUID AND NOT HAVE_UUID_H) - # See if Cyrus SASL is desired and available CHECK_LIBRARY_EXISTS (sasl2 sasl_checkpass "" HAVE_SASL) CHECK_INCLUDE_FILES (sasl/sasl.h HAVE_SASL_H) @@ -484,6 +485,7 @@ if (BUILD_SASL) message(FATAL_ERROR "Cyrus SASL support requested but sasl.h not found") endif (NOT HAVE_SASL_H) + find_program(SASLPASSWD2 saslpasswd2 DOC "Location of the saslpasswd2 program") set(BROKER_SASL_NAME "qpidd" CACHE STRING "SASL app name for the qpid broker") set(qpidcommon_sasl_source qpid/sys/cyrus/CyrusSecurityLayer.h @@ -691,7 +693,10 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows) qpid/sys/posix/SystemInfo.cpp ) add_definitions(-pthread) - set (CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} -pthread) + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread") + if (CMAKE_COMPILER_IS_GNUCXX) + set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -pthread") + endif (CMAKE_COMPILER_IS_GNUCXX) endif (CMAKE_SYSTEM_NAME STREQUAL Linux) if (CMAKE_SYSTEM_NAME STREQUAL SunOS) @@ -704,6 +709,7 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows) set (qpidtypes_platform_SOURCES) set (qpidtypes_platform_LIBS uuid + ${Boost_SYSTEM_LIBRARY} ) set (qpidcommon_platform_SOURCES @@ -824,7 +830,7 @@ target_link_libraries (qpidcommon qpidtypes ${qpidcommon_platform_LIBS} ${qpidcommon_sasl_lib}) set_target_properties (qpidcommon PROPERTIES - VERSION ${qpidc_version}) + VERSION ${qpidcommon_version}) install (TARGETS qpidcommon DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON}) @@ -839,7 +845,7 @@ set(qpidtypes_SOURCES add_msvc_version (qpidtypes library dll) add_library(qpidtypes SHARED ${qpidtypes_SOURCES}) target_link_libraries(qpidtypes ${qpidtypes_platform_LIBS}) -set_target_properties (qpidtypes PROPERTIES VERSION ${qpidc_version}) +set_target_properties (qpidtypes PROPERTIES VERSION ${qpidtypes_version}) install(TARGETS qpidtypes DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON}) @@ -886,7 +892,7 @@ add_msvc_version (qpidclient library dll) add_library (qpidclient SHARED ${qpidclient_SOURCES}) target_link_libraries (qpidclient qpidcommon ${qpidclient_platform_LIBS}) -set_target_properties (qpidclient PROPERTIES VERSION ${qpidc_version}) +set_target_properties (qpidclient PROPERTIES VERSION ${qpidclient_version}) install (TARGETS qpidclient DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT}) @@ -939,7 +945,7 @@ add_msvc_version (qpidmessaging library dll) add_library (qpidmessaging SHARED ${qpidmessaging_SOURCES}) target_link_libraries (qpidmessaging qpidclient) -set_target_properties (qpidmessaging PROPERTIES VERSION ${qpidc_version}) +set_target_properties (qpidmessaging PROPERTIES VERSION ${qpidmessaging_version}) install (TARGETS qpidmessaging DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT}) @@ -1048,7 +1054,7 @@ set (qpidbroker_SOURCES add_msvc_version (qpidbroker library dll) add_library (qpidbroker SHARED ${qpidbroker_SOURCES}) target_link_libraries (qpidbroker qpidcommon ${qpidbroker_platform_LIBS}) -set_target_properties (qpidbroker PROPERTIES VERSION ${qpidc_version}) +set_target_properties (qpidbroker PROPERTIES VERSION ${qpidbroker_version}) if (MSVC) set_target_properties (qpidbroker PROPERTIES COMPILE_FLAGS /wd4290) endif (MSVC) @@ -1068,37 +1074,38 @@ add_executable (qpidd ${qpidd_SOURCES}) target_link_libraries (qpidd qpidbroker qpidcommon ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY}) install (TARGETS qpidd RUNTIME - DESTINATION ${QPID_INSTALL_BINDIR} + DESTINATION ${QPID_INSTALL_SBINDIR} COMPONENT ${QPID_COMPONENT_BROKER}) if (CPACK_GENERATOR STREQUAL "NSIS") set (CPACK_NSIS_MENU_LINKS "qpidd" "Start Qpid Broker") endif (CPACK_GENERATOR STREQUAL "NSIS") -# QMF library -# Library Version Information (CURRENT.REVISION.AGE): -# -# CURRENT => API/ABI version. Bump this if the interface changes -# REVISION => Version of underlying implementation. -# Bump if implementation changes but API/ABI doesn't -# AGE => Number of API/ABI versions this is backward compatible with -set (qmf_version 2.0.0) -set (qmf2_version 1.0.0) -set (qmfengine_version 1.0.0) +if (UNIX) + install (CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${QPID_LOCALSTATE_DIR}/lib/qpidd)") + install (CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${QPID_LOCALSTATE_DIR}/spool/qpidd)") +endif (UNIX) set (qmf_SOURCES qpid/agent/ManagementAgentImpl.cpp qpid/agent/ManagementAgentImpl.h ) +set (qmf_HEADERS + ../include/qpid/agent/ManagementAgent.h + ../include/qpid/agent/QmfAgentImportExport.h + ) add_msvc_version (qmf library dll) add_library (qmf SHARED ${qmf_SOURCES}) -target_link_libraries (qmf qpidclient) +target_link_libraries (qmf qmfengine) set_target_properties (qmf PROPERTIES VERSION ${qmf_version}) install (TARGETS qmf OPTIONAL DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_QMF}) +install (FILES ${qmf_HEADERS} + DESTINATION ${QPID_INSTALL_INCLUDEDIR}/qpid/agent + COMPONENT ${QPID_COMPONENT_QMF}) install_pdb (qmf ${QPID_COMPONENT_QMF}) if(NOT WIN32) @@ -1210,6 +1217,26 @@ set (qmfengine_SOURCES qmf/engine/ValueImpl.cpp qmf/engine/ValueImpl.h ) + +set (qmfengine_HEADERS + ../include/qmf/engine/Agent.h + ../include/qmf/engine/ConnectionSettings.h + ../include/qmf/engine/Console.h + ../include/qmf/engine/Event.h + ../include/qmf/engine/Message.h + ../include/qmf/engine/Object.h + ../include/qmf/engine/ObjectId.h + ../include/qmf/engine/QmfEngineImportExport.h + ../include/qmf/engine/Query.h + ../include/qmf/engine/ResilientConnection.h + ../include/qmf/engine/Schema.h + ../include/qmf/engine/Typecode.h + ../include/qmf/engine/Value.h + ) +install (FILES ${qmfengine_HEADERS} + DESTINATION ${QPID_INSTALL_INCLUDEDIR}/qmf/engine + COMPONENT ${QPID_COMPONENT_QMF}) + if (NOT WIN32) list(APPEND qmfengine_SOURCES qmf/engine/ResilientConnection.cpp) endif (NOT WIN32) @@ -1224,22 +1251,20 @@ install (TARGETS qmfengine OPTIONAL COMPONENT ${QPID_COMPONENT_QMF}) install_pdb (qmfengine ${QPID_COMPONENT_QMF}) -# QMF console library -#module_hdr += \ -# qpid/console/Agent.h \ -# qpid/console/Broker.h \ -# qpid/console/ClassKey.h \ -# qpid/console/ConsoleImportExport.h \ -# qpid/console/ConsoleListener.h \ -# qpid/console/Event.h \ -# qpid/console/Object.h \ -# qpid/console/ObjectId.h \ -# qpid/console/Package.h \ -# qpid/console/Schema.h \ -# qpid/console/SequenceManager.h \ -# qpid/console/SessionManager.h \ -# qpid/console/Value.h set (qmfconsole_SOURCES + qpid/console/Agent.cpp + qpid/console/Broker.cpp + qpid/console/ClassKey.cpp + qpid/console/Event.cpp + qpid/console/Object.cpp + qpid/console/ObjectId.cpp + qpid/console/Package.cpp + qpid/console/Schema.cpp + qpid/console/SequenceManager.cpp + qpid/console/SessionManager.cpp + qpid/console/Value.cpp + ) +set (qmfconsole_HEADERS ../include/qpid/console/Agent.h ../include/qpid/console/Broker.h ../include/qpid/console/ClassKey.h @@ -1253,26 +1278,18 @@ set (qmfconsole_SOURCES ../include/qpid/console/SequenceManager.h ../include/qpid/console/SessionManager.h ../include/qpid/console/Value.h - qpid/console/Agent.cpp - qpid/console/Broker.cpp - qpid/console/ClassKey.cpp - qpid/console/Event.cpp - qpid/console/Object.cpp - qpid/console/ObjectId.cpp - qpid/console/Package.cpp - qpid/console/Schema.cpp - qpid/console/SequenceManager.cpp - qpid/console/SessionManager.cpp - qpid/console/Value.cpp ) add_msvc_version (qmfconsole library dll) add_library (qmfconsole SHARED ${qmfconsole_SOURCES}) target_link_libraries (qmfconsole qpidclient) set_target_properties (qmfconsole PROPERTIES - VERSION ${qpidc_version}) + VERSION ${qmfconsole_version}) install (TARGETS qmfconsole DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_QMF}) +install (FILES ${qmfconsole_HEADERS} + DESTINATION ${QPID_INSTALL_INCLUDEDIR}/qpid/console + COMPONENT ${QPID_COMPONENT_QMF}) install_pdb (qmfconsole ${QPID_COMPONENT_QMF}) # A queue event listener plugin that creates messages on a replication @@ -1327,3 +1344,14 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) add_subdirectory(qpid/store) add_subdirectory(tests) + +# Support for pkg-config +if (UNIX) + add_custom_target(pkgconfig ALL echo DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qpid.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc + DESTINATION ${QPID_INSTALL_LIBDIR}/pkgconfig + COMPONENT ${QPID_COMPONENT_COMMON}) +endif (UNIX) + diff --git a/cpp/src/cluster.cmake b/cpp/src/cluster.cmake index a389f8f13f..d743942fff 100644 --- a/cpp/src/cluster.cmake +++ b/cpp/src/cluster.cmake @@ -153,15 +153,18 @@ if (BUILD_CLUSTER) LINK_FLAGS "-Wl,--no-undefined -pthread") endif (CMAKE_COMPILER_IS_GNUCXX) - install (TARGETS cluster - DESTINATION ${QPIDD_MODULE_DIR} - COMPONENT ${QPID_COMPONENT_BROKER}) - add_library (watchdog MODULE qpid/cluster/WatchDogPlugin.cpp) set_target_properties (watchdog PROPERTIES PREFIX "") add_executable(qpidd_watchdog qpid/cluster/qpidd_watchdog.cpp) + install (TARGETS cluster watchdog + DESTINATION ${QPIDD_MODULE_DIR} + COMPONENT ${QPID_COMPONENT_BROKER}) + install (TARGETS qpidd_watchdog + DESTINATION ${QPID_LIBEXEC_DIR} + COMPONENT ${QPID_COMPONENT_BROKER}) + endif (BUILD_CLUSTER) # Distribute all sources. diff --git a/cpp/src/rdma.cmake b/cpp/src/rdma.cmake index e020cb84a9..1d840e5d18 100644 --- a/cpp/src/rdma.cmake +++ b/cpp/src/rdma.cmake @@ -64,7 +64,7 @@ if (BUILD_RDMA) add_library (rdmawrap SHARED ${rdma_SOURCES}) target_link_libraries (rdmawrap qpidcommon rdmacm ibverbs) - set_target_properties (rdmawrap PROPERTIES VERSION ${qpidc_version}) + set_target_properties (rdmawrap PROPERTIES VERSION ${rdmawrap_version}) if (CMAKE_COMPILER_IS_GNUCXX) set_target_properties(rdmawrap PROPERTIES COMPILE_FLAGS -Wno-missing-field-initializers diff --git a/cpp/src/ssl.cmake b/cpp/src/ssl.cmake index c205845388..6bc1d07d6d 100644 --- a/cpp/src/ssl.cmake +++ b/cpp/src/ssl.cmake @@ -40,15 +40,15 @@ endif (CMAKE_SYSTEM_NAME STREQUAL Windows) option(BUILD_SSL "Build with support for SSL" ${ssl_default}) if (BUILD_SSL) - if (CMAKE_SYSTEM_NAME STREQUAL Windows) - set (sslclient_windows_SOURCES qpid/client/windows/SslConnector.cpp) - set (sslbroker_windows_SOURCES qpid/broker/windows/SslProtocolFactory.cpp) - set (sslcommon_windows_SOURCES - qpid/sys/windows/SslAsynchIO.cpp - ) - set (windows_ssl_libs Secur32.lib) - set (windows_ssl_server_libs Crypt32.lib) - else (CMAKE_SYSTEM_NAME STREQUAL Windows) + if (CMAKE_SYSTEM_NAME STREQUAL Windows) + set (sslclient_windows_SOURCES qpid/client/windows/SslConnector.cpp) + set (sslbroker_windows_SOURCES qpid/broker/windows/SslProtocolFactory.cpp) + set (sslcommon_windows_SOURCES + qpid/sys/windows/SslAsynchIO.cpp + ) + set (windows_ssl_libs Secur32.lib) + set (windows_ssl_server_libs Crypt32.lib) + else (CMAKE_SYSTEM_NAME STREQUAL Windows) if (NOT NSS_FOUND) message(FATAL_ERROR "nss/nspr not found, required for ssl support") @@ -76,10 +76,15 @@ if (BUILD_SSL) add_library (sslcommon SHARED ${sslcommon_SOURCES}) target_link_libraries (sslcommon qpidcommon) set_target_properties (sslcommon PROPERTIES - VERSION ${qpidc_version} + VERSION ${sslcommon_version} COMPILE_FLAGS ${NSS_COMPILE_FLAGS} LINK_FLAGS ${NSS_LINK_FLAGS}) + install (TARGETS sslcommon + DESTINATION ${QPID_INSTALL_LIBDIR} + COMPONENT ${QPID_COMPONENT_COMMON}) + install_pdb (sslcommon ${QPID_COMPONENT_COMMON}) + set (ssl_SOURCES qpid/sys/SslPlugin.cpp qpid/sys/ssl/SslHandler.h diff --git a/cpp/src/versions.cmake b/cpp/src/versions.cmake new file mode 100644 index 0000000000..d7120c680d --- /dev/null +++ b/cpp/src/versions.cmake @@ -0,0 +1,38 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Library Version Information (CURRENT.REVISION.AGE): +# +# CURRENT => API/ABI version. Bump this if the interface changes +# REVISION => Version of underlying implementation. +# Bump if implementation changes but API/ABI doesn't +# AGE => Number of API/ABI versions this is backward compatible with + +set (qmf_version 1.0.0) +set (qmf2_version 1.0.0) +set (qmfconsole_version 2.0.0) +set (qmfengine_version 1.1.0) +set (qpidbroker_version 2.0.0) +set (qpidclient_version 2.0.0) +set (qpidcommon_version 2.0.0) +set (qpidmessaging_version 2.0.0) +set (qpidtypes_version 1.0.0) +set (rdmawrap_version 2.0.0) +set (sslcommon_version 2.0.0) + |