You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by if...@apache.org on 2021/03/28 01:30:28 UTC

[rocketmq-client-cpp] branch re_dev updated: fix: compatible with the old version of cmake

This is an automated email from the ASF dual-hosted git repository.

ifplusor pushed a commit to branch re_dev
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-cpp.git


The following commit(s) were added to refs/heads/re_dev by this push:
     new fcecc8d  fix: compatible with the old version of cmake
fcecc8d is described below

commit fcecc8dba97972d4c934b00cadc97a07406b563d
Author: James Yin <yw...@hotmail.com>
AuthorDate: Sun Mar 28 09:30:02 2021 +0800

    fix: compatible with the old version of cmake
---
 build.sh => build.compatible.sh | 167 +++++++++++++++++++---------------------
 build.sh                        |  32 +++++---
 2 files changed, 101 insertions(+), 98 deletions(-)

diff --git a/build.sh b/build.compatible.sh
similarity index 53%
copy from build.sh
copy to build.compatible.sh
index 9d7967b..4427f26 100755
--- a/build.sh
+++ b/build.compatible.sh
@@ -18,20 +18,19 @@
 set -e
 
 basepath=$(
-  cd $(dirname "$0")
+  cd $(dirname $0)
   pwd
 )
 down_dir="${basepath}/tmp_down_dir"
 build_dir="${basepath}/tmp_build_dir"
+packet_dir="${basepath}/tmp_packet_dir"
 install_lib_dir="${basepath}/bin"
 fname_spdlog="spdlog*.zip"
 fname_libevent="libevent*.zip"
 fname_jsoncpp="jsoncpp*.zip"
-fname_gtest="googletest*.tar.gz"
 fname_spdlog_down="v1.5.0.zip"
 fname_libevent_down="release-2.1.11-stable.zip"
 fname_jsoncpp_down="0.10.6.zip"
