summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2009-08-06 17:27:12 +0100
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-08-06 17:27:12 +0100
commitecbea36d3995062e8e16dfbce7d86e29a02fdf17 (patch)
tree823215f0341a546635f16a284aea594b9c6b2ccc
parenta209779f1cab5ddf6b5096e4c654801428308d5e (diff)
check: use private copy of check for libgstcheck
See #577275. Seems to work fine, but doesn't distcheck yet.
-rw-r--r--Makefile.am3
-rwxr-xr-xautogen.sh2
-rw-r--r--check-checks.m445
-rw-r--r--configure.ac48
-rw-r--r--docs/libs/gstreamer-libs-sections.txt86
-rw-r--r--libs/gst/check/.gitignore3
-rw-r--r--libs/gst/check/Makefile.am62
-rw-r--r--libs/gst/check/gstcheck.h2
-rw-r--r--libs/gst/check/libcheck/Makefile.am9
-rw-r--r--pkgconfig/gstreamer-check-uninstalled.pc.in4
-rw-r--r--pkgconfig/gstreamer-check.pc.in4
11 files changed, 223 insertions, 45 deletions
diff --git a/Makefile.am b/Makefile.am
index d15bc92653..6cb5819567 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,8 @@ all-local: gst-element-check-@GST_MAJORMINOR@.m4
gst-element-check-@GST_MAJORMINOR@.m4: gst-element-check.m4
cp gst-element-check.m4 gst-element-check-@GST_MAJORMINOR@.m4
-ACLOCAL_AMFLAGS = -I common/m4
+# note: keep in sync with configure.ac
+ACLOCAL_AMFLAGS = -I common/m4 -I .
aclocaldir = $(datadir)/aclocal
aclocal_DATA = gst-element-check-@GST_MAJORMINOR@.m4
diff --git a/autogen.sh b/autogen.sh
index 4864187d51..b29b7c8da8 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -82,7 +82,7 @@ patch -p0 < common/gettext.patch
if test -f acinclude.m4; then rm acinclude.m4; fi
tool_run "$libtoolize" "--copy --force"
-tool_run "$aclocal" "-I common/m4 $ACLOCAL_FLAGS"
+tool_run "$aclocal" "-I common/m4 -I. $ACLOCAL_FLAGS"
tool_run "$autoheader"
# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
diff --git a/check-checks.m4 b/check-checks.m4
new file mode 100644
index 0000000000..f9ddc34649
--- /dev/null
+++ b/check-checks.m4
@@ -0,0 +1,45 @@
+dnl Check for things that check needs/wants and that we don't check for already
+dnl AM_GST_CHECK_CHECKS()
+
+AC_DEFUN([AG_GST_CHECK_CHECKS],
+[
+AC_MSG_NOTICE([Running check unit test framework checks now...])
+
+CHECK_MAJOR_VERSION=0
+CHECK_MINOR_VERSION=9
+CHECK_MICRO_VERSION=6
+CHECK_VERSION=$CHECK_MAJOR_VERSION.$CHECK_MINOR_VERSION.$CHECK_MICRO_VERSION
+
+AC_SUBST(CHECK_MAJOR_VERSION)
+AC_SUBST(CHECK_MINOR_VERSION)
+AC_SUBST(CHECK_MICRO_VERSION)
+AC_SUBST(CHECK_VERSION)
+
+# Checks for programs.
+AC_PROG_AWK
+
+# Checks for header files.
+AC_HEADER_STDC
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS_ONCE([unistd.h fcntl.h stddef.h stdint.h stdlib.h string.h sys/time.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_HEADER_TIME
+AC_STRUCT_TM
+
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(long, 4)
+
+# Checks for library functions.
+AC_FUNC_FORK
+AC_FUNC_MALLOC
+AC_FUNC_REALLOC
+AC_FUNC_STRFTIME
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS([alarm gettimeofday localtime_r memmove memset putenv setenv strdup strerror strrchr strstr])
+AC_REPLACE_FUNCS([strsignal])
+])
diff --git a/configure.ac b/configure.ac
index 49bfff962d..2611100b24 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,8 +58,8 @@ dnl *** autotools stuff ****
dnl allow for different autotools
AS_AUTOTOOLS_ALTERNATE
-dnl Add parameters for aclocal
-AC_SUBST(ACLOCAL_AMFLAGS, "-I common/m4")
+dnl Add parameters for aclocal (keep in sync with Makefile.am)
+AC_SUBST(ACLOCAL_AMFLAGS, "-I common/m4 -I .")
dnl set up gettext
dnl the version check needs to stay here because autopoint greps for it
@@ -503,22 +503,21 @@ else
fi
AC_SUBST(GST_DISABLE_XML_DEFINE)
-dnl check for "check", unit testing library/header
-if test "$cross_compiling" != yes; then
- AM_PATH_CHECK(0.9.2,
- HAVE_CHECK=yes,
- HAVE_CHECK=no)
-else
- HAVE_CHECK=no
-fi
-AM_CONDITIONAL(HAVE_CHECK, test "x$HAVE_CHECK" = "xyes")
+dnl building of unit test libraries
+AC_ARG_ENABLE(check,
+ AC_HELP_STRING([--disable-check], [disable building unit test libraries]),
+ [
+ case "${enableval}" in
+ yes) BUILD_CHECK=yes ;;
+ no) BUILD_CHECK=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-check) ;;
+ esac
+ ],
+[BUILD_CHECK=yes]) dnl Default value
+dnl bit of a misnomer, but keep the conditional named like this so we don't
+dnl have to change too much elsewhere
+AM_CONDITIONAL(HAVE_CHECK, test "x$BUILD_CHECK" = "xyes")
-dnl pkg-config check that for libcheck that works for cross-compiling
-dnl but not normal compilation on Fedora & Ubuntu:
-dnl PKG_CHECK_MODULES(CHECK, check >= 0.9.2,
-dnl AM_CONDITIONAL(HAVE_CHECK, true),
-dnl AM_CONDITIONAL(HAVE_CHECK, false)
-dnl )
dnl *** set variables based on configure arguments
@@ -606,13 +605,6 @@ dnl linker flags shared by all libraries
dnl LDFLAGS modifier defining exported symbols from built libraries
GST_LIB_LDFLAGS="-export-symbols-regex \^[_]*\(gst_\|Gst\|GST_\).*"
AC_SUBST(GST_LIB_LDFLAGS)
-dnl Version of the linker flags specifically for libgstcheck to support the boonky extra symbols it exports.
-GST_CHECK_LIB_LDFLAGS="-export-symbols-regex \^\([_]*\(gst_\|Gst\|GST_\).*\|check_\(debug\|mutex\|cond\)\|buffers\|mutex\|start_cond\|sync_cond\|thread_list\)$"
-dnl HACK: add non-portable --export-dynamic if we have GNU ld (needed on my debian stable, tpm)
-if test "x$ac_cv_prog_gnu_ld" = "xyes" -o "x$acl_cv_prog_gnu_ld" = "xyes" ; then
- GST_CHECK_LIB_LDFLAGS="-Wl,--export-dynamic $GST_CHECK_LIB_LDFLAGS"
-fi
-AC_SUBST(GST_CHECK_LIB_LDFLAGS)
dnl GST_OBJ_*
dnl default vars for all internal objects built on libgstreamer
@@ -629,6 +621,11 @@ AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
SHAVE_INIT([common],[enable])
+dnl things for our internal libcheck
+if test "x$BUILD_CHECK" = "xyes"; then
+ AG_GST_CHECK_CHECKS()
+fi
+
AC_CONFIG_FILES(
Makefile
common/shave
@@ -641,6 +638,8 @@ libs/Makefile
libs/gst/Makefile
libs/gst/base/Makefile
libs/gst/check/Makefile
+libs/gst/check/libcheck/Makefile
+libs/gst/check/libcheck/check.h
libs/gst/controller/Makefile
libs/gst/dataprotocol/Makefile
libs/gst/net/Makefile
@@ -767,6 +766,7 @@ Configuration
Plugin registry : ${enable_registry}
Plugin support : ${enable_plugin}
Network support : ${enable_net}
+ Unit testing support : ${BUILD_CHECK}
Debug : ${USE_DEBUG}
Profiling : ${USE_PROFILING}
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 5a2b67a36e..bf03050627 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -697,6 +697,92 @@ gst_check_abi_list
buffers
check_cond
check_mutex
+
+CHECK_MAJOR_VERSION
+CHECK_MICRO_VERSION
+CHECK_MINOR_VERSION
+CK_ATTRIBUTE_UNUSED
+CK_CPPEND
+CK_CPPSTART
+CK_EXPORT
+END_TEST
+GCC_VERSION_AT_LEAST
+LFun
+List
+Log
+NULL
+SFun
+SRunner
+START_TEST
+Suite
+TCase
+TF
+TFun
+TestResult
+TestStats
+check_list_create
+ck_abort
+ck_abort_msg
+ck_assert
+ck_assert_int_eq
+ck_assert_int_ne
+ck_assert_msg
+ck_assert_str_eq
+ck_assert_str_ne
+ck_strdup_printf
+cur_fork_status
+emalloc
+eprintf
+erealloc
+fail
+fail_if
+fail_unless
+get_env_printmode
+lfile_lfun
+list_add_end
+list_add_front
+list_advance
+list_apply
+list_at_end
+list_free
+list_front
+list_val
+log_srunner_end
+log_srunner_start
+log_suite_end
+log_suite_start
+log_test_end
+mark_point
+pack
+ppack
+punpack
+rcvmsg_free
+receive_test_result
+send_ctx_info
+send_failure_info
+send_loc_info
+set_fork_status
+setup_messaging
+sr_stat_str
+srunner_end_logging
+srunner_fprint
+srunner_init_logging
+srunner_open_lfile
+srunner_open_xmlfile
+srunner_register_lfun
+stdout_lfun
+tcase_add_loop_test
+tcase_add_loop_test_raise_signal
+tcase_add_test
+tcase_add_test_raise_signal
+teardown_messaging
+tr_create
+tr_fprint
+tr_reset
+tr_str
+tr_xmlprint
+upack
+xml_lfun
</SECTION>
<SECTION>
diff --git a/libs/gst/check/.gitignore b/libs/gst/check/.gitignore
index 9fb9d19251..b887a816f7 100644
--- a/libs/gst/check/.gitignore
+++ b/libs/gst/check/.gitignore
@@ -3,3 +3,6 @@
*.o
*.lo
*.la
+internal-check.h
+exports.sym
+libcheck/check.h
diff --git a/libs/gst/check/Makefile.am b/libs/gst/check/Makefile.am
index c4364061da..31e301a807 100644
--- a/libs/gst/check/Makefile.am
+++ b/libs/gst/check/Makefile.am
@@ -1,28 +1,78 @@
lib_LTLIBRARIES = libgstcheck-@GST_MAJORMINOR@.la
+SYMBOLS_FILE = exports.sym
+
libgstcheck_@GST_MAJORMINOR@_la_DEPENDENCIES = \
- $(top_builddir)/gst/libgstreamer-@GST_MAJORMINOR@.la
+ $(top_builddir)/gst/libgstreamer-@GST_MAJORMINOR@.la \
+ $(SYMBOLS_FILE)
libgstcheck_@GST_MAJORMINOR@_la_SOURCES = \
gstbufferstraw.c \
gstcheck.c \
gstconsistencychecker.c
-libgstcheck_@GST_MAJORMINOR@_la_CFLAGS = $(GST_OBJ_CFLAGS) $(CHECK_CFLAGS)
-libgstcheck_@GST_MAJORMINOR@_la_LIBADD = $(GST_OBJ_LIBS) $(CHECK_LIBS) $(LIBM)
-libgstcheck_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_CHECK_LIB_LDFLAGS) \
- $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
+libgstcheck_@GST_MAJORMINOR@_la_CFLAGS = $(GST_OBJ_CFLAGS) \
+ -I$(top_builddir)/libs/gst/check \
+ -I$(top_builddir)/libs/gst/check/libcheck
+libgstcheck_@GST_MAJORMINOR@_la_LIBADD = $(GST_OBJ_LIBS) \
+ $(top_builddir)/libs/gst/check/libcheck/libcheckinternal.la \
+ $(LIBM)
+libgstcheck_@GST_MAJORMINOR@_la_LDFLAGS = \
+ -exports $(SYMBOLS_FILE) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
libgstcheck_@GST_MAJORMINOR@includedir = \
$(includedir)/gstreamer-@GST_MAJORMINOR@/gst/check
libgstcheck_@GST_MAJORMINOR@include_HEADERS = \
+ internal-check.h \
gstbufferstraw.h \
gstcheck.h \
gstconsistencychecker.h
-CLEANFILES = *.gcno *.gcda *.gcov
+CLEANFILES = *.gcno *.gcda *.gcov internal-check.h $(SYMBOLS_FILE)
+
+internal-check.h: $(top_builddir)/libs/gst/check/libcheck/check.h
+ cp $(top_builddir)/libs/gst/check/libcheck/check.h internal-check.h
%.c.gcov: .libs/libgstcheck_@GST_MAJORMINOR@_la-%.gcda %.c
$(GCOV) -b -f -o $^ > $@.out
gcov: $(libgstcheck_@GST_MAJORMINOR@_la_SOURCES:=.gcov)
+
+SUBDIRS = libcheck
+
+LIBGSTCHECK_EXPORTED_SYMBOLS = \
+ _gst_check_debug \
+ _gst_check_expecting_log \
+ _gst_check_raised_critical \
+ _gst_check_raised_warning \
+ _gst_check_run_test_func \
+ _gst_check_threads_running \
+ gst_buffer_straw_get_buffer \
+ gst_buffer_straw_start_pipeline \
+ gst_buffer_straw_stop_pipeline \
+ gst_check_abi_list \
+ gst_check_caps_equal \
+ gst_check_chain_func \
+ gst_check_drop_buffers \
+ gst_check_element_push_buffer \
+ gst_check_element_push_buffer_list \
+ gst_check_init \
+ gst_check_message_error \
+ gst_check_run_suite \
+ gst_check_setup_element \
+ gst_check_setup_sink_pad \
+ gst_check_setup_sink_pad_by_name \
+ gst_check_setup_src_pad \
+ gst_check_setup_src_pad_by_name \
+ gst_check_teardown_element \
+ gst_check_teardown_pad_by_name \
+ gst_check_teardown_sink_pad \
+ gst_check_teardown_src_pad
+
+$(SYMBOLS_FILE):
+ CHECK_SYMS=`sed -n -e 's/^..*CK_EXPORT[[:space:]][[:space:]]*\([[:alnum:]_][[:alnum:]_]*\)..*$$/\1/p' @top_srcdir@/libs/gst/check/libcheck/check.h.in` ; \
+ rm -f $(SYMBOLS_FILE) 2>/dev/null; \
+ for s in $(LIBGSTCHECK_EXPORTED_SYMBOLS) $$CHECK_SYMS; do \
+ echo $$s >> $(SYMBOLS_FILE); \
+ done
+
diff --git a/libs/gst/check/gstcheck.h b/libs/gst/check/gstcheck.h
index ec1313b739..ab3c0f0b62 100644
--- a/libs/gst/check/gstcheck.h
+++ b/libs/gst/check/gstcheck.h
@@ -29,7 +29,7 @@
#include <stdlib.h>
#include <math.h>
-#include <check.h>
+#include <gst/check/internal-check.h>
#include <gst/gst.h>
diff --git a/libs/gst/check/libcheck/Makefile.am b/libs/gst/check/libcheck/Makefile.am
index d522f33af6..57bf1cf107 100644
--- a/libs/gst/check/libcheck/Makefile.am
+++ b/libs/gst/check/libcheck/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libcheckinternal.la
-EXTRA_DIST = check.h.in
+EXTRA_DIST = check.h.in
CFILES =\
check.c \
@@ -26,13 +26,6 @@ HFILES =\
noinst_HEADERS = $(HFILES)
-EXPORT_SYM = exported.sym
-$(EXPORT_SYM): check.h.in
- sed -n -e 's/^..*CK_EXPORT[[:space:]][[:space:]]*\([[:alnum:]_][[:alnum:]_]*\)..*$$/\1/p' @top_srcdir@/src/check.h.in > $@
-
libcheckinternal_la_SOURCES = $(CFILES) $(HFILES)
libcheckinternal_la_LIBADD =
-
-CLEANFILES = $(EXPORT_SYM)
-
diff --git a/pkgconfig/gstreamer-check-uninstalled.pc.in b/pkgconfig/gstreamer-check-uninstalled.pc.in
index 875fb49849..2f5e6d3414 100644
--- a/pkgconfig/gstreamer-check-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-check-uninstalled.pc.in
@@ -9,5 +9,5 @@ Description: Unit testing helper library for GStreamer modules, Not Installed
Requires: gstreamer-@GST_MAJORMINOR@ = @VERSION@
Version: @VERSION@
-Libs: ${libdir}/libgstcheck-@GST_MAJORMINOR@.la @CHECK_LIBS@ -lm
-Cflags: -I${includedir} -I@srcdir@/.. @CHECK_CFLAGS@
+Libs: ${libdir}/libgstcheck-@GST_MAJORMINOR@.la -lm
+Cflags: -I${includedir} -I@srcdir@/..
diff --git a/pkgconfig/gstreamer-check.pc.in b/pkgconfig/gstreamer-check.pc.in
index f96d1d44dd..69f3e4e1f6 100644
--- a/pkgconfig/gstreamer-check.pc.in
+++ b/pkgconfig/gstreamer-check.pc.in
@@ -7,5 +7,5 @@ Name: GStreamer check unit testing
Description: Unit testing helper library for GStreamer modules
Requires: gstreamer-@GST_MAJORMINOR@
Version: @VERSION@
-Libs: -L${libdir} -lgstcheck-@GST_MAJORMINOR@ @CHECK_LIBS@ -lm
-Cflags: -I${includedir} @CHECK_CFLAGS@
+Libs: -L${libdir} -lgstcheck-@GST_MAJORMINOR@ -lm
+Cflags: -I${includedir}