tests: add libscpp unit test to make sure g++ likes our library headers
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 12 Mar 2011 17:51:41 +0000 (17:51 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 12 Mar 2011 17:51:41 +0000 (17:51 +0000)
configure.ac
tests/check/Makefile.am
tests/check/libs/.gitignore
tests/check/libs/gstlibscpp.cc [new file with mode: 0644]

index bacd07a46e138524553f82ccf66a8b8ede1a29fb..c8d85977500f7983a68a030cd451ca58f2622f12 100644 (file)
@@ -135,18 +135,20 @@ dnl *** checks for programs ***
 dnl find a compiler
 AC_PROG_CC
 AC_PROG_CC_STDC
-AC_PROG_CXX
-
-dnl determine if c++ is available on this system
-AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
-
-dnl determine c++ preprocessor
-dnl FIXME: do we need this ?
-AC_PROG_CXXCPP
 
 dnl check if the compiler supports '-c' and '-o' options
 AM_PROG_CC_C_O
 
+dnl determine if c++ is available on this system
+AC_PROG_CXX
+dnl CXX may be set to some default even if no c++ compiler is available
+dnl (thanks autotools!), so just try to compile some c++ code to make sure
+AC_LANG_PUSH([C++])
+AC_TRY_COMPILE([ class Foo { int bar; };], , working_cxx=yes, working_cxx=no)
+AC_LANG_POP([C++])
+AC_MSG_NOTICE([working c++ compiler found: $working_cxx])
+AM_CONDITIONAL(HAVE_CXX, test "x$working_cxx" = "xyes")
+
 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
 
index f496787d35cf8fa0346f472499d3b99429867d30..ee9981916fc1693c6bf73f021d4e0bdf50e81d19 100644 (file)
@@ -99,6 +99,12 @@ else
 check_orc =
 endif
 
+if HAVE_CXX
+cxx_checks = libs/gstlibscpp
+else
+cxx_checks =
+endif
+
 check_PROGRAMS = \
        $(check_alsa) \
        $(check_gnomevfs) \
@@ -144,6 +150,7 @@ check_PROGRAMS = \
        libs/rtsp \
        libs/tag \
        libs/video \
+       $(cxx_checks) \
        $(check_orc) \
        pipelines/simple-launch-lines \
        pipelines/streamheader \
@@ -170,7 +177,12 @@ noinst_HEADERS = \
 #      libs/struct_sparc.h \
 #      libs/struct_x86_64.h
 
-AM_CFLAGS = $(GST_CFLAGS) $(GST_CHECK_CFLAGS) \
+AM_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+       $(GST_CFLAGS) $(GST_CHECK_CFLAGS) \
+       -DGST_TEST_FILES_PATH="\"$(TEST_FILES_DIRECTORY)\"" \
+       -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+AM_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+       $(GST_CXXFLAGS) $(GST_CHECK_CFLAGS) \
        -DGST_TEST_FILES_PATH="\"$(TEST_FILES_DIRECTORY)\"" \
        -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
 LDADD = $(GST_LIBS) $(GST_CHECK_LIBS)
@@ -295,6 +307,8 @@ libs_profile_CFLAGS = \
 libs_profile_LDADD = \
        $(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_MAJORMINOR@.la $(LDADD)
 
+libs_gstlibscpp_SOURCES = libs/gstlibscpp.cc
+
 elements_appsink_CFLAGS = \
        $(GST_PLUGINS_BASE_CFLAGS) \
        $(AM_CFLAGS)
index f0e5c928e78e39094ce6b0308208fa0e01fbda10..5e807df6a9c9dcfe2eab621ebf192ebe3a20d2d7 100644 (file)
@@ -2,6 +2,7 @@
 audio
 cddabasesrc
 fft
+gstlibscpp
 mixer
 navigation
 netbuffer
diff --git a/tests/check/libs/gstlibscpp.cc b/tests/check/libs/gstlibscpp.cc
new file mode 100644 (file)
index 0000000..aa80624
--- /dev/null
@@ -0,0 +1,139 @@
+/* GStreamer
+ * Copyright (C) 2011 Tim-Philipp Müller <tim centricular net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+
+#include <gst/app/gstappbuffer.h>
+#include <gst/app/gstapp-marshal.h>
+#include <gst/app/gstappsink.h>
+#include <gst/app/gstappsrc.h>
+
+#include <gst/audio/audio-enumtypes.h>
+#include <gst/audio/audio.h>
+#include <gst/audio/gstaudioclock.h>
+#include <gst/audio/gstaudiofilter.h>
+#include <gst/audio/gstaudiosink.h>
+#include <gst/audio/gstaudiosrc.h>
+#include <gst/audio/gstbaseaudiosink.h>
+#include <gst/audio/gstbaseaudiosrc.h>
+#include <gst/audio/gstringbuffer.h>
+#include <gst/audio/mixerutils.h>
+#include <gst/audio/multichannel.h>
+
+#include <gst/cdda/gstcddabasesrc.h>
+
+#include <gst/fft/gstfftf32.h>
+#include <gst/fft/gstfftf64.h>
+#include <gst/fft/gstfft.h>
+#include <gst/fft/gstffts16.h>
+#include <gst/fft/gstffts32.h>
+
+#include <gst/floatcast/floatcast.h>
+
+#include <gst/interfaces/colorbalancechannel.h>
+#include <gst/interfaces/colorbalance.h>
+#include <gst/interfaces/interfaces-enumtypes.h>
+#include <gst/interfaces/interfaces-marshal.h>
+#include <gst/interfaces/mixer.h>
+#include <gst/interfaces/mixeroptions.h>
+#include <gst/interfaces/mixertrack.h>
+#include <gst/interfaces/navigation.h>
+#include <gst/interfaces/propertyprobe.h>
+#include <gst/interfaces/streamvolume.h>
+#include <gst/interfaces/tunerchannel.h>
+#include <gst/interfaces/tuner.h>
+#include <gst/interfaces/tunernorm.h>
+#include <gst/interfaces/videoorientation.h>
+#include <gst/interfaces/xoverlay.h>
+
+#include <gst/netbuffer/gstnetbuffer.h>
+
+#include <gst/pbutils/codec-utils.h>
+#include <gst/pbutils/descriptions.h>
+#include <gst/pbutils/encoding-profile.h>
+#include <gst/pbutils/encoding-target.h>
+#include <gst/pbutils/gstdiscoverer.h>
+#include <gst/pbutils/gstpluginsbaseversion.h>
+#include <gst/pbutils/install-plugins.h>
+#include <gst/pbutils/missing-plugins.h>
+#include <gst/pbutils/pbutils-enumtypes.h>
+#include <gst/pbutils/pbutils.h>
+#include <gst/pbutils/pbutils-marshal.h>
+
+#include <gst/riff/riff-ids.h>
+#include <gst/riff/riff-media.h>
+#include <gst/riff/riff-read.h>
+
+#include <gst/rtp/gstbasertpaudiopayload.h>
+#include <gst/rtp/gstbasertpdepayload.h>
+#include <gst/rtp/gstbasertppayload.h>
+#include <gst/rtp/gstrtcpbuffer.h>
+#include <gst/rtp/gstrtpbuffer.h>
+#include <gst/rtp/gstrtppayloads.h>
+
+#include <gst/rtsp/gstrtspbase64.h>
+#include <gst/rtsp/gstrtspconnection.h>
+#include <gst/rtsp/gstrtspdefs.h>
+#include <gst/rtsp/gstrtsp-enumtypes.h>
+#include <gst/rtsp/gstrtspextension.h>
+#include <gst/rtsp/gstrtsp.h>
+#include <gst/rtsp/gstrtsp-marshal.h>
+#include <gst/rtsp/gstrtspmessage.h>
+#include <gst/rtsp/gstrtsprange.h>
+#include <gst/rtsp/gstrtsptransport.h>
+#include <gst/rtsp/gstrtspurl.h>
+
+#include <gst/sdp/gstsdp.h>
+#include <gst/sdp/gstsdpmessage.h>
+#include <gst/tag/gsttagdemux.h>
+
+#include <gst/tag/tag.h>
+
+#include <gst/video/gstvideofilter.h>
+#include <gst/video/gstvideosink.h>
+#include <gst/video/video-enumtypes.h>
+#include <gst/video/video.h>
+
+/* we mostly just want to make sure that our library headers don't
+ * contain anything a C++ compiler might not like */
+GST_START_TEST (test_nothing)
+{
+  gst_init (NULL, NULL);
+}
+
+GST_END_TEST;
+
+static Suite *
+libscpp_suite (void)
+{
+  Suite *s = suite_create ("GstLibsCpp");
+  TCase *tc_chain = tcase_create ("C++ libs header tests");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_nothing);
+
+  return s;
+}
+
+GST_CHECK_MAIN (libscpp);