]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
do_cmake:sh: use newer gcc if available 47472/head
authorKefu Chai <tchaikov@gmail.com>
Fri, 5 Aug 2022 03:48:30 +0000 (11:48 +0800)
committerKefu Chai <tchaikov@gmail.com>
Fri, 5 Aug 2022 03:53:12 +0000 (11:53 +0800)
despite that we are using clang in `run-make-check.sh`, `do_cmake.sh`
is still used by some workflows like jenkins' ceph-pr-api job.
now that we've migrated to C++20, we need to use GCC-11 or up for
building the tree. GCC-11 is installed from PPA repo in
`install-deps.sh`, but to avoid interfere with the build of older
branches which do not use GCC-11, as their builds might break if
we use GCC-11 for building them. we don't use the alternative machinary
to point gcc to gcc-11, see 8f342a32ce4a236c45c67497ae34f508e032a9e1.

so, in this change, we try to use the newest GCC in system when
running `do_cmake.sh`.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
do_cmake.sh

index 3eb9b08d8afd95531e26aae2f954690afffd0c0d..7b4d9ddc6446c3527dfac10c04c43aa2fe1356ba 100755 (executable)
@@ -59,6 +59,19 @@ if type ccache > /dev/null 2>&1 ; then
     ARGS+=" -DWITH_CCACHE=ON"
 fi
 
+cxx_compiler="g++"
+c_compiler="gcc"
+# 20 is used for more future-proof
+for i in $(seq 20 -1 11); do
+  if type -t gcc-$i > /dev/null; then
+    cxx_compiler="g++-$i"
+    c_compiler="gcc-$i"
+    break
+  fi
+done
+ARGS+=" -DCMAKE_CXX_COMPILER=$cxx_compiler"
+ARGS+=" -DCMAKE_C_COMPILER=$c_compiler"
+
 mkdir $BUILD_DIR
 cd $BUILD_DIR
 if type cmake3 > /dev/null 2>&1 ; then