]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/libs.at
Add some curses-related feature tests.
[dxcommon.git] / tests / libs.at
index 89ecf67eb2f563a8f83eb1a3c24a2479350dafbc..1d327cc1afcc335b27d852120f9326c471b31de9 100644 (file)
@@ -141,6 +141,140 @@ AT_CHECK_UNQUOTED([cat test], [0], [no
 
 AT_CLEANUP
 
+AT_SETUP([DX_CHECK_CURSES_GETMOUSE_NCURSES])
+AT_KEYWORDS([lib curses ncurses])
+
+mkdir ncurses sysv bogus
+AT_DATA([ncurses/curses.h],
+[[typedef struct MEVENT { int x; } MEVENT;
+int getmouse_nc_(MEVENT *);
+#define getmouse getmouse_nc_
+]])
+
+AT_DATA([sysv/curses.h],
+[[unsigned getmouse(void);
+]])
+
+AT_DATA([bogus/curses.h],
+[[typedef int MEVENT;
+int getmouse_bogus_(void *);
+#define getmouse getmouse_bogus_
+]])
+
+AT_DATA([test.in],
+[[@dx_cv_curses_have_getmouse_ncurses@
+]])
+
+TEST_CONFIGURE_AC([[AC_CONFIG_HEADERS([config.h])
+DX_CHECK_CURSES_GETMOUSE_NCURSES
+AC_SUBST([dx_cv_curses_have_getmouse_ncurses])
+AC_CONFIG_FILES([test])
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Incurses CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep HAVE_CURSES config.h], [0], [yes
+#define HAVE_CURSES_GETMOUSE_NCURSES 1
+])
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Isysv CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep HAVE_CURSES config.h], [0], [no
+/* #undef HAVE_CURSES_GETMOUSE_NCURSES */
+])
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Ibogus CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep HAVE_CURSES config.h], [0], [no
+/* #undef HAVE_CURSES_GETMOUSE_NCURSES */
+])
+
+AT_CLEANUP
+
+AT_SETUP([DX_CHECK_CURSES_MOUSE_SUPPORT])
+AT_KEYWORDS([lib curses ncurses])
+
+mkdir hp ncurses sysv
+
+# HP-UX 11 curses contains definitions of mouse functions in the library but
+# is missing declarations and associated macros in <curses.h>, although they
+# are present in the alternate "cur_colr" implementation.
+#
+# Regardless, neither implementation seems to have working mouse support with
+# any X terminal emulator so for now no workarounds are provided and the checks
+# are expected to return "no".
+AT_DATA([hp/curses.h],
+[[int mouse_set(unsigned long);
+int request_mouse_pos(void);
+]])
+
+# Ncurses-like mouse functions.
+AT_DATA([ncurses/curses.h],
+[[unsigned long mousemask(unsigned long, unsigned long *);
+typedef int MEVENT;
+int getmouse_nc_(MEVENT *);
+#define getmouse getmouse_nc_
+#define BUTTON1_RELEASED 1L
+#define BUTTON1_PRESSED 2L
+
+/* rename this to avoid false positives in the test */
+#define mouse_set mouse_set_bogus_
+]])
+
+# SysV-like mouse funcitons.
+AT_DATA([sysv/curses.h],
+[[int mouse_set(unsigned long);
+int request_mouse_pos(void);
+
+#define BUTTON_STATUS(x) 0
+#define BUTTON_RELEASED 0
+#define BUTTON_PRESSED 1
+
+#define BUTTON1_RELEASED 1L
+#define BUTTON1_PRESSED 2L
+]])
+
+AT_DATA([test.in],
+[[@dx_cv_curses_have_mouse_set@
+@dx_cv_curses_have_mousemask@
+@dx_cv_curses_have_getmouse_ncurses@
+@dx_cv_curses_have_request_mouse_pos@
+]])
+
+TEST_CONFIGURE_AC([[AC_CONFIG_HEADERS([config.h])
+DX_CHECK_CURSES_MOUSE_SUPPORT
+AC_SUBST([dx_cv_curses_have_mouse_set])
+AC_SUBST([dx_cv_curses_have_mousemask])
+AC_SUBST([dx_cv_curses_have_request_mouse_pos])
+AC_SUBST([dx_cv_curses_have_getmouse_ncurses])
+AC_CONFIG_FILES([test])
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Ihp CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep CURSES_MOUSE_SUPPORT config.h], [0], [no
+no
+
+
+/* #undef HAVE_CURSES_MOUSE_SUPPORT */
+])
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Incurses CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep CURSES_MOUSE_SUPPORT config.h], [0], [no
+yes
+yes
+
+#define HAVE_CURSES_MOUSE_SUPPORT 1
+])
+
+TEST_CONFIGURE([CURSES_CFLAGS=-Isysv CURSES_LIBS="$builddir/t/libdummy.a"])
+AT_CHECK([cat test && grep CURSES_MOUSE_SUPPORT config.h], [0], [yes
+
+no
+yes
+#define HAVE_CURSES_MOUSE_SUPPORT 1
+])
+
+AT_CLEANUP
+
 AT_SETUP([GLib GNU inline workaround])
 
 TEST_DUMMY_PKGCONFIG([-I.], [$builddir/t/libdummy.a])