add coverage feature - relates to #342

Wed, 27 Dec 2023 16:16:11 +0100

author
Mike Becker <universe@uap-core.de>
date
Wed, 27 Dec 2023 16:16:11 +0100
changeset 772
4586a84c0c0b
parent 771
1c7202701bd6
child 773
bbf2f18b3818

add coverage feature - relates to #342

Note: this is currently not checking the availability of the compiler flags.

configure file | annotate | diff | comparison | revisions
make/project.xml file | annotate | diff | comparison | revisions
     1.1 --- a/configure	Wed Dec 27 16:07:45 2023 +0100
     1.2 +++ b/configure	Wed Dec 27 16:16:11 2023 +0100
     1.3 @@ -77,6 +77,9 @@
     1.4    --release               add extra compile flags for release builds
     1.5    --with-docs=(all|html|api|none)
     1.6  
     1.7 +Optional Features:
     1.8 +  --enable-coverage
     1.9 +
    1.10  __EOF__
    1.11  }
    1.12  
    1.13 @@ -106,6 +109,8 @@
    1.14          "--debug")           BUILD_TYPE="debug" ;;
    1.15          "--release")         BUILD_TYPE="release" ;;
    1.16          "--with-docs="*) OPT_WITH_DOCS=${ARG#--with-docs=} ;;
    1.17 +        "--enable-coverage") FEATURE_COVERAGE=on ;;
    1.18 +        "--disable-coverage") unset FEATURE_COVERAGE ;;
    1.19          "-"*) echo "unknown option: $ARG"; abort_configure ;;
    1.20      esac
    1.21  done
    1.22 @@ -251,6 +256,21 @@
    1.23      return 0
    1.24  }
    1.25  
    1.26 +dependency_error_coverage()
    1.27 +{
    1.28 +    printf "checking for coverage... "
    1.29 +    # dependency coverage
    1.30 +    while true
    1.31 +    do
    1.32 +        TEMP_CFLAGS="$TEMP_CFLAGS --coverage"
    1.33 +        TEMP_LDFLAGS="$TEMP_LDFLAGS --coverage"
    1.34 +        echo yes
    1.35 +        return 1
    1.36 +    done
    1.37 +
    1.38 +    echo no
    1.39 +    return 0
    1.40 +}
    1.41  dependency_error_pandoc()
    1.42  {
    1.43      printf "checking for pandoc... "
    1.44 @@ -511,6 +531,21 @@
    1.45  fi
    1.46  
    1.47  # Features
    1.48 +if [ -n "$FEATURE_COVERAGE" ]; then
    1.49 +    # check dependency
    1.50 +    if dependency_error_coverage ; then
    1.51 +        # "auto" features can fail and are just disabled in this case
    1.52 +        if [ "$FEATURE_COVERAGE" = "auto" ]; then
    1.53 +            DISABLE_FEATURE_COVERAGE=1
    1.54 +        else
    1.55 +            DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED coverage "
    1.56 +            ERROR=1
    1.57 +        fi
    1.58 +    fi
    1.59 +    if [ -n "$DISABLE_FEATURE_COVERAGE" ]; then
    1.60 +        unset FEATURE_COVERAGE
    1.61 +    fi
    1.62 +fi
    1.63  
    1.64  # Option: --with-docs
    1.65  if [ -z "$OPT_WITH_DOCS" ]; then
    1.66 @@ -629,6 +664,12 @@
    1.67  echo "  TOOLCHAIN:   $TOOLCHAIN_NAME"
    1.68  echo "Options:"
    1.69  cat "$TEMP_DIR/options"
    1.70 +echo "Features:"
    1.71 +if [ -n "$FEATURE_COVERAGE" ]; then
    1.72 +echo "  coverage: on"
    1.73 +else
    1.74 +echo "  coverage: off"
    1.75 +fi
    1.76  echo
    1.77  
    1.78  # generate the config.mk file
     2.1 --- a/make/project.xml	Wed Dec 27 16:07:45 2023 +0100
     2.2 +++ b/make/project.xml	Wed Dec 27 16:16:11 2023 +0100
     2.3 @@ -68,6 +68,11 @@
     2.4  	<dependency name="pandoc">
     2.5  		<test>test -n "$PANDOC"</test>
     2.6  	</dependency>
     2.7 +
     2.8 +	<dependency name="coverage">
     2.9 +		<cflags>--coverage</cflags>
    2.10 +		<ldflags>--coverage</ldflags>
    2.11 +	</dependency>
    2.12  	
    2.13  	<target>
    2.14  		<option arg="with-docs">
    2.15 @@ -99,6 +104,9 @@
    2.16  			<default value="api"/>
    2.17  			<default value="none"/>
    2.18  		</option>
    2.19 +		<feature name="coverage">
    2.20 +			<dependencies>coverage</dependencies>
    2.21 +		</feature>
    2.22  		<dependencies>c,file-tools</dependencies>
    2.23  	</target>
    2.24  </project>

mercurial