Merge commit 'a862c7d3368241e72a465ab944afa38ea62a6640'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 6 Apr 2013 11:23:38 +0000 (13:23 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 6 Apr 2013 11:23:38 +0000 (13:23 +0200)
* commit 'a862c7d3368241e72a465ab944afa38ea62a6640':
  Integrate lcov/gcov into Libav

Conflicts:
Makefile
common.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
.gitignore
Makefile
configure
doc/developer.texi
tests/Makefile

diff --cc .gitignore
@@@ -3,9 -3,10 +3,11 @@@
  *.d
  *.def
  *.dll
 +*.dylib
  *.exe
  *.exp
+ *.gcda
+ *.gcno
  *.h.c
  *.ilk
  *.lib
  *.ver
  *-example
  *-test
 +*_g
  /.config
  /.version
 -/avconv
 -/avplay
 -/avprobe
 -/avserver
 +/ffmpeg
 +/ffplay
 +/ffprobe
 +/ffserver
  /config.*
+ /coverage.info
  /version.h
  /doc/*.1
 +/doc/*.3
  /doc/*.html
  /doc/*.pod
 +/doc/config.texi
  /doc/avoptions_codec.texi
  /doc/avoptions_format.texi
 +/doc/examples/decoding_encoding
 +/doc/examples/demuxing
 +/doc/examples/filtering_audio
 +/doc/examples/filtering_video
 +/doc/examples/metadata
 +/doc/examples/muxing
 +/doc/examples/pc-uninstalled
 +/doc/examples/resampling_audio
 +/doc/examples/scaling_video
 +/doc/fate.txt
  /doc/doxy/html/
  /doc/print_options
+ /lcov/
  /libavcodec/*_tablegen
  /libavcodec/*_tables.c
  /libavcodec/*_tables.h
diff --cc Makefile
+++ b/Makefile
@@@ -151,29 -185,19 +151,20 @@@ uninstall-data
        $(RM) -r "$(DATADIR)"
  
  clean::
 -      $(RM) $(ALLPROGS)
 +      $(RM) $(ALLPROGS) $(ALLPROGS_G)
        $(RM) $(CLEANSUFFIXES)
        $(RM) $(CLEANSUFFIXES:%=tools/%)
-       $(RM) coverage.info
 +      $(RM) -r coverage-html
+       $(RM) -rf coverage.info lcov
  
  distclean::
        $(RM) $(DISTCLEANSUFFIXES)
 -      $(RM) config.* .config libavutil/avconfig.h .version version.h
 +      $(RM) config.* .config libavutil/avconfig.h .version version.h libavcodec/codec_names.h
  
  config:
 -      $(SRC_PATH)/configure $(value LIBAV_CONFIGURATION)
 +      $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
  
- # Without the sed genthml thinks "libavutil" and "./libavutil" are two different things
- coverage.info: $(wildcard *.gcda *.gcno */*.gcda */*.gcno */*/*.gcda */*/*.gcno)
-       $(Q)lcov -c -d . -b . | sed -e 's#/./#/#g' > $@
- coverage-html: coverage.info
-       $(Q)mkdir -p $@
-       $(Q)genhtml -o $@ $<
-       $(Q)touch $@
 -check: all alltools checkheaders examples testprogs fate
 +check: all alltools examples testprogs fate
  
  include $(SRC_PATH)/doc/Makefile
  include $(SRC_PATH)/tests/Makefile
diff --cc configure
+++ b/configure
@@@ -309,14 -274,8 +309,13 @@@ Optimization options (experts only)
    --disable-vis            disable VIS optimizations
    --disable-inline-asm     disable use of inline assembler
    --disable-yasm           disable use of yasm assembler
 +  --disable-mips32r2       disable MIPS32R2 optimizations
 +  --disable-mipsdspr1      disable MIPS DSP ASE R1 optimizations
 +  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
 +  --disable-mipsfpu        disable floating point MIPS optimizations
 +  --disable-fast-unaligned consider unaligned accesses slow
  
 -Developer options (useful when working on Libav itself):
 +Developer options (useful when working on FFmpeg itself):
-   --enable-coverage        build with test coverage instrumentation
    --disable-debug          disable debugging symbols
    --enable-debug=LEVEL     set the debug level [$debuglevel]
    --disable-optimizations  disable compiler optimizations
@@@ -4113,12 -3665,7 +4115,11 @@@ enabled vdpau &
      check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
      disable vdpau
  
 +# Funny iconv installations are not unusual, so check it after all flags have been set
 +disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
 +
  enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
- enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
 +test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
  
  # add some useful compiler flags if supported
  check_cflags -Wdeclaration-after-statement
@@@ -546,40 -532,48 +546,64 @@@ After a patch is approved it will be co
  We will review all submitted patches, but sometimes we are quite busy so
  especially for large patches this can take several weeks.
  
 -When resubmitting patches, if their size grew or during the review different
 -issues arisen please split the patch so each issue has a specific patch.
 +If you feel that the review process is too slow and you are willing to try to
 +take over maintainership of the area of code you change then just clone
 +git master and maintain the area of code there. We will merge each area from
 +where its best maintained.
 +
 +When resubmitting patches, please do not make any significant changes
 +not related to the comments received during review. Such patches will
 +be rejected. Instead, submit significant changes or new features as
 +separate patches.
  
 -@anchor{Regression Tests}
 -@section Regression Tests
 +@anchor{Regression tests}
 +@section Regression tests
  
 -Before submitting a patch (or committing to the repository), you should at
 -least make sure that it does not break anything.
 +Before submitting a patch (or committing to the repository), you should at least
 +test that you did not break anything.
  
 -If the code changed has already a test present in FATE you should run it,
 -otherwise it is advised to add it.
 +Running 'make fate' accomplishes this, please see @url{fate.html} for details.
  
 -Improvements to codec or demuxer might change the FATE results. Make sure
 -to commit the update reference with the change and to explain in the comment
 -why the expected result changed.
 +[Of course, some patches may change the results of the regression tests. In
 +this case, the reference results of the regression tests shall be modified
 +accordingly].
 +
 +@subsection Adding files to the fate-suite dataset
 +
 +When there is no muxer or encoder available to generate test media for a
 +specific test then the media has to be inlcuded in the fate-suite.
 +First please make sure that the sample file is as small as possible to test the
 +respective decoder or demuxer sufficiently. Large files increase network
 +bandwidth and disk space requirements.
 +Once you have a working fate test and fate sample, provide in the commit
 +message or introductionary message for the patch series that you post to
 +the ffmpeg-devel mailing list, a direct link to download the sample media.
  
 -Please refer to @url{fate.html}.
  
 -The Libav build system allows visualizing the test coverage in an easy
+ @subsection Visualizing Test Coverage
 -    front-end tool provided by Libav, in any combination.
++The FFmpeg build system allows visualizing the test coverage in an easy
+ manner with the coverage tools @code{gcov}/@code{lcov}.  This involves
+ the following steps:
+ @enumerate
+ @item
+     Configure to compile with instrumentation enabled:
+     @code{configure --toolchain=gcov}.
+ @item
+     Run your test case, either manually or via FATE. This can be either
+     the full FATE regression suite, or any arbitrary invocation of any
++    front-end tool provided by FFmpeg, in any combination.
+ @item
+     Run @code{make lcov} to generate coverage data in HTML format.
+ @item
+     View @code{lcov/index.html} in your preferred HTML viewer.
+ @end enumerate
+ You can use the command @code{make lcov-reset} to reset the coverage
+ measurements. You will need to rerun @code{make lcov} after running a
+ new test.
  @anchor{Release process}
  @section Release process
  
diff --cc tests/Makefile
@@@ -160,6 -123,19 +160,19 @@@ $(FATE) $(FATE_TESTS-no): $(FATE_UTILS:
  fate-list:
        @printf '%s\n' $(sort $(FATE))
  
 -      $(M)lcov -d $(CURDIR) -b $(SRC_PATH) --capture -o $@
+ coverage.info: TAG = LCOV
+ coverage.info:
++      $(M)lcov -d $(CURDIR) -b $(SRC_PATH) --capture | sed -e 's#/./#/#g' > $@
+ lcov:  TAG = GENHTML
+ lcov: coverage.info
+       $(M)genhtml -o $(CURDIR)/lcov $<
+ lcov-reset: TAG = LCOV
+ lcov-reset:
+       $(M)lcov -d $(CURDIR) --zerocounters
+       $(Q)$(RM) -f coverage.info
  clean:: testclean
  
  testclean: