You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by li...@apache.org on 2022/09/20 14:17:43 UTC
[rocketmq-clients] 01/01: Prepare to build binary package
This is an automated email from the ASF dual-hosted git repository.
lizhanhui pushed a commit to branch cmake_package
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit a8ed15fc35d75b5dc7c1f9565c8db1f5a66cd305
Author: lizhanhui <li...@gmail.com>
AuthorDate: Tue Sep 20 22:17:10 2022 +0800
Prepare to build binary package
---
cpp/examples/Makefile | 16 ++++++++++++++++
cpp/source/CMakeLists.txt | 11 +++++++++--
cpp/source/rocketmq/rocketmq.lds | 9 +++++++++
cpp/tools/package.sh | 36 ++++++++++++++++++++++++++++++++++++
4 files changed, 70 insertions(+), 2 deletions(-)
diff --git a/cpp/examples/Makefile b/cpp/examples/Makefile
new file mode 100644
index 0000000..31773fb
--- /dev/null
+++ b/cpp/examples/Makefile
@@ -0,0 +1,16 @@
+all: $(wildcard *.cpp)
+ c++ -std=c++11 -I../include -L../lib ExampleProducer.cpp -o example_producer -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExamplePushConsumer.cpp -o example_push_consumer -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExampleProducerWithAsync.cpp -o example_producer_with_async -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExampleProducerWithFifoMessage.cpp -o example_producer_with_fifo_message -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExampleProducerWithTimedMessage.cpp -o example_producer_with_timed_message -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExampleProducerWithTransactionalMessage.cpp.cpp -o example_producer_with_transactinoal_message -lrocketmq -Wl,-rpath,../lib
+ c++ -std=c++11 -I../include -L../lib ExampleSimpleConsumer.cpp -o example_simple_consumer -lrocketmq -Wl,-rpath,../lib
+clean:
+ rm -fr example_producer
+ rm -fr example_push_consumer
+ rm -fr example_producer_with_async
+ rm -fr example_producer_with_fifo_message
+ rm -fr example_producer_with_timed_message
+ rm -fr example_producer_with_transactinoal_message
+ rm -fr example_simple_consumer
\ No newline at end of file
diff --git a/cpp/source/CMakeLists.txt b/cpp/source/CMakeLists.txt
index d42c6a1..32e7466 100644
--- a/cpp/source/CMakeLists.txt
+++ b/cpp/source/CMakeLists.txt
@@ -29,7 +29,9 @@ target_link_libraries(rocketmq
opencensus::stats
opencensus_proto
spdlog)
-set_target_properties(rocketmq PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+set_target_properties(rocketmq
+ PROPERTIES
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
add_library(rocketmq_shared SHARED
@@ -53,7 +55,12 @@ target_link_libraries(rocketmq_shared
opencensus::stats
opencensus_proto
spdlog)
+target_link_options(rocketmq_shared
+ PRIVATE
+ $<$<PLATFORM_ID:Linux>:-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/rocketmq/rocketmq.lds>)
set_target_properties(rocketmq_shared
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
- LIBRARY_OUTPUT_NAME rocketmq)
\ No newline at end of file
+ LIBRARY_OUTPUT_NAME rocketmq
+ VERSION 5.0.0
+ SOVERSION 5)
\ No newline at end of file
diff --git a/cpp/source/rocketmq/rocketmq.lds b/cpp/source/rocketmq/rocketmq.lds
new file mode 100644
index 0000000..80ff8dc
--- /dev/null
+++ b/cpp/source/rocketmq/rocketmq.lds
@@ -0,0 +1,9 @@
+VERSION_5.0.0 {
+ global:
+ *rocketmq::*;
+ extern "C++" {
+ *rocketmq::*;
+ };
+ local:
+ *;
+};
\ No newline at end of file
diff --git a/cpp/tools/package.sh b/cpp/tools/package.sh
new file mode 100644
index 0000000..640d9ec
--- /dev/null
+++ b/cpp/tools/package.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+TOOLS_DIR=$(dirname "$0")
+WORKSPACE=$(cd -- "$TOOLS_DIR/.." && pwd)
+BUILD_DIR=$WORKSPACE/_build
+if [ -d $BUILD_DIR ]; then
+ rm -fr $BUILD_DIR
+fi
+
+mkdir -p "$BUILD_DIR"
+
+cd $BUILD_DIR
+cmake -DCMAKE_BUILD_TYPE=Release ..
+make -j $(nproc)
+VERSION="rocketmq-client-5.0.0"
+DIST_DIR="$WORKSPACE/$VERSION/"
+if [ -d "$DIST_DIR" ]; then
+ rm -fr $DIST_DIR
+fi
+
+mkdir -p "$DIST_DIR/include"
+mkdir -p "$DIST_DIR/lib"
+mkdir -p "$DIST_DIR/examples"
+
+cp -r $WORKSPACE/include/rocketmq $DIST_DIR/include/
+cp $WORKSPACE/examples/*.cpp $DIST_DIR/examples/
+cp $WORKSPACE/examples/Makefile $DIST_DIR/examples/
+
+if [[ "$OSTYPE" == "linux-gnu"* ]]; then
+ cp $BUILD_DIR/librocketmq.so $DIST_DIR/lib/
+elif [[ "$OSTYPE" == "darwin"* ]]; then
+ cp $BUILD_DIR/librocketmq.dylib $DIST_DIR/lib/
+fi
+
+echo "Create Package"
+cd "$WORKSPACE"
+tar -czvf "$VERSION.tar.gz" "$VERSION"