From a65d09cbdab70b3bd639054f41b838789c497837 Mon Sep 17 00:00:00 2001
From: Raphael Defosseux <raphael.defosseux@eurecom.fr>
Date: Wed, 22 May 2019 12:08:42 +0200
Subject: [PATCH] CI: adding support to build for coverity-scan

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
---
 cmake_targets/build_oai          | 24 ++++++++++++++++++++++--
 cmake_targets/tools/build_helper |  9 +++++++--
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index a7ceb48758f..13c42424a49 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -58,6 +58,7 @@ CFLAGS_PROCESSOR_USER=""
 RUN_GROUP=0
 TEST_CASE_GROUP=""
 BUILD_DOXYGEN=0
+BUILD_COVERITY_SCAN=0
 T_TRACER="True"
 DISABLE_HARDWARE_DEPENDENCY="False"
 CMAKE_BUILD_TYPE=""
@@ -128,6 +129,8 @@ Options
    Manually Add CFLAGS of processor if they are not detected correctly by script. Only add these flags if you know your processor supports them. Example flags: -msse3 -msse4.1 -msse4.2 -mavx2
 --build-doxygen
    Builds doxygen based documentation.
+--build-coverity-scan
+   Builds Coverity-Scan objects for upload
 --disable-deadline
    Disables deadline scheduler of Linux kernel (>=3.14.x).
 --enable-deadline
@@ -277,6 +280,10 @@ function main() {
 	    BUILD_DOXYGEN=1
             echo_info "Will build doxygen support"
             shift;;     
+       --build-coverity-scan)
+           BUILD_COVERITY_SCAN=1
+            echo_info "Will build Coverity-Scan objects for upload"
+            shift;;
        --disable-deadline)
             FORCE_DEADLINE_SCHEDULER_FLAG_USER="False"
             echo_info "Disabling the usage of deadline scheduler"
@@ -307,7 +314,7 @@ function main() {
             shift 1;;
         --ue-timing)
             UE_TIMING_TRACE="True"
- x           echo_info "Enabling UE timing trace"
+            echo_info "Enabling UE timing trace"
             shift 1;;
         --uhd-images-dir)
             UHD_IMAGES_DIR=$2
@@ -345,7 +352,20 @@ function main() {
             break;;
    esac
   done
-  
+
+  #########################################################
+  # check if cov-build is installed
+  #########################################################
+  if [ "$BUILD_COVERITY_SCAN" == "1" ] ; then
+      echo_info "Checking cov-build is installed"
+      IS_INSTALLED=`which cov-build | grep -c cov-build || true`
+      if [ $IS_INSTALLED -eq 1 ] ; then
+          echo_info "Found cov-build"
+      else
+          echo_fatal "Did NOT find cov-build in PATH!"
+      fi
+  fi
+
   CMAKE_CMD="$CMAKE_CMD .."
   echo_info "CMAKE_CMD=$CMAKE_CMD"
   #########################################################
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 0021b673f2b..70fc28f825f 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -177,10 +177,15 @@ compilations() {
   set +e
   {
     rm -f $3
+    if [ "$BUILD_COVERITY_SCAN" == "1" ]; then
+        COV_SCAN_PREFIX="cov-build --dir cov-int"
+    else
+        COV_SCAN_PREFIX=""
+    fi
     if [ "$VERBOSE_COMPILE" == "1" ]; then
-       make -j`nproc` $2 VERBOSE=$VERBOSE_COMPILE
+       $COV_SCAN_PREFIX make -j`nproc` $2 VERBOSE=$VERBOSE_COMPILE
     else
-       make -j`nproc` $2
+       $COV_SCAN_PREFIX make -j`nproc` $2
     fi
 
   } > $dlog/$2.$REL.txt 2>&1
-- 
GitLab