| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- #ifdef HAVE_X11_ICE
- # include <X11/ICE/ICElib.h>
- static Status test_ICE(void)
- {
- return IceInitThreads();
- }
- #endif
- #ifdef HAVE_X11_SM
- # include <X11/SM/SMlib.h>
- # include <stdlib.h>
- static void test_SM(void)
- {
- SmcProtocolVersion(NULL);
- }
- #endif
- #ifdef HAVE_X11_X11
- # include <X11/Xlib.h>
- static Status test_X11(void)
- {
- return XInitThreads();
- }
- #endif
- #ifdef HAVE_X11_Xau
- # include <X11/Xauth.h>
- static char* test_Xau(void)
- {
- return XauFileName();
- }
- #endif
- #ifdef HAVE_X11_Xcomposite
- # include <X11/extensions/Xcomposite.h>
- static int test_Xcomposite(void)
- {
- return XCompositeVersion();
- }
- #endif
- #ifdef HAVE_X11_Xdamage
- # include <X11/extensions/Xdamage.h>
- static Bool test_Xdamage(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XDamageQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xdmcp
- # include <X11/Xdmcp.h>
- static int test_Xdmcp(void)
- {
- BYTE data[1024];
- XdmcpBuffer buf = { data, sizeof(data), 0, 0 };
- return XdmcpReadRemaining(&buf);
- }
- #endif
- #ifdef HAVE_X11_Xext
- # include <X11/Xlib.h>
- # include <X11/extensions/Xext.h>
- static int test_Xext(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ret = XMissingExtension(dpy, "cmake");
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xxf86misc
- # include <X11/Xlib.h>
- # include <X11/extensions/xf86misc.h>
- static Bool test_Xxf86misc(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- Bool ret = XF86MiscSetClientVersion(dpy);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xxf86vm
- # include <X11/Xlib.h>
- # include <X11/extensions/xf86vmode.h>
- static Bool test_Xxf86vm(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- Bool ret = XF86VidModeSetClientVersion(dpy);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xfixes
- # include <X11/extensions/Xfixes.h>
- static Bool test_Xfixes(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XFixesQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xft
- # include <X11/Xft/Xft.h>
- static FcBool test_Xft(void)
- {
- return XftInitFtLibrary();
- }
- #endif
- #ifdef HAVE_X11_Xi
- # include <X11/extensions/XInput.h>
- static XExtensionVersion* test_Xi(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- XExtensionVersion* ret = XGetExtensionVersion(dpy, "cmake");
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xinerama
- # include <X11/extensions/Xinerama.h>
- static Bool test_Xinerama(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XineramaQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xkb
- # include <X11/XKBlib.h>
- static Bool test_Xkb(void)
- {
- return XkbIgnoreExtension(0);
- }
- #endif
- #ifdef HAVE_X11_xkbfile
- // clang-format off
- # include <stdio.h>
- # include <X11/XKBlib.h>
- # include <X11/extensions/XKBfile.h>
- # include <stdlib.h>
- // clang-format on
- static void test_xkbfile(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- XkbInitAtoms(dpy);
- XCloseDisplay(dpy);
- }
- #endif
- #ifdef HAVE_X11_Xmu
- # include <X11/Xmu/Xmu.h>
- # include <stdlib.h>
- static Bool test_Xmu(void)
- {
- return XmuValidArea(NULL);
- }
- #endif
- #ifdef HAVE_X11_Xpm
- # include <X11/xpm.h>
- static int test_Xpm(void)
- {
- return XpmAttributesSize();
- }
- #endif
- #ifdef HAVE_X11_Xtst
- # include <X11/extensions/XTest.h>
- static Status test_Xtst(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- Status ret = XTestDiscard(dpy);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xrandr
- # include <X11/extensions/Xrandr.h>
- static Bool test_Xrandr(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XRRQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xrender
- # include <X11/extensions/Xrender.h>
- static Bool test_Xrender(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XRenderQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_XRes
- # include <X11/Xlib.h>
- # include <X11/extensions/XRes.h>
- static Bool test_XRes(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XResQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xss
- # include <X11/extensions/scrnsaver.h>
- static Bool test_Xss(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- int ev_base;
- int err_base;
- Bool ret = XScreenSaverQueryExtension(dpy, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xt
- # include <X11/Intrinsic.h>
- static void test_Xt(void)
- {
- return XtToolkitInitialize();
- }
- #endif
- #ifdef HAVE_X11_Xutil
- # include <X11/Xutil.h>
- static int test_Xutil(void)
- {
- Region r = XCreateRegion();
- return XDestroyRegion(r);
- }
- #endif
- #ifdef HAVE_X11_Xv
- # include <X11/Xlib.h>
- # include <X11/extensions/Xvlib.h>
- static int test_Xv(void)
- {
- Display* dpy = XOpenDisplay(NULL);
- unsigned int version;
- unsigned int revision;
- unsigned int req_base;
- unsigned int ev_base;
- unsigned int err_base;
- int ret =
- XvQueryExtension(dpy, &version, &revision, &req_base, &ev_base, &err_base);
- XCloseDisplay(dpy);
- return ret;
- }
- #endif
- #ifdef HAVE_X11_Xaw
- # include <X11/Intrinsic.h>
- # include <X11/Xaw/Box.h>
- static void test_Xaw(void)
- {
- XrmOptionDescRec opt_table[] = { { NULL } };
- Widget toplevel;
- toplevel =
- XtInitialize("test", "test", opt_table, XtNumber(opt_table), NULL, NULL);
- Widget box =
- XtCreateManagedWidget("testbox", boxWidgetClass, toplevel, NULL, 0);
- return;
- }
- #endif
- #ifdef HAVE_xcb
- # include <xcb/xcb.h>
- static void test_xcb(void)
- {
- int screen_nbr;
- xcb_connection_t* connection = xcb_connect(NULL, &screen_nbr);
- xcb_disconnect(connection);
- }
- # ifdef HAVE_xcb_util
- # include <xcb/xcb_aux.h>
- static void test_xcb_util(void)
- {
- int screen_nbr;
- xcb_connection_t* connection = xcb_connect(NULL, &screen_nbr);
- xcb_screen_t* screen = xcb_aux_get_screen(connection, screen_nbr);
- xcb_disconnect(connection);
- }
- # endif
- # ifdef HAVE_xcb_xfixes
- # include <xcb/xcb_xfixes.h>
- static void test_xcb_xfixes(void)
- {
- int screen_nbr;
- xcb_connection_t* connection = xcb_connect(NULL, &screen_nbr);
- xcb_xfixes_query_version(connection, 1, 0);
- xcb_disconnect(connection);
- }
- # endif
- #endif
- #include <stddef.h>
- int main(int argc, char* argv[])
- {
- (void)argv;
- void* fptrs[] = {
- #ifdef HAVE_X11_ICE
- test_ICE,
- #endif
- #ifdef HAVE_X11_SM
- test_SM,
- #endif
- #ifdef HAVE_X11_X11
- test_X11,
- #endif
- #ifdef HAVE_X11_Xau
- test_Xau,
- #endif
- #ifdef HAVE_X11_Xcomposite
- test_Xcomposite,
- #endif
- #ifdef HAVE_X11_Xdamage
- test_Xdamage,
- #endif
- #ifdef HAVE_X11_Xdmcp
- test_Xdmcp,
- #endif
- #ifdef HAVE_X11_Xext
- test_Xext,
- #endif
- #ifdef HAVE_X11_Xxf86misc
- test_Xxf86misc,
- #endif
- #ifdef HAVE_X11_Xxf86vm
- test_Xxf86vm,
- #endif
- #ifdef HAVE_X11_Xfixes
- test_Xfixes,
- #endif
- #ifdef HAVE_X11_Xft
- test_Xft,
- #endif
- #ifdef HAVE_X11_Xi
- test_Xi,
- #endif
- #ifdef HAVE_X11_Xinerama
- test_Xinerama,
- #endif
- #ifdef HAVE_X11_Xkb
- test_Xkb,
- #endif
- #ifdef HAVE_X11_xkbfile
- test_xkbfile,
- #endif
- #ifdef HAVE_X11_Xmu
- test_Xmu,
- #endif
- #ifdef HAVE_X11_Xpm
- test_Xpm,
- #endif
- #ifdef HAVE_X11_Xtst
- test_Xtst,
- #endif
- #ifdef HAVE_X11_Xrandr
- test_Xrandr,
- #endif
- #ifdef HAVE_X11_Xrender
- test_Xrender,
- #endif
- #ifdef HAVE_X11_XRes
- test_XRes,
- #endif
- #ifdef HAVE_X11_Xss
- test_Xss,
- #endif
- #ifdef HAVE_X11_Xt
- test_Xt,
- #endif
- #ifdef HAVE_X11_Xutil
- test_Xutil,
- #endif
- #ifdef HAVE_X11_Xv
- test_Xv,
- #endif
- #ifdef HAVE_X11_Xaw
- test_Xaw,
- #endif
- #ifdef HAVE_xcb
- test_xcb,
- #endif
- #ifdef HAVE_xcb_util
- test_xcb_util,
- #endif
- #ifdef HAVE_xcb_xfixes
- test_xcb_xfixes,
- #endif
- NULL,
- };
- // The code here is to convince the compiler to keep the static functions but
- // without calling them. This ends up always being "0" because `argc` is
- // always 1 in the test harness which always returns the sentinel at the end
- // of the array. The array logic is there to ensure that the contents of
- // `fptrs` is not optimized out.
- return (int)fptrs[(sizeof(fptrs) / sizeof(*fptrs)) - argc];
- }
|