#
# 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.
#
# Option to require building optional plugins
foreach (r ${REQUIRE})
set(${r}_force ON)
message(STATUS "Forcing ${r} to ${${r}_force}")
endforeach(r)
include(CheckFunctionExists)
include(CheckIncludeFileCXX)
include(CheckIncludeFiles)
include(CheckIncludeFileCXX)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(FindBoost)
include(FindDoxygen)
#set (CMAKE_VERBOSE_MAKEFILE ON) # for debugging
# check if we generate source as part of the build
# - rubygen generates the amqp spec and clustering
# - managementgen generates the broker management code
#
# rubygen subdir is excluded from stable distributions
# If the main AMQP spec is present, then check if ruby and python are
# present, and if any sources have changed, forcing a re-gen of source code.
set(AMQP_SPEC_DIR ${qpid-cpp_SOURCE_DIR}/../specs)
set(AMQP_SPEC ${AMQP_SPEC_DIR}/amqp.0-10-qpid-errata.xml)
if (EXISTS ${AMQP_SPEC})
include(FindRuby)
include(FindPythonInterp)
if (NOT RUBY_EXECUTABLE)
message(FATAL_ERROR "Can't locate ruby, needed to generate source files.")
endif (NOT RUBY_EXECUTABLE)
if (NOT PYTHON_EXECUTABLE)
message(FATAL_ERROR "Can't locate python, needed to generate source files.")
endif (NOT PYTHON_EXECUTABLE)
set(specs ${AMQP_SPEC} ${qpid-cpp_SOURCE_DIR}/xml/cluster.xml)
set(regen_amqp OFF)
set(rgen_dir ${qpid-cpp_SOURCE_DIR}/rubygen)
file(GLOB_RECURSE rgen_progs ${rgen_dir}/*.rb)
# If any of the specs, or any of the sources used to generate code, change
# then regenerate the sources.
foreach (spec_file ${specs} ${rgen_progs})
if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
set(regen_amqp ON)
endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
endforeach (spec_file ${specs})
if (regen_amqp)
message(STATUS "Regenerating AMQP protocol sources")
execute_process(COMMAND ${RUBY_EXECUTABLE} -I ${rgen_dir} ${rgen_dir}/generate ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../include ${specs} all rubygen.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
else (regen_amqp)
message(STATUS "No need to generate AMQP protocol sources")
endif (regen_amqp)
set(mgmt_specs ${AMQP_SPEC_DIR}/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/acl/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/cluster/management-schema.xml)
set(mgen_dir ${qpid-cpp_SOURCE_DIR}/managementgen)
set(regen_mgmt OFF)
foreach (spec_file ${mgmt_specs})
if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
message(STATUS "${spec_file} is newer")
set(regen_mgmt ON)
endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
endforeach (spec_file ${mgmt_specs})
if (regen_mgmt)
message(STATUS "Regenerating Qpid Management Framework sources")
execute_process(COMMAND ${PYTHON_EXECUTABLE} ${mgen_dir}/qmf-gen -c managementgen.cmake -b -q -o ${CMAKE_CURRENT_BINARY_DIR}/qmf ${mgmt_specs}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
else (regen_mgmt)
message(STATUS "No need to generate Qpid Management Framework sources")
endif (regen_mgmt)
# Pull in the names of the generated files, i.e. ${rgen_framing_srcs}
include (${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
include (${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
else (EXISTS ${AMQP_SPEC})
message(STATUS "No AMQP spec... presume generated sources are included")
include (rubygen.cmake)
include (managementgen.cmake)
endif (EXISTS ${AMQP_SPEC})
find_program(HELP2MAN help2man DOC "Location of the help2man program")
option(GEN_MANPAGES "Use help2man to generate man pages" ON)
if (GEN_MANPAGES AND NOT HELP2MAN)
message(STATUS "Can't locate the help2man command; man pages will not be generated")
set (GEN_MANPAGES OFF)
endif (GEN_MANPAGES AND NOT HELP2MAN)
# FindDoxygen module tries to locate doxygen and Graphviz dot
set (docs_default ON)
if (NOT DOXYGEN_EXECUTABLE)
set (docs_default OFF)
endif (NOT DOXYGEN_EXECUTABLE)
option(GEN_DOXYGEN "Use doxygen to generate user documentation" ${docs_default})
if (GEN_DOXYGEN AND NOT DOXYGEN_EXECUTABLE)
message(STATUS "Can't locate the doxygen command; user documentation will not be generated")
set (GEN_DOXYGEN OFF)
endif (GEN_DOXYGEN AND NOT DOXYGEN_EXECUTABLE)
find_program(VALGRIND valgrind DOC "Location of the valgrind program")
option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
if (ENABLE_VALGRIND AND NOT VALGRIND)
message(STATUS "Can't locate the valgrind command; no run-time error detection")
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.
#
# The following warnings are deliberately omitted, they warn on valid code.
# -Wunreachable-code -Wpadded -Winline
# -Wshadow - warns about boost headers.
set (WARNING_FLAGS
"-Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual")
endif (CMAKE_COMPILER_IS_GNUCXX)
if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
set (COMPILER_FLAGS "-library=stlport4 -mt")
set (WARNING_FLAGS "+w2")
endif (CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
option(ENABLE_WARNINGS "Enable lots of compiler warnings (recommended)" ON)
if (NOT ENABLE_WARNINGS)
set (WARNING_FLAGS "")
endif (NOT ENABLE_WARNINGS)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_FLAGS} ${WARNING_FLAGS}")
# Expand a bit from the basic Find_Boost; be specific about what's needed.
# TODO: Not all these libs are needed everywhere:
# Linux only uses filesystem program_options unit_test_framework
# (which itself uses regex).
# Boost.system is sometimes needed; it's handled separately, below.
find_package(Boost 1.33 REQUIRED
COMPONENTS filesystem program_options date_time thread
regex unit_test_framework)
if(NOT Boost_FOUND)
message(FATAL_ERROR "Boost C++ libraries not found. Please install or try setting BOOST_ROOT")
endif(NOT Boost_FOUND)
# Boost.system was introduced at Boost 1.35; it's needed secondarily by other
# Boost libs Qpid needs, so be sure it's there.
if (NOT Boost_VERSION LESS 103500)
find_package(Boost COMPONENTS system)
if (NOT Boost_SYSTEM_LIBRARY)
set(Boost_SYSTEM_LIBRARY boost_system)
endif (NOT Boost_SYSTEM_LIBRARY)
endif (NOT Boost_VERSION LESS 103500)
# Versions of cmake pre 2.6 don't set the Boost_*_LIBRARY variables correctly
# these values are correct for Linux
if (NOT Boost_PROGRAM_OPTIONS_LIBRARY)
set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options)
endif (NOT Boost_PROGRAM_OPTIONS_LIBRARY)
if (NOT Boost_FILESYSTEM_LIBRARY)
set(Boost_FILESYSTEM_LIBRARY boost_filesystem)
endif (NOT Boost_FILESYSTEM_LIBRARY)
if (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY)
set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY boost_unit_test_framework)
endif (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY)
if (NOT Boost_R
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共2000个文件
html:967个
h:679个
cpp:612个
Qpid/C++ 是AMQP协议的一个 C++ 的实现。Apache Qpid (Open Source AMQP Messaging) 是一个跨平台的企业通讯解决方案,实现了高级消息队列协议。提供了 Java、C++ 两种服务端版本以及 Java、C++、.NET、Python和Ruby语言的客户端。 其中C++版本的服务器端具备高性能/低消耗以及RDMA支持,可运行于Windows/Linux和Solaris平台;而Java版本的服务器则支持JMS,以及各种平台。
资源推荐
资源详情
资源评论
收起资源包目录
qpid-cpp-0.6.tar.gz_AMQP_Open Net_qpid_qpid-cpp_消息队列 (2000个子文件)
dlclose_noop.c 910B
specification.cpp 91KB
AllInvoker.cpp 46KB
cluster_test.cpp 45KB
ManagementAgent.cpp 44KB
QueueTest.cpp 39KB
Cluster.cpp 36KB
MSSqlProvider.cpp 35KB
Queue.cpp 35KB
Agent.cpp 31KB
AddressResolution.cpp 30KB
ManagementAgentImpl.cpp 30KB
SessionAdapter.cpp 30KB
ServerInvoker.cpp 29KB
BrokerProxyImpl.cpp 27KB
perftest.cpp 26KB
AMQP_AllProxy.cpp 25KB
MessagingSessionTests.cpp 24KB
SemanticState.cpp 23KB
qrsh_server.cpp 23KB
AsynchIO.cpp 23KB
SessionImpl.cpp 22KB
RdmaIO.cpp 22KB
Variant.cpp 21KB
SchemaImpl.cpp 21KB
failover_soak.cpp 20KB
UpdateClient.cpp 19KB
ClientSessionTest.cpp 19KB
AsynchIO.cpp 19KB
EpollPoller.cpp 18KB
Connection.cpp 18KB
AclReader.cpp 18KB
Queue.cpp 17KB
MethodBodyFactory.cpp 17KB
Broker.cpp 17KB
ClientInvoker.cpp 17KB
AMQP_ServerProxy.cpp 15KB
ResilientConnection.cpp 15KB
structs.cpp 15KB
SessionManager.cpp 14KB
Link.cpp 14KB
SaslAuthenticator.cpp 14KB
ConsoleImpl.cpp 14KB
Options.cpp 13KB
MessageStorePlugin.cpp 13KB
SslIo.cpp 13KB
SessionState.cpp 12KB
AsyncSession_0_10.cpp 12KB
ECFPoller.cpp 12KB
latencytest.cpp 12KB
SessionImpl.cpp 12KB
Session_0_10.cpp 12KB
Message.cpp 12KB
RdmaIOPlugin.cpp 12KB
Exchange.cpp 12KB
SessionState.cpp 12KB
RdmaConnector.cpp 12KB
Object.cpp 11KB
txtest.cpp 11KB
SaslFactory.cpp 11KB
SslConnector.cpp 11KB
MethodBodyDefaultVisitor.cpp 11KB
QueuePolicyTest.cpp 11KB
Broker.cpp 11KB
Bridge.cpp 11KB
LinkRegistry.cpp 11KB
TopicExchange.cpp 11KB
SessionHandler.cpp 11KB
logging.cpp 11KB
SessionState.cpp 11KB
Broker.cpp 10KB
PartialFailure.cpp 10KB
Session.cpp 10KB
Connection.cpp 10KB
ConnectionHandler.cpp 10KB
Address.cpp 10KB
AclData.cpp 10KB
QueuePolicy.cpp 10KB
IncomingMessages.cpp 10KB
AMQP_ClientProxy.cpp 10KB
qrsh_run.cpp 10KB
Socket.cpp 10KB
ExchangeTest.cpp 10KB
Exchange.cpp 10KB
ValueImpl.cpp 9KB
Codecs.cpp 9KB
TCPConnector.cpp 9KB
RecoveryManagerImpl.cpp 9KB
ConnectionHandler.cpp 9KB
ConnectionSettingsImpl.cpp 9KB
Connection.cpp 9KB
InitialStatusMap.cpp 9KB
XmlExchange.cpp 9KB
QpiddBroker.cpp 9KB
ReplicationExchange.cpp 9KB
SslSocket.cpp 9KB
ConnectionImpl.cpp 9KB
DeliveryProperties.cpp 8KB
QueueEvents.cpp 8KB
Cpg.cpp 8KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
刘良运
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功