summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2013-08-22 19:31:15 +0000
committerAndrew Stitcher <astitcher@apache.org>2013-08-22 19:31:15 +0000
commitefe73050c7faa4f7b19c55bec7dc753d38668d15 (patch)
tree64dedd93d5a5f918ed36532bfc0c3d9a903ed109 /qpid/cpp
parenta607830490b4b64a25f64c1e8a79662ef7ab95e8 (diff)
downloadqpid-python-efe73050c7faa4f7b19c55bec7dc753d38668d15.tar.gz
QPID-5079: Get library import/export declarations working for linux
- Only qpidmessaging and qpidtypes libraries are affected git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1516549 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/include/qpid/ImportExport.h12
-rw-r--r--qpid/cpp/src/CMakeLists.txt13
-rw-r--r--qpid/cpp/src/qpid/messaging/ConnectionOptions.h6
-rw-r--r--qpid/cpp/src/qpid/messaging/MessageImpl.h37
-rw-r--r--qpid/cpp/src/qpid/messaging/ProtocolRegistry.h5
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/EncodedMessage.h28
6 files changed, 64 insertions, 37 deletions
diff --git a/qpid/cpp/include/qpid/ImportExport.h b/qpid/cpp/include/qpid/ImportExport.h
index e62399faf7..eecc9503bc 100644
--- a/qpid/cpp/include/qpid/ImportExport.h
+++ b/qpid/cpp/include/qpid/ImportExport.h
@@ -60,12 +60,16 @@
//
// Non-Windows (Linux, etc.) definitions:
//
+#if __GNUC__ >= 4
+# define QPID_EXPORT __attribute ((visibility ("default")))
+#else
# define QPID_EXPORT
+#endif
# define QPID_IMPORT
-# define QPID_CLASS_EXPORT
-# define QPID_CLASS_IMPORT
-# define QPID_INLINE_EXPORT
-# define QPID_INLINE_IMPORT
+# define QPID_CLASS_EXPORT QPID_EXPORT
+# define QPID_CLASS_IMPORT QPID_IMPORT
+# define QPID_INLINE_EXPORT QPID_EXPORT
+# define QPID_INLINE_IMPORT QPID_IMPORT
#endif
#endif /*!QPID_IMPORTEXPORT_H*/
diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt
index 21f562d0a0..331e3d13b1 100644
--- a/qpid/cpp/src/CMakeLists.txt
+++ b/qpid/cpp/src/CMakeLists.txt
@@ -1095,12 +1095,19 @@ set(qpidtypes_SOURCES
qpid/types/Variant.cpp
${qpidtypes_platform_SOURCES}
)
+set_source_files_properties(
+ ${qpidtypes_SOURCES}
+ PROPERTIES
+ COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}")
+
add_msvc_version (qpidtypes library dll)
add_library(qpidtypes SHARED ${qpidtypes_SOURCES})
target_link_libraries(qpidtypes ${qpidtypes_platform_LIBS})
set_target_properties (qpidtypes PROPERTIES
+ LINK_FLAGS "${HIDE_SYMBOL_FLAGS}"
VERSION ${qpidtypes_version}
SOVERSION ${qpidtypes_version_major})
+
install(TARGETS qpidtypes
DESTINATION ${QPID_INSTALL_LIBDIR}
COMPONENT ${QPID_COMPONENT_COMMON})
@@ -1212,11 +1219,17 @@ set (qpidmessaging_SOURCES
qpid/messaging/amqp/EncodedMessage.h
qpid/messaging/amqp/EncodedMessage.cpp
)
+set_source_files_properties(
+ ${qpidmessaging_SOURCES}
+ PROPERTIES
+ COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}")
+
add_msvc_version (qpidmessaging library dll)
add_library (qpidmessaging SHARED ${qpidmessaging_SOURCES})
target_link_libraries (qpidmessaging qpidclient)
set_target_properties (qpidmessaging PROPERTIES
+ LINK_FLAGS "${HIDE_SYMBOL_FLAGS}"
VERSION ${qpidmessaging_version}
SOVERSION ${qpidmessaging_version_major})
install (TARGETS qpidmessaging
diff --git a/qpid/cpp/src/qpid/messaging/ConnectionOptions.h b/qpid/cpp/src/qpid/messaging/ConnectionOptions.h
index 7a701fce65..085615d5d4 100644
--- a/qpid/cpp/src/qpid/messaging/ConnectionOptions.h
+++ b/qpid/cpp/src/qpid/messaging/ConnectionOptions.h
@@ -21,6 +21,8 @@
* under the License.
*
*/
+#include "qpid/messaging/ImportExport.h"
+
#include "qpid/client/ConnectionSettings.h"
#include <map>
#include <vector>
@@ -44,8 +46,8 @@ struct ConnectionOptions : qpid::client::ConnectionSettings
bool reconnectOnLimitExceeded;
std::string identifier;
- ConnectionOptions(const std::map<std::string, qpid::types::Variant>&);
- void set(const std::string& name, const qpid::types::Variant& value);
+ QPID_MESSAGING_EXTERN ConnectionOptions(const std::map<std::string, qpid::types::Variant>&);
+ QPID_MESSAGING_EXTERN void set(const std::string& name, const qpid::types::Variant& value);
};
}} // namespace qpid::messaging
diff --git a/qpid/cpp/src/qpid/messaging/MessageImpl.h b/qpid/cpp/src/qpid/messaging/MessageImpl.h
index 6387daafb7..b63c8689af 100644
--- a/qpid/cpp/src/qpid/messaging/MessageImpl.h
+++ b/qpid/cpp/src/qpid/messaging/MessageImpl.h
@@ -21,6 +21,9 @@
* under the License.
*
*/
+
+#include "qpid/messaging/ImportExport.h"
+
#include "qpid/messaging/Address.h"
#include "qpid/types/Variant.h"
#include "qpid/framing/SequenceNumber.h"
@@ -59,43 +62,43 @@ class MessageImpl
MessageImpl(const char* chars, size_t count);
void setReplyTo(const Address& d);
- const Address& getReplyTo() const;
+ QPID_MESSAGING_EXTERN const Address& getReplyTo() const;
void setSubject(const std::string& s);
- const std::string& getSubject() const;
+ QPID_MESSAGING_EXTERN const std::string& getSubject() const;
void setContentType(const std::string& s);
- const std::string& getContentType() const;
+ QPID_MESSAGING_EXTERN const std::string& getContentType() const;
void setMessageId(const std::string&);
- const std::string& getMessageId() const;
+ QPID_MESSAGING_EXTERN const std::string& getMessageId() const;
void setUserId(const std::string& );
- const std::string& getUserId() const;
+ QPID_MESSAGING_EXTERN const std::string& getUserId() const;
void setCorrelationId(const std::string& );
- const std::string& getCorrelationId() const;
+ QPID_MESSAGING_EXTERN const std::string& getCorrelationId() const;
void setPriority(uint8_t);
- uint8_t getPriority() const;
+ QPID_MESSAGING_EXTERN uint8_t getPriority() const;
void setTtl(uint64_t);
- uint64_t getTtl() const;
+ QPID_MESSAGING_EXTERN uint64_t getTtl() const;
void setDurable(bool);
- bool isDurable() const;
+ QPID_MESSAGING_EXTERN bool isDurable() const;
void setRedelivered(bool);
- bool isRedelivered() const;
+ QPID_MESSAGING_EXTERN bool isRedelivered() const;
- const qpid::types::Variant::Map& getHeaders() const;
+ QPID_MESSAGING_EXTERN const qpid::types::Variant::Map& getHeaders() const;
qpid::types::Variant::Map& getHeaders();
void setHeader(const std::string& key, const qpid::types::Variant& val);
void setBytes(const std::string& bytes);
void setBytes(const char* chars, size_t count);
- const std::string& getBytes() const;
+ QPID_MESSAGING_EXTERN const std::string& getBytes() const;
std::string& getBytes();
qpid::types::Variant& getContent();
- const qpid::types::Variant& getContent() const;
+ QPID_MESSAGING_EXTERN const qpid::types::Variant& getContent() const;
- void setInternalId(qpid::framing::SequenceNumber id);
- qpid::framing::SequenceNumber getInternalId();
+ QPID_MESSAGING_EXTERN void setInternalId(qpid::framing::SequenceNumber id);
+ QPID_MESSAGING_EXTERN qpid::framing::SequenceNumber getInternalId();
void setEncoded(boost::shared_ptr<const qpid::messaging::amqp::EncodedMessage> e) { encoded = e; }
boost::shared_ptr<const qpid::messaging::amqp::EncodedMessage> getEncoded() const { return encoded; }
};
@@ -109,8 +112,8 @@ class Message;
*/
struct MessageImplAccess
{
- static MessageImpl& get(Message&);
- static const MessageImpl& get(const Message&);
+ QPID_MESSAGING_EXTERN static MessageImpl& get(Message&);
+ QPID_MESSAGING_EXTERN static const MessageImpl& get(const Message&);
};
}} // namespace qpid::messaging
diff --git a/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h b/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h
index bcb62248a5..25e8bd4ec8 100644
--- a/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h
+++ b/qpid/cpp/src/qpid/messaging/ProtocolRegistry.h
@@ -21,6 +21,9 @@
* under the License.
*
*/
+
+#include "qpid/messaging/ImportExport.h"
+
#include "qpid/types/Variant.h"
namespace qpid {
@@ -34,7 +37,7 @@ class ProtocolRegistry
public:
typedef ConnectionImpl* Factory(const std::string& url, const qpid::types::Variant::Map& options);
static ConnectionImpl* create(const std::string& url, const qpid::types::Variant::Map& options);
- static void add(const std::string& name, Factory* factory);
+ QPID_MESSAGING_EXTERN static void add(const std::string& name, Factory* factory);
private:
};
}} // namespace qpid::messaging
diff --git a/qpid/cpp/src/qpid/messaging/amqp/EncodedMessage.h b/qpid/cpp/src/qpid/messaging/amqp/EncodedMessage.h
index 233b718dec..90ac09e735 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/EncodedMessage.h
+++ b/qpid/cpp/src/qpid/messaging/amqp/EncodedMessage.h
@@ -21,6 +21,9 @@
* under the License.
*
*/
+
+#include "qpid/messaging/ImportExport.h"
+
#include "qpid/amqp/CharSequence.h"
#include "qpid/amqp/MessageId.h"
#include "qpid/amqp/MessageReader.h"
@@ -71,17 +74,17 @@ namespace amqp {
class EncodedMessage
{
public:
- EncodedMessage();
- EncodedMessage(size_t);
- EncodedMessage(const EncodedMessage&);
- ~EncodedMessage();
+ QPID_MESSAGING_EXTERN EncodedMessage();
+ QPID_MESSAGING_EXTERN EncodedMessage(size_t);
+ QPID_MESSAGING_EXTERN EncodedMessage(const EncodedMessage&);
+ QPID_MESSAGING_EXTERN ~EncodedMessage();
- size_t getSize() const;
- char* getData();
- const char* getData() const;
- void trim(size_t);
- void resize(size_t);
+ QPID_MESSAGING_EXTERN size_t getSize() const;
+ QPID_MESSAGING_EXTERN char* getData();
+ QPID_MESSAGING_EXTERN const char* getData() const;
+ QPID_MESSAGING_EXTERN void trim(size_t);
+ QPID_MESSAGING_EXTERN void resize(size_t);
void getReplyTo(qpid::messaging::Address&) const;
void getSubject(std::string&) const;
@@ -92,11 +95,10 @@ class EncodedMessage
void populate(qpid::types::Variant::Map&) const;
void getBody(std::string&, qpid::types::Variant&) const;
- void init(qpid::messaging::MessageImpl&);
- qpid::amqp::CharSequence getBareMessage() const;
+ QPID_MESSAGING_EXTERN void init(qpid::messaging::MessageImpl&);
+ QPID_MESSAGING_EXTERN qpid::amqp::CharSequence getBareMessage() const;
qpid::amqp::CharSequence getBody() const;
- bool hasHeaderChanged(const qpid::messaging::MessageImpl&) const;
-
+ QPID_MESSAGING_EXTERN bool hasHeaderChanged(const qpid::messaging::MessageImpl&) const;
private:
size_t size;
char* data;