-fname_gtest_down="release-1.10.0.tar.gz"
 
 PrintParams() {
   echo "=========================================one key build help============================================"
@@ -74,7 +73,7 @@ pasres_arguments() {
   done
 
 }
-pasres_arguments "$@"
+pasres_arguments $@
 
 PrintParams() {
   echo "###########################################################################"
@@ -118,40 +117,42 @@ PrintParams() {
 }
 
 Prepare() {
-  cd "${basepath}"
-
-  if [ -e "${down_dir}" ]; then
+  if [ -e ${down_dir} ]; then
     echo "${down_dir} is exist"
   else
-    mkdir -p "${down_dir}"
+    mkdir -p ${down_dir}
   fi
 
+  cd ${basepath}
+
   if [ -e ${fname_spdlog} ]; then
-    mv -f ${basepath}/${fname_spdlog} "${down_dir}"
+    mv -f ${basepath}/${fname_spdlog} ${down_dir}
   fi
 
   if [ -e ${fname_libevent} ]; then
-    mv -f ${basepath}/${fname_libevent} "${down_dir}"
+    mv -f ${basepath}/${fname_libevent} ${down_dir}
   fi
 
   if [ -e ${fname_jsoncpp} ]; then
-    mv -f ${basepath}/${fname_jsoncpp} "${down_dir}"
-  fi
-  
-  if [ -e ${fname_gtest} ]; then
-    mv -f ${basepath}/${fname_gtest} "${down_dir}"
+    mv -f ${basepath}/${fname_jsoncpp} ${down_dir}
   fi
 
-  if [ -e "${build_dir}" ]; then
+  if [ -e ${build_dir} ]; then
     echo "${build_dir} is exist"
   else
-    mkdir -p "${build_dir}"
+    mkdir -p ${build_dir}
   fi
 
-  if [ -e "${install_lib_dir}" ]; then
+  if [ -e ${packet_dir} ]; then
+    echo "${packet_dir} is exist"
+  else
+    mkdir -p ${packet_dir}
+  fi
+
+  if [ -e ${install_lib_dir} ]; then
     echo "${install_lib_dir} is exist"
   else
-    mkdir -p "${install_lib_dir}"
+    mkdir -p ${install_lib_dir}
   fi
 }
 
@@ -161,21 +162,17 @@ BuildSpdlog() {
     return 0
   fi
 
-  if [ -d "${basepath}/bin/include/spdlog" ]; then
-    echo "spdlog already exist no need build test"
-    return 0
-  fi
-
-  if [ -e ${down_dir}/${fname_spdlog} ]; then
+  cd ${down_dir}
+  if [ -e ${fname_spdlog} ]; then
     echo "${fname_spdlog} is exist"
   else
-    wget "https://github.com/gabime/spdlog/archive/${fname_spdlog_down}" -O "${down_dir}/spdlog-${fname_spdlog_down}"
+    wget https://github.com/gabime/spdlog/archive/${fname_spdlog_down} -O spdlog-${fname_spdlog_down}
   fi
-  unzip -o ${down_dir}/${fname_spdlog} -d "${down_dir}" > "${down_dir}/unzipspdlog.txt" 2>&1
-
-  spdlog_dir=$(ls -d ${down_dir}/spdlog* | grep -v zip)
+  unzip -o ${fname_spdlog} >unzipspdlog.txt 2>&1
 
-  cp -r "${spdlog_dir}/include" "${install_lib_dir}"
+  spdlog_dir=$(ls | grep spdlog | grep .*[^zip]$)
+  cd ${spdlog_dir}
+  cp -r include ${install_lib_dir}
 
   echo "build spdlog success."
 }
@@ -186,37 +183,30 @@ BuildLibevent() {
     return 0
   fi
 
-  if [ -d "${basepath}/bin/include/event2" ]; then
-    echo "spdlog already exist no need build test"
-    return 0
-  fi
-
-  if [ -e ${down_dir}/${fname_libevent} ]; then
+  cd ${down_dir}
+  if [ -e ${fname_libevent} ]; then
     echo "${fname_libevent} is exist"
   else
-    wget "https://github.com/libevent/libevent/archive/${fname_libevent_down}" -O "${down_dir}/libevent-${fname_libevent_down}"
+    wget https://github.com/libevent/libevent/archive/${fname_libevent_down} -O libevent-${fname_libevent_down}
   fi
-  unzip -o ${down_dir}/${fname_libevent} -d "${down_dir}" > "${down_dir}/unziplibevent.txt" 2>&1
-
-  libevent_dir=$(ls -d ${down_dir}/libevent* | grep -v zip)
+  unzip -o ${fname_libevent} >unziplibevent.txt 2>&1
 
-  echo "build libevent static #####################"
-  pushd "${libevent_dir}"
+  libevent_dir=$(ls | grep libevent | grep .*[^zip]$)
+  cd ${libevent_dir}
   ./autogen.sh
+  echo "build libevent static #####################"
   if [ $verbose -eq 0 ]; then
-    ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix="${install_lib_dir}" >libeventconfig.txt 2>&1
+    ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix=${install_lib_dir} >libeventconfig.txt 2>&1
   else
-    ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix="${install_lib_dir}"
+    ./configure --disable-openssl --enable-static=yes --enable-shared=no CFLAGS=-fPIC CPPFLAGS=-fPIC --prefix=${install_lib_dir}
   fi
   if [ $verbose -eq 0 ]; then
     echo "build libevent without detail log."
-    make -j $cpu_num > "${down_dir}/libeventbuild.txt" 2>&1
+    make -j $cpu_num >libeventbuild.txt 2>&1
   else
     make -j $cpu_num
   fi
   make install
-  popd
-
   echo "build libevent success."
 }
 
@@ -226,59 +216,57 @@ BuildJsonCPP() {
     return 0
   fi
 
-  if [ -d "${basepath}/bin/include/jsoncpp" ]; then
-    echo "jsoncpp already exist no need build test"
-    return 0
-  fi
+  cd ${down_dir}
 
-  if [ -e ${down_dir}/${fname_jsoncpp} ]; then
+  if [ -e ${fname_jsoncpp} ]; then
     echo "${fname_jsoncpp} is exist"
   else
-    wget "https://github.com/open-source-parsers/jsoncpp/archive/${fname_jsoncpp_down}" -O "${down_dir}/jsoncpp-${fname_jsoncpp_down}"
+    wget https://github.com/open-source-parsers/jsoncpp/archive/${fname_jsoncpp_down} -O jsoncpp-${fname_jsoncpp_down}
   fi
-  unzip -o ${down_dir}/${fname_jsoncpp} -d "${down_dir}" > "${down_dir}/unzipjsoncpp.txt" 2>&1
-
-  jsoncpp_dir=$(ls -d ${down_dir}/jsoncpp* | grep -v zip)
-
+  unzip -o ${fname_jsoncpp} >unzipjsoncpp.txt 2>&1
+  jsoncpp_dir=$(ls | grep ^jsoncpp | grep .*[^zip]$)
+  cd ${jsoncpp_dir}
+  mkdir build
+  cd build
   echo "build jsoncpp static ######################"
   if [ $verbose -eq 0 ]; then
     echo "build jsoncpp without detail log."
-    cmake -S "${jsoncpp_dir}" -B "${jsoncpp_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}" >jsoncppbuild.txt 2>&1
+    cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir} >jsoncppbuild.txt 2>&1
   else
-    cmake -S "${jsoncpp_dir}" -B "${jsoncpp_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}"
+    cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
   fi
   if [ $verbose -eq 0 ]; then
-    cmake --build "${jsoncpp_dir}/build" -j $cpu_num > "${down_dir}/jsoncppbuild.txt" 2>&1
+    make -j $cpu_num >jsoncppbuild.txt 2>&1
   else
-    cmake --build "${jsoncpp_dir}/build" -j $cpu_num
+    make -j $cpu_num
   fi
-  cmake --install "${jsoncpp_dir}/build"
-  if [ ! -f "${install_lib_dir}/lib/libjsoncpp.a" ]; then
+  make install
+  echo "build jsoncpp success."
+  if [ ! -f ${install_lib_dir}/lib/libjsoncpp.a ]; then
     echo " ./bin/lib directory is not libjsoncpp.a"
-    cp "${install_lib_dir}/lib/x86_64-linux-gnu/libjsoncpp.a" "${install_lib_dir}/lib/"
+    cp ${install_lib_dir}/lib/x86_64-linux-gnu/libjsoncpp.a ${install_lib_dir}/lib/
   fi
-
-  echo "build jsoncpp success."
 }
 
 BuildRocketMQClient() {
+  cd ${build_dir}
   echo "============start to build rocketmq client cpp.========="
   if [ $test -eq 0 ]; then
-    cmake -S "${basepath}" -B "${build_dir}" -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF
+    cmake -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF ..
   else
     if [ $codecov -eq 1 ]; then
-      cmake -S "${basepath}" -B "${build_dir}" -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF -DRUN_UNIT_TEST=ON -DCODE_COVERAGE=ON
+      cmake .. -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF -DRUN_UNIT_TEST=ON -DCODE_COVERAGE=ON
     else
-      cmake -S "${basepath}" -B "${build_dir}" -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF -DRUN_UNIT_TEST=ON
+      cmake .. -DLibevent_USE_STATIC_LIBS=ON -DJSONCPP_USE_STATIC_LIBS=ON -DBUILD_ROCKETMQ_STATIC=ON -DBUILD_ROCKETMQ_SHARED=OFF -DRUN_UNIT_TEST=ON
     fi
   fi
   if [ $verbose -eq 0 ]; then
     echo "build rocketmq without detail log."
-    cmake --build "${build_dir}" -j $cpu_num > "${build_dir}/buildclient.txt" 2>&1
+    make -j $cpu_num >buildclient.txt 2>&1
   else
-    cmake --build "${build_dir}" -j $cpu_num
+    make -j $cpu_num
   fi
-  #sudo cmake --install "${build_dir}"
+  #sudo make install
 }
 
 BuildGoogleTest() {
@@ -287,37 +275,40 @@ BuildGoogleTest() {
     return 0
   fi
 
-  if [ -f "${install_lib_dir}/lib/libgtest.a" ]; then
+  if [ -f ./bin/lib/libgtest.a ]; then
     echo "libgtest already exist no need build test"
     return 0
   fi
 
-  if [ -e ${down_dir}/${fname_gtest} ]; then
-    echo "${fname_gtest} is exist"
+  cd ${down_dir}
+  if [ -e release-1.10.0.tar.gz ]; then
+    echo "${fname_boost} is exist"
   else
-    wget "https://github.com/abseil/googletest/archive/${fname_gtest_down}" -O "${down_dir}/googletest-${fname_gtest_down}"
+    wget https://github.com/abseil/googletest/archive/release-1.10.0.tar.gz
   fi
-  tar -zxvf ${down_dir}/${fname_gtest} -C "${down_dir}" > "${down_dir}/unzipgtest.txt" 2>&1
-
-  gtest_dir=$(ls -d ${down_dir}/googletest* | grep -v tar)
-
+  if [ ! -d "googletest-release-1.10.0" ]; then
+    tar -zxvf release-1.10.0.tar.gz >googletest.txt 2>&1
+  fi
+  cd googletest-release-1.10.0
+  mkdir build
+  cd build
   echo "build googletest static #####################"
   if [ $verbose -eq 0 ]; then
     echo "build googletest without detail log."
-    cmake -S "${gtest_dir}" -B "${gtest_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}" > "${down_dir}/googletestbuild.txt" 2>&1
+    cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir} >googletestbuild.txt 2>&1
   else
-    cmake -S "${gtest_dir}" -B "${gtest_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}"
+    cmake .. -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${install_lib_dir}
   fi
   if [ $verbose -eq 0 ]; then
-    cmake --build "${gtest_dir}/build" -j $cpu_num > "${down_dir}/gtestbuild.txt" 2>&1
+    make -j $cpu_num >gtestbuild.txt 2>&1
   else
-    cmake --build "${gtest_dir}/build" -j $cpu_num
+    make -j $cpu_num
   fi
-  cmake --install "${gtest_dir}/build"
+  make install
 
-  if [ ! -f "${install_lib_dir}/lib/libgtest.a" ]; then
+  if [ ! -f ${install_lib_dir}/lib/libgtest.a ]; then
     echo " ./bin/lib directory is not libgtest.a"
-    cp ${install_lib_dir}/lib64/lib* "${install_lib_dir}/lib"
+    cp ${install_lib_dir}/lib64/lib* ${install_lib_dir}/lib
   fi
 }
 
@@ -327,7 +318,7 @@ ExecutionTesting() {
     return 0
   fi
   echo "############# unit test  start  ###########"
-  cd "${build_dir}"
+  cd ${build_dir}
   if [ $verbose -eq 0 ]; then
     ctest
   else
diff --git a/build.sh b/build.sh
index 9d7967b..ed7a1cb 100755
--- a/build.sh
+++ b/build.sh
@@ -21,6 +21,18 @@ basepath=$(
   cd $(dirname "$0")
   pwd
 )
+
+function version_lt() {
+  test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$2"
+}
+
+cmake_version=$(cmake --version | head -n 1 | awk '{ print $3; }')
+if version_lt "${cmake_version}" "3.15"; then
+  # shellcheck source=build.compatible.sh
+  "${basepath}/build.compatible.sh"
+  exit 0
+fi
+
 down_dir="${basepath}/tmp_down_dir"
 build_dir="${basepath}/tmp_build_dir"
 install_lib_dir="${basepath}/bin"
@@ -137,7 +149,7 @@ Prepare() {
   if [ -e ${fname_jsoncpp} ]; then
     mv -f ${basepath}/${fname_jsoncpp} "${down_dir}"
   fi
-  
+
   if [ -e ${fname_gtest} ]; then
     mv -f ${basepath}/${fname_gtest} "${down_dir}"
   fi
@@ -171,7 +183,7 @@ BuildSpdlog() {
   else
     wget "https://github.com/gabime/spdlog/archive/${fname_spdlog_down}" -O "${down_dir}/spdlog-${fname_spdlog_down}"
   fi
-  unzip -o ${down_dir}/${fname_spdlog} -d "${down_dir}" > "${down_dir}/unzipspdlog.txt" 2>&1
+  unzip -o ${down_dir}/${fname_spdlog} -d "${down_dir}" >"${down_dir}/unzipspdlog.txt" 2>&1
 
   spdlog_dir=$(ls -d ${down_dir}/spdlog* | grep -v zip)
 
@@ -196,7 +208,7 @@ BuildLibevent() {
   else
     wget "https://github.com/libevent/libevent/archive/${fname_libevent_down}" -O "${down_dir}/libevent-${fname_libevent_down}"
   fi
-  unzip -o ${down_dir}/${fname_libevent} -d "${down_dir}" > "${down_dir}/unziplibevent.txt" 2>&1
+  unzip -o ${down_dir}/${fname_libevent} -d "${down_dir}" >"${down_dir}/unziplibevent.txt" 2>&1
 
   libevent_dir=$(ls -d ${down_dir}/libevent* | grep -v zip)
 
@@ -210,7 +222,7 @@ BuildLibevent() {
   fi
   if [ $verbose -eq 0 ]; then
     echo "build libevent without detail log."
-    make -j $cpu_num > "${down_dir}/libeventbuild.txt" 2>&1
+    make -j $cpu_num >"${down_dir}/libeventbuild.txt" 2>&1
   else
     make -j $cpu_num
   fi
@@ -236,7 +248,7 @@ BuildJsonCPP() {
   else
     wget "https://github.com/open-source-parsers/jsoncpp/archive/${fname_jsoncpp_down}" -O "${down_dir}/jsoncpp-${fname_jsoncpp_down}"
   fi
-  unzip -o ${down_dir}/${fname_jsoncpp} -d "${down_dir}" > "${down_dir}/unzipjsoncpp.txt" 2>&1
+  unzip -o ${down_dir}/${fname_jsoncpp} -d "${down_dir}" >"${down_dir}/unzipjsoncpp.txt" 2>&1
 
   jsoncpp_dir=$(ls -d ${down_dir}/jsoncpp* | grep -v zip)
 
@@ -248,7 +260,7 @@ BuildJsonCPP() {
     cmake -S "${jsoncpp_dir}" -B "${jsoncpp_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}"
   fi
   if [ $verbose -eq 0 ]; then
-    cmake --build "${jsoncpp_dir}/build" -j $cpu_num > "${down_dir}/jsoncppbuild.txt" 2>&1
+    cmake --build "${jsoncpp_dir}/build" -j $cpu_num >"${down_dir}/jsoncppbuild.txt" 2>&1
   else
     cmake --build "${jsoncpp_dir}/build" -j $cpu_num
   fi
@@ -274,7 +286,7 @@ BuildRocketMQClient() {
   fi
   if [ $verbose -eq 0 ]; then
     echo "build rocketmq without detail log."
-    cmake --build "${build_dir}" -j $cpu_num > "${build_dir}/buildclient.txt" 2>&1
+    cmake --build "${build_dir}" -j $cpu_num >"${build_dir}/buildclient.txt" 2>&1
   else
     cmake --build "${build_dir}" -j $cpu_num
   fi
@@ -297,19 +309,19 @@ BuildGoogleTest() {
   else
     wget "https://github.com/abseil/googletest/archive/${fname_gtest_down}" -O "${down_dir}/googletest-${fname_gtest_down}"
   fi
-  tar -zxvf ${down_dir}/${fname_gtest} -C "${down_dir}" > "${down_dir}/unzipgtest.txt" 2>&1
+  tar -zxvf ${down_dir}/${fname_gtest} -C "${down_dir}" >"${down_dir}/unzipgtest.txt" 2>&1
 
   gtest_dir=$(ls -d ${down_dir}/googletest* | grep -v tar)
 
   echo "build googletest static #####################"
   if [ $verbose -eq 0 ]; then
     echo "build googletest without detail log."
-    cmake -S "${gtest_dir}" -B "${gtest_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}" > "${down_dir}/googletestbuild.txt" 2>&1
+    cmake -S "${gtest_dir}" -B "${gtest_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}" >"${down_dir}/googletestbuild.txt" 2>&1
   else
     cmake -S "${gtest_dir}" -B "${gtest_dir}/build" -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="${install_lib_dir}"
   fi
   if [ $verbose -eq 0 ]; then
-    cmake --build "${gtest_dir}/build" -j $cpu_num > "${down_dir}/gtestbuild.txt" 2>&1
+    cmake --build "${gtest_dir}/build" -j $cpu_num >"${down_dir}/gtestbuild.txt" 2>&1
   else
     cmake --build "${gtest_dir}/build" -j $cpu_num
   fi