Wed, 27 Dec 2023 16:16:11 +0100
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>