107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 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_icccm)
 | |
| test_x11_component(x11_components xcb_util)
 | |
| test_x11_component(x11_components xcb_xfixes)
 | |
| test_x11_component(x11_components xcb_xkb)
 | |
| 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_icccm
 | |
|     xcb_util
 | |
|     xcb_xfixes
 | |
|     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)
 |