X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/18c520e1c6d44a8c68328f3ffa4d64434fb454b8..4d796dabafdee54a7b726013416730efaafa905e:/tests/libs.at diff --git a/tests/libs.at b/tests/libs.at index 89ecf67..1d327cc 100644 --- a/tests/libs.at +++ b/tests/libs.at @@ -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 , 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])