You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2018/05/17 01:35:24 UTC

[GitHub] merlimat closed pull request #1794: Create shared library that only exports API symbols

merlimat closed pull request #1794: Create shared library that only exports API symbols
URL: https://github.com/apache/incubator-pulsar/pull/1794
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/pulsar-client-cpp/CMakeLists.txt b/pulsar-client-cpp/CMakeLists.txt
index 5ada575683..e5fd716d8e 100644
--- a/pulsar-client-cpp/CMakeLists.txt
+++ b/pulsar-client-cpp/CMakeLists.txt
@@ -41,6 +41,11 @@ endif(NOT CXX_STANDARD)
 
 set(CMAKE_CXX_FLAGS " -msse4.2 -mpclmul -Wno-deprecated-declarations ${CXX_STANDARD} ${CMAKE_CXX_FLAGS}")
 
+if (!APPLE)
+    # Hide all non-exported symbols to avoid conflicts
+    set(CMAKE_CXX_FLAGS " -fvisibility=hidden -Wl,--exclude-libs,ALL ${CMAKE_CXX_FLAGS}")
+endif ()
+
 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 
 set(PROTOBUF_LIBRARIES $ENV{PROTOBUF_LIBRARIES})
diff --git a/pulsar-client-cpp/include/pulsar/DeprecatedException.h b/pulsar-client-cpp/include/pulsar/DeprecatedException.h
index 91e9c67de4..052f985e38 100644
--- a/pulsar-client-cpp/include/pulsar/DeprecatedException.h
+++ b/pulsar-client-cpp/include/pulsar/DeprecatedException.h
@@ -22,6 +22,8 @@
 #include <stdexcept>
 #include <string>
 
