| cmake_minimum_required(VERSION 3.10) |
| project(TestFindX11 C) |
| include(CTest) |
| |
| find_package(X11 REQUIRED) |
| |
| function (test_x11_component have_var component) |
| if (NOT X11_${component}_FOUND) |
| message("Skipping ${component} because it was not found.") |
| return () |
| endif () |
| |
| add_executable(test_tgt_${component} main.c) |
| target_link_libraries(test_tgt_${component} PRIVATE X11::${component}) |
| target_compile_definitions(test_tgt_${component} PRIVATE HAVE_X11_${component}) |
| add_test(NAME test_tgt_${component} COMMAND test_tgt_${component}) |
| |
| # Add to the list of components to test for the parent. |
| set(${have_var} |
| ${${have_var}} |
| HAVE_X11_${component} |
| PARENT_SCOPE) |
| endfunction () |
| |
| set(x11_components) |
| test_x11_component(x11_components ICE) |
| test_x11_component(x11_components SM) |
| # Not a component; hack it up. |
| set(X11_X11_FOUND ${X11_FOUND}) |
| test_x11_component(x11_components X11) |
| test_x11_component(x11_components Xau) |
| test_x11_component(x11_components Xaw) |
| test_x11_component(x11_components xcb) |
| test_x11_component(x11_components X11_xcb) |
| test_x11_component(x11_components xcb_composite) |
| test_x11_component(x11_components xcb_cursor) |
| test_x11_component(x11_components xcb_damage) |
| test_x11_component(x11_components xcb_dpms) |
| test_x11_component(x11_components xcb_dri2) |
| test_x11_component(x11_components xcb_dri3) |
| test_x11_component(x11_components xcb_errors) |
| test_x11_component(x11_components xcb_ewmh) |
| test_x11_component(x11_components xcb_glx) |
| test_x11_component(x11_components xcb_icccm) |
| test_x11_component(x11_components xcb_image) |
| test_x11_component(x11_components xcb_keysyms) |
| test_x11_component(x11_components xcb_present) |
| test_x11_component(x11_components xcb_randr) |
| test_x11_component(x11_components xcb_record) |
| test_x11_component(x11_components xcb_render) |
| test_x11_component(x11_components xcb_render_util) |
| test_x11_component(x11_components xcb_res) |
| test_x11_component(x11_components xcb_screensaver) |
| test_x11_component(x11_components xcb_shape) |
| test_x11_component(x11_components xcb_shm) |
| test_x11_component(x11_components xcb_sync) |
| test_x11_component(x11_components xcb_util) |
| test_x11_component(x11_components xcb_xf86dri) |
| test_x11_component(x11_components xcb_xfixes) |
| test_x11_component(x11_components xcb_xinerama) |
| test_x11_component(x11_components xcb_xinput) |
| test_x11_component(x11_components xcb_xkb) |
| test_x11_component(x11_components xcb_xrm) |
| test_x11_component(x11_components xcb_xtest) |
| test_x11_component(x11_components xcb_xvmc) |
| test_x11_component(x11_components xcb_xv) |
| test_x11_component(x11_components Xcomposite) |
| test_x11_component(x11_components Xdamage) |
| test_x11_component(x11_components Xdmcp) |
| test_x11_component(x11_components Xext) |
| test_x11_component(x11_components Xxf86misc) |
| test_x11_component(x11_components Xxf86vm) |
| test_x11_component(x11_components Xfixes) |
| # We ignore the Xft component because the variables do not provide the required |
| # dependency information (Freetype and Fontconfig). |
| test_x11_component(x11_components_ignore Xft) |
| test_x11_component(x11_components Xi) |
| test_x11_component(x11_components Xinerama) |
| test_x11_component(x11_components xkbcommon) |
| test_x11_component(x11_components xkbcommon_X11) |
| test_x11_component(x11_components Xkb) |
| test_x11_component(x11_components xkbfile) |
| test_x11_component(x11_components Xmu) |
| test_x11_component(x11_components Xpm) |
| test_x11_component(x11_components Xtst) |
| test_x11_component(x11_components Xrandr) |
| test_x11_component(x11_components Xrender) |
| test_x11_component(x11_components XRes) |
| test_x11_component(x11_components Xss) |
| test_x11_component(x11_components Xt) |
| test_x11_component(x11_components Xutil) |
| test_x11_component(x11_components Xv) |
| |
| # The variables do not include dependency information. Just test "everything". |
| add_executable(test_var main.c) |
| target_include_directories(test_var PRIVATE ${X11_INCLUDE_DIRS}) |
| target_link_libraries(test_var PRIVATE ${X11_LIBRARIES}) |
| # Not included in X11_LIBRARIES. |
| foreach(lib |
| Xau |
| Xaw |
| xcb |
| X11_xcb |
| xcb_composite |
| xcb_cursor |
| xcb_damage |
| xcb_dpms |
| xcb_dri2 |
| xcb_dri3 |
| xcb_errors |
| xcb_ewmh |
| xcb_glx |
| xcb_icccm |
| xcb_image |
| xcb_keysyms |
| xcb_present |
| xcb_randr |
| xcb_record |
| xcb_render |
| xcb_render_util |
| xcb_res |
| xcb_screensaver |
| xcb_shape |
| xcb_shm |
| xcb_sync |
| xcb_util |
| xcb_xf86dri |
| xcb_xfixes |
| xcb_xinerama |
| xcb_xinput |
| xcb_xkb |
| xcb_xrm |
| xcb_xtest |
| xcb_xvmc |
| xcb_xv |
| Xcomposite |
| Xdamage |
| Xdmcp |
| Xxf86misc |
| Xxf86vm |
| Xfixes |
| Xi |
| Xinerama |
| xkbcommon |
| xkbcommon_X11 |
| Xkb |
| xkbfile |
| Xmu |
| Xpm |
| Xtst |
| Xrandr |
| Xrender |
| XRes |
| Xss |
| Xt |
| Xv |
| ) |
| if (X11_${lib}_FOUND) |
| target_link_libraries(test_var PRIVATE ${X11_${lib}_LIB}) |
| endif () |
| endforeach() |
| target_compile_definitions(test_var PRIVATE ${x11_components}) |
| add_test(NAME test_var COMMAND test_var) |