]> git.draconx.ca Git - gob-dx.git/commitdiff
Fix testsuite on ancient GLib.
authorNick Bowler <nbowler@draconx.ca>
Wed, 3 Mar 2021 07:00:49 +0000 (02:00 -0500)
committerNick Bowler <nbowler@draconx.ca>
Wed, 3 Mar 2021 07:03:04 +0000 (02:03 -0500)
Some test cases use private data members and these fail with glib-2.0
as this feature was added somewhere around glib-2.4 or so.  Since the
program itself works fine with glib-2.0, add a configure check to skip
affected tests in this scenario.

Makefile.am
configure.ac
tests/general.at

index a693aced024113b7c0985bc112cf3775fb448dbb..84a4d9560fb7e97b3335d4f5e9a2d26ed2e30e55 100644 (file)
@@ -211,6 +211,7 @@ atlocal: config.status
            LIBGOBJECT_CFLAGS '$(LIBGOBJECT_CFLAGS)' \
            LIBGOBJECT_LIBS '$(LIBGOBJECT_LIBS)' \
            HAVE_GOBJECT '$(HAVE_GOBJECT)' \
+           HAVE_GOBJECT_PRIVATES '$(HAVE_GOBJECT_PRIVATES)' \
            HAVE_GTK2 '$(HAVE_GTK2)' \
            pkgdatadir '$(pkgdatadir)' \
            ; } >$@.tmp
index 89d0d855a3b16183ddb824618c9fb5f38f17a9e1..e190000a7c9ba004daeaf211ffa83b4e78f8c4bd 100644 (file)
@@ -41,6 +41,24 @@ dnl Dependencies for test suite
 DX_LIB_GLIB2([], [gobject], [HAVE_GOBJECT=true], [HAVE_GOBJECT=false])
 AC_SUBST([HAVE_GOBJECT])
 
+AS_IF([$HAVE_GOBJECT],
+  [AC_CACHE_CHECK([whether libgobject supports private data members],
+    [dx_cv_libgobject_privates],
+[save_CFLAGS=$CFLAGS
+CFLAGS="$CFLAGS $LIBGOBJECT_CFLAGS"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+[#include <glib-object.h>
+#if defined(G_ADD_PRIVATE) || defined(G_TYPE_INSTANCE_GET_PRIVATE)
+#else
+DX_LIB_COMPILE_ERROR([private members not supported])
+#endif
+])], [dx_cv_libgobject_privates=yes], [dx_cv_libgobject_privates=no])
+CFLAGS=$save_CFLAGS])])
+
+AS_IF([test x"$dx_cv_libgobject_privates" = x"yes"],
+  [HAVE_GOBJECT_PRIVATES=true], [HAVE_GOBJECT_PRIVATES=false])
+AC_SUBST([HAVE_GOBJECT_PRIVATES])
+
 DX_LIB_GTK2([], [HAVE_GTK2=true], [HAVE_GTK2=false])
 AC_SUBST([HAVE_GTK2])
 
index a36e4df17a9c8e571d580fa486a4981ecdc3016e..d7be50244874f9e03f215e5865afc79ce943f87c 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright © 2019-2020 Nick Bowler
+dnl Copyright © 2019-2021 Nick Bowler
 dnl License GPLv2+: GNU General Public License version 2 or any later version.
 dnl This is free software: you are free to change and redistribute it.
 dnl There is NO WARRANTY, to the extent permitted by law.
@@ -46,6 +46,7 @@ int main(void)
 
 str_gob=$abs_top_srcdir/t/str.gob
 AT_CHECK([gob2 "$str_gob"])
+AT_CHECK([$HAVE_GOBJECT_PRIVATES || exit 77])
 TEST_COMPILE_GOBJECT([str.c], [0], [], [stderr])
 mv stderr str_stderr
 
@@ -223,6 +224,7 @@ class :Test from G:Object
 }
 ]])
 AT_CHECK([gob2 test.gob])
+AT_CHECK([$HAVE_GOBJECT_PRIVATES || exit 77])
 TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore])
 
 AT_DATA([main.c], [[#include <config.h>
@@ -263,6 +265,7 @@ class :Test from G:Object (dynamic)
 }
 ]])
 AT_CHECK([gob2 test.gob])
+AT_CHECK([$HAVE_GOBJECT_PRIVATES || exit 77])
 TEST_COMPILE_GOBJECT([test.c], [0], [], [ignore])
 
 TEST_TYPE_MODULE([:Test])