+#pragma GCC visibility push(default)
+
 namespace pulsar {
 class DeprecatedException : public std::runtime_error {
    public:
@@ -32,4 +34,6 @@ class DeprecatedException : public std::runtime_error {
 };
 }  // namespace pulsar
 
+#pragma GCC visibility pop
+
 #endif  // DEPRECATED_EXCEPTION_HPP_
diff --git a/pulsar-client-cpp/include/pulsar/TopicMetadata.h b/pulsar-client-cpp/include/pulsar/TopicMetadata.h
index fbfd92c7fe..6413e2b374 100644
--- a/pulsar-client-cpp/include/pulsar/TopicMetadata.h
+++ b/pulsar-client-cpp/include/pulsar/TopicMetadata.h
@@ -19,6 +19,8 @@
 #ifndef TOPIC_METADATA_HPP_
 #define TOPIC_METADATA_HPP_
 
+#pragma GCC visibility push(default)
+
 namespace pulsar {
 /**
  * Metadata of a topic that can be used for message routing.
@@ -29,4 +31,6 @@ class TopicMetadata {
 };
 }  // namespace pulsar
 
+#pragma GCC visibility pop
+
 #endif /* TOPIC_METADATA_HPP_ */
diff --git a/pulsar-client-cpp/include/pulsar/c/authentication.h b/pulsar-client-cpp/include/pulsar/c/authentication.h
index 6f405c2469..bd29d5f8f3 100644
--- a/pulsar-client-cpp/include/pulsar/c/authentication.h
+++ b/pulsar-client-cpp/include/pulsar/c/authentication.h
@@ -23,6 +23,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_authentication pulsar_authentication_t;
 
 pulsar_authentication_t *pulsar_authentication_create(const char *dynamicLibPath,
@@ -30,6 +32,8 @@ pulsar_authentication_t *pulsar_authentication_create(const char *dynamicLibPath
 
 void pulsar_authentication_free(pulsar_authentication_t *authentication);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/client.h b/pulsar-client-cpp/include/pulsar/c/client.h
index b8ef1ed1d8..2da7c6de92 100644
--- a/pulsar-client-cpp/include/pulsar/c/client.h
+++ b/pulsar-client-cpp/include/pulsar/c/client.h
@@ -34,6 +34,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_client pulsar_client_t;
 typedef struct _pulsar_producer pulsar_producer_t;
 
@@ -128,6 +130,8 @@ void pulsar_client_close_async(pulsar_client_t *client, pulsar_close_callback ca
 
 void pulsar_client_free(pulsar_client_t *client);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/client_configuration.h b/pulsar-client-cpp/include/pulsar/c/client_configuration.h
index 47f78dbbf8..7725e7cca8 100644
--- a/pulsar-client-cpp/include/pulsar/c/client_configuration.h
+++ b/pulsar-client-cpp/include/pulsar/c/client_configuration.h
@@ -23,6 +23,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_client_configuration pulsar_client_configuration_t;
 typedef struct _pulsar_authentication pulsar_authentication_t;
 
@@ -139,6 +141,8 @@ void pulsar_client_configuration_set_stats_interval_in_seconds(pulsar_client_con
 const unsigned int pulsar_client_configuration_get_stats_interval_in_seconds(
     pulsar_client_configuration_t *conf);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/pulsar-client-cpp/include/pulsar/c/consumer.h b/pulsar-client-cpp/include/pulsar/c/consumer.h
index 2917eea396..e3e683b173 100644
--- a/pulsar-client-cpp/include/pulsar/c/consumer.h
+++ b/pulsar-client-cpp/include/pulsar/c/consumer.h
@@ -27,6 +27,8 @@ extern "C" {
 
 #include <stdint.h>
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_consumer pulsar_consumer_t;
 
 typedef void (*pulsar_result_callback)(pulsar_result, void *);
@@ -190,6 +192,8 @@ pulsar_result resume_message_listener(pulsar_consumer_t *consumer);
  */
 void pulsar_consumer_redeliver_unacknowledged_messages(pulsar_consumer_t *consumer);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/pulsar-client-cpp/include/pulsar/c/consumer_configuration.h b/pulsar-client-cpp/include/pulsar/c/consumer_configuration.h
index 445e34e57b..fcefc970c0 100644
--- a/pulsar-client-cpp/include/pulsar/c/consumer_configuration.h
+++ b/pulsar-client-cpp/include/pulsar/c/consumer_configuration.h
@@ -22,6 +22,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_consumer_configuration pulsar_consumer_configuration_t;
 
 typedef enum {
@@ -159,6 +161,8 @@ int pulsar_consumer_is_encryption_enabled(pulsar_consumer_configuration_t *consu
 // setCryptoFailureAction(ConsumerCryptoFailureAction
 // action);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/pulsar-client-cpp/include/pulsar/c/message.h b/pulsar-client-cpp/include/pulsar/c/message.h
index 9645b02ed7..7c2fb9dce5 100644
--- a/pulsar-client-cpp/include/pulsar/c/message.h
+++ b/pulsar-client-cpp/include/pulsar/c/message.h
@@ -26,6 +26,8 @@ extern "C" {
 #include <stddef.h>
 #include <stdint.h>
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_message pulsar_message_t;
 typedef struct _pulsar_message_id pulsar_message_id_t;
 
@@ -163,6 +165,8 @@ uint64_t pulsar_message_get_publish_timestamp(pulsar_message_t *message);
  */
 uint64_t pulsar_message_get_event_timestamp(pulsar_message_t *message);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/message_id.h b/pulsar-client-cpp/include/pulsar/c/message_id.h
index 44d0c8fb0a..b31c15e568 100644
--- a/pulsar-client-cpp/include/pulsar/c/message_id.h
+++ b/pulsar-client-cpp/include/pulsar/c/message_id.h
@@ -26,6 +26,8 @@ extern "C" {
 #include <stddef.h>
 #include <stdint.h>
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_message_id pulsar_message_id_t;
 
 /**
@@ -52,6 +54,8 @@ char *pulsar_message_id_str(pulsar_message_id_t *messageId);
 
 void pulsar_message_id_free(pulsar_message_id_t *messageId);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/message_router.h b/pulsar-client-cpp/include/pulsar/c/message_router.h
index 07ff7a3dc0..a41ff5fcf0 100644
--- a/pulsar-client-cpp/include/pulsar/c/message_router.h
+++ b/pulsar-client-cpp/include/pulsar/c/message_router.h
@@ -25,6 +25,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_topic_metadata pulsar_topic_metadata_t;
 
 typedef int (*pulsar_message_router)(pulsar_message_t *msg, pulsar_topic_metadata_t *topicMetadata,
@@ -32,6 +34,8 @@ typedef int (*pulsar_message_router)(pulsar_message_t *msg, pulsar_topic_metadat
 
 int pulsar_topic_metadata_get_num_partitions(pulsar_topic_metadata_t *topicMetadata);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/producer.h b/pulsar-client-cpp/include/pulsar/c/producer.h
index 6b506b859e..752448a744 100644
--- a/pulsar-client-cpp/include/pulsar/c/producer.h
+++ b/pulsar-client-cpp/include/pulsar/c/producer.h
@@ -28,6 +28,8 @@ extern "C" {
 
 #include <stdint.h>
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_producer pulsar_producer_t;
 
 typedef void (*pulsar_send_callback)(pulsar_result, pulsar_message_t *msg, void *ctx);
@@ -114,6 +116,8 @@ void pulsar_producer_close_async(pulsar_producer_t *producer, pulsar_close_callb
 
 void pulsar_producer_free(pulsar_producer_t *producer);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/producer_configuration.h b/pulsar-client-cpp/include/pulsar/c/producer_configuration.h
index 636fe68c6d..ae88198f9a 100644
--- a/pulsar-client-cpp/include/pulsar/c/producer_configuration.h
+++ b/pulsar-client-cpp/include/pulsar/c/producer_configuration.h
@@ -27,6 +27,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef enum {
     pulsar_UseSinglePartition,
     pulsar_RoundRobinDistribution,
@@ -142,6 +144,8 @@ unsigned long pulsar_producer_configuration_get_batching_max_publish_delay_ms(
 // int isEncryptionEnabled() const;
 // ProducerConfiguration &addEncryptionKey(std::string key);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/pulsar-client-cpp/include/pulsar/c/reader.h b/pulsar-client-cpp/include/pulsar/c/reader.h
index 547bbf2b8b..72c02a6370 100644
--- a/pulsar-client-cpp/include/pulsar/c/reader.h
+++ b/pulsar-client-cpp/include/pulsar/c/reader.h
@@ -25,6 +25,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_reader pulsar_reader_t;
 
 typedef void (*pulsar_result_callback)(pulsar_result, void *);
@@ -64,6 +66,8 @@ void pulsar_reader_close_async(pulsar_reader_t *reader, pulsar_result_callback c
 
 void pulsar_reader_free(pulsar_reader_t *reader);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/pulsar-client-cpp/include/pulsar/c/reader_configuration.h b/pulsar-client-cpp/include/pulsar/c/reader_configuration.h
index c7aaf1482c..faac37c13e 100644
--- a/pulsar-client-cpp/include/pulsar/c/reader_configuration.h
+++ b/pulsar-client-cpp/include/pulsar/c/reader_configuration.h
@@ -23,6 +23,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef struct _pulsar_reader_configuration pulsar_reader_configuration_t;
 
 typedef void (*pulsar_reader_listener)(pulsar_reader_t *reader, pulsar_message_t *msg, void *ctx);
@@ -77,6 +79,8 @@ void pulsar_reader_configuration_set_subscription_role_prefix(pulsar_reader_conf
 const char *pulsar_reader_configuration_get_subscription_role_prefix(
     pulsar_reader_configuration_t *configuration);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/pulsar-client-cpp/include/pulsar/c/result.h b/pulsar-client-cpp/include/pulsar/c/result.h
index 0ca769db91..6733f285a6 100644
--- a/pulsar-client-cpp/include/pulsar/c/result.h
+++ b/pulsar-client-cpp/include/pulsar/c/result.h
@@ -23,6 +23,8 @@
 extern "C" {
 #endif
 
+#pragma GCC visibility push(default)
+
 typedef enum {
     pulsar_result_Ok,  /// Operation successful
 
@@ -76,6 +78,8 @@ typedef enum {
 // Return string representation of result code
 const char *pulsar_result_str(pulsar_result result);
 
+#pragma GCC visibility pop
+
 #ifdef __cplusplus
 }
 #endif


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services