mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-08 13:18:52 +00:00
Original commit message from CVS: * configure.ac: Add checks for poll, ppoll and pselect. * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: Add docs for GstPoll. * gst/Makefile.am: * gst/gst.h: * gst/gstpoll.c: (find_index), (selectable_fds), (pollable_timeout), (choose_mode), (pollfd_to_fd_set), (fd_set_to_pollfd), (gst_poll_new), (gst_poll_free), (gst_poll_set_mode), (gst_poll_get_mode), (gst_poll_add_fd_unlocked), (gst_poll_add_fd), (gst_poll_remove_fd), (gst_poll_fd_ctl_write), (gst_poll_fd_ctl_read_unlocked), (gst_poll_fd_ctl_read), (gst_poll_fd_has_closed), (gst_poll_fd_has_error), (gst_poll_fd_can_read_unlocked), (gst_poll_fd_can_read), (gst_poll_fd_can_write), (gst_poll_wait), (gst_poll_set_controllable), (gst_poll_restart), (gst_poll_set_flushing): * gst/gstpoll.h: Add generic poll abstraction. We ideally don't want to have this in core here but in glib intead... This code will be used in various network elements and ultimately for the nanosecond precision monotonic clock (that's why it's here in core). It'll allow us to implement cancelable socket operations for windows too. * tests/check/Makefile.am: * tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST), (delayed_stop), (delayed_restart), (delayed_flush), (delayed_control), (gst_poll_suite): Add GstPoll unit test.
239 lines
6.2 KiB
Makefile
239 lines
6.2 KiB
Makefile
include $(top_srcdir)/common/check.mak
|
|
|
|
CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
|
|
|
|
GST_TOOLS_DIR = $(top_builddir)/tools
|
|
|
|
REGISTRY_ENVIRONMENT = \
|
|
GST_REGISTRY=$(CHECK_REGISTRY)
|
|
|
|
TESTS_ENVIRONMENT = \
|
|
STATE_IGNORE_ELEMENTS="$(STATE_IGNORE_ELEMENTS)" \
|
|
$(REGISTRY_ENVIRONMENT) \
|
|
GST_PLUGIN_SYSTEM_PATH= \
|
|
GST_PLUGIN_PATH=$(top_builddir)/plugins
|
|
|
|
plugindir = $(libdir)/gstreamer-@GST_MAJORMINOR@
|
|
|
|
# override to _not_ install the test plugins
|
|
install-pluginLTLIBRARIES:
|
|
|
|
# the core dumps of some machines have PIDs appended, test registry and
|
|
# profiling data
|
|
CLEANFILES = core core.* test-registry.* *.gcno *.gcda
|
|
|
|
SUPPRESSIONS = $(top_srcdir)/common/gst.supp
|
|
|
|
clean-local: clean-local-check
|
|
|
|
if GST_DISABLE_PARSE
|
|
PARSE_CHECKS = pipelines/parse-disabled
|
|
else
|
|
PARSE_CHECKS = pipelines/simple-launch-lines pipelines/cleanup pipelines/parse-launch
|
|
endif
|
|
|
|
if GST_DISABLE_LOADSAVE
|
|
LOADSAVE_CHECKS =
|
|
else
|
|
LOADSAVE_CHECKS = gst/gstxml
|
|
endif
|
|
|
|
# if it's calling gst_element_factory_make(), it will probably not work without
|
|
# a registry
|
|
if GST_DISABLE_REGISTRY
|
|
REGISTRY_CHECKS =
|
|
else
|
|
REGISTRY_CHECKS = \
|
|
gst/gst \
|
|
gst/gstbin \
|
|
gst/gstelement \
|
|
gst/gstevent \
|
|
gst/gstghostpad \
|
|
gst/gstplugin \
|
|
gst/gstquery \
|
|
gst/gstregistry \
|
|
gst/gsturi \
|
|
gst/gstutils \
|
|
generic/sinks \
|
|
elements/fakesink \
|
|
elements/fakesrc \
|
|
elements/fdsrc \
|
|
elements/filesink \
|
|
elements/filesrc \
|
|
elements/identity \
|
|
elements/multiqueue \
|
|
elements/tee \
|
|
libs/basesrc \
|
|
libs/controller \
|
|
libs/typefindhelper \
|
|
pipelines/stress
|
|
endif
|
|
|
|
check_PROGRAMS = \
|
|
gst/gstabi \
|
|
gst/gstbuffer \
|
|
gst/gstbus \
|
|
gst/gstcaps \
|
|
gst/gstinfo \
|
|
gst/gstiterator \
|
|
gst/gstmessage \
|
|
gst/gstminiobject \
|
|
gst/gstobject \
|
|
gst/gstpad \
|
|
gst/gstparamspecs \
|
|
gst/gstpoll \
|
|
gst/gstsegment \
|
|
gst/gstsystemclock \
|
|
gst/gststructure \
|
|
gst/gsttag \
|
|
gst/gsttagsetter \
|
|
gst/gsttask \
|
|
gst/gstvalue \
|
|
$(LOADSAVE_CHECKS) \
|
|
generic/states \
|
|
$(PARSE_CHECKS) \
|
|
$(REGISTRY_CHECKS) \
|
|
libs/libsabi \
|
|
libs/gdp \
|
|
libs/adapter \
|
|
libs/gstnetclientclock \
|
|
libs/gstnettimeprovider
|
|
|
|
# failing tests
|
|
# queue : tests is unstable (race conditions)
|
|
noinst_PROGRAMS = \
|
|
gst/gstpipeline \
|
|
libs/collectpads \
|
|
elements/queue
|
|
|
|
# elements to ignore for the state tests
|
|
# STATE_IGNORE_ELEMENTS =
|
|
|
|
TESTS = $(check_PROGRAMS)
|
|
|
|
noinst_HEADERS = \
|
|
gst/capslist.h \
|
|
gst/struct_i386.h \
|
|
gst/struct_hppa.h \
|
|
gst/struct_ppc32.h \
|
|
gst/struct_ppc64.h \
|
|
gst/struct_x86_64.h \
|
|
libs/struct_i386.h \
|
|
libs/struct_hppa.h \
|
|
libs/struct_ppc32.h \
|
|
libs/struct_ppc64.h \
|
|
libs/struct_x86_64.h
|
|
|
|
AM_CFLAGS = $(GST_OBJ_CFLAGS) $(CHECK_CFLAGS)
|
|
LDADD = $(top_builddir)/libs/gst/check/libgstcheck-@GST_MAJORMINOR@.la \
|
|
$(GST_OBJ_LIBS) \
|
|
$(CHECK_LIBS)
|
|
|
|
libs_gdp_SOURCES = \
|
|
libs/gdp.c
|
|
libs_gdp_CFLAGS = $(AM_CFLAGS)
|
|
libs_gdp_LDADD = \
|
|
$(top_builddir)/libs/gst/dataprotocol/libgstdataprotocol-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
|
|
elements_fdsrc_CFLAGS=$(GST_OBJ_CFLAGS) $(CHECK_CFLAGS) -DTESTFILE=\"$(top_srcdir)/configure.ac\"
|
|
elements_filesrc_CFLAGS=$(GST_OBJ_CFLAGS) $(CHECK_CFLAGS) -DTESTFILE=\"$(top_srcdir)/configure.ac\"
|
|
|
|
libs_basesrc_LDADD = \
|
|
$(top_builddir)/libs/gst/base/libgstbase-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_adapter_LDADD = \
|
|
$(top_builddir)/libs/gst/base/libgstbase-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_collectpads_LDADD = \
|
|
$(top_builddir)/libs/gst/base/libgstbase-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_controller_LDADD = \
|
|
$(top_builddir)/libs/gst/controller/libgstcontroller-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_gstnetclientclock_LDADD = \
|
|
$(top_builddir)/libs/gst/net/libgstnet-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_gstnettimeprovider_LDADD = \
|
|
$(top_builddir)/libs/gst/net/libgstnet-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
libs_typefindhelper_LDADD = \
|
|
$(top_builddir)/libs/gst/base/libgstbase-@GST_MAJORMINOR@.la \
|
|
$(LDADD)
|
|
|
|
# valgrind testing
|
|
# these just need valgrind fixing, period
|
|
VALGRIND_TO_FIX = \
|
|
gst/gstinfo \
|
|
libs/collectpads
|
|
|
|
VALGRIND_IGNORE = \
|
|
pipelines/stress
|
|
|
|
# these need fixing because the threads cause segfaults under valgrind
|
|
TESTS_THREADED = \
|
|
gst/gstminiobject \
|
|
gst/gstobject
|
|
|
|
VALGRIND_TESTS_DISABLE = \
|
|
$(TESTS_THREADED) \
|
|
$(VALGRIND_IGNORE) \
|
|
$(VALGRIND_TO_FIX)
|
|
|
|
# indexers does not get tested yet
|
|
COVERAGE_DIRS = \
|
|
gst \
|
|
libs/gst/base \
|
|
libs/gst/controller \
|
|
libs/gst/check \
|
|
libs/gst/dataprotocol \
|
|
libs/gst/net \
|
|
plugins/elements
|
|
COVERAGE_FILES = $(foreach dir,$(COVERAGE_DIRS),$(wildcard $(top_builddir)/$(dir)/*.gcov))
|
|
COVERAGE_FILES_REL = $(subst $(top_builddir)/,,$(COVERAGE_FILES))
|
|
COVERAGE_OUT_FILES = $(foreach dir,$(COVERAGE_DIRS),$(wildcard $(top_builddir)/$(dir)/*.gcov.out))
|
|
COVERAGE_OUT_FILES_REL = $(subst $(top_builddir)/,,$(COVERAGE_OUT_FILES))
|
|
|
|
debug:
|
|
echo $(COVERAGE_FILES)
|
|
echo $(COVERAGE_FILES_REL)
|
|
|
|
.PHONY: coverage
|
|
if GST_GCOV_ENABLED
|
|
# we rebuild a registry and do gst-inspect so that all the get/set codepaths
|
|
# are also covered
|
|
coverage:
|
|
for file in `find $(top_builddir) -name '*.gcda'`; do rm $$file; done
|
|
-rm $(CHECK_REGISTRY)
|
|
echo "Inspecting all elements"
|
|
for e in `$(GST_INSPECT) | head -n -2 | cut -d: -f2`; do $(GST_INSPECT) $$e > /dev/null 2>&1; done
|
|
make check
|
|
make coverage-report
|
|
else
|
|
coverage:
|
|
echo "You need to configure with --enable-gcov to get coverage data"
|
|
exit 1
|
|
endif
|
|
|
|
coverage-report:
|
|
rm -r coverage
|
|
for dir in $(COVERAGE_DIRS); do \
|
|
mkdir -p coverage/$$dir; \
|
|
make -C $(top_builddir)/$$dir gcov; \
|
|
done
|
|
for dir in $(COVERAGE_DIRS); do \
|
|
files="`ls $(top_builddir)/$$dir/*.gcov.out 2> /dev/null`"; \
|
|
if test ! -z "$$files"; then \
|
|
perl $(top_srcdir)/common/coverage/coverage-report.pl \
|
|
$(top_builddir)/$$dir/*.gcov.out > \
|
|
coverage/$$dir/index.xml; \
|
|
xsltproc $(top_srcdir)/common/coverage/coverage-report.xsl \
|
|
coverage/$$dir/index.xml > coverage/$$dir/index.html; \
|
|
fi; \
|
|
done
|
|
|
|
for file in $(COVERAGE_FILES_REL); do \
|
|
echo Generating coverage/$$file.html; \
|
|
perl $(top_srcdir)/common/coverage/coverage-report-entry.pl \
|
|
$(top_builddir)/$$file > coverage/$$file.html; \
|
|
done
|