diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake index 491ea460fe..b584c3c56d 100644 --- a/Modules/FindX11.cmake +++ b/Modules/FindX11.cmake @@ -80,6 +80,7 @@ and also the following more fine grained variables and targets: X11_xkbfile_INCLUDE_PATH, X11_xkbfile_LIB, X11_xkbfile_FOUND, X11::xkbfile X11_Xmu_INCLUDE_PATH, X11_Xmu_LIB, X11_Xmu_FOUND, X11::Xmu X11_Xpm_INCLUDE_PATH, X11_Xpm_LIB, X11_Xpm_FOUND, X11::Xpm + X11_Xpresent_INCLUDE_PATH, X11_Xpresent_LIB, X11_Xpresent_FOUND, X11::Xpresent X11_Xtst_INCLUDE_PATH, X11_Xtst_LIB, X11_Xtst_FOUND, X11::Xtst X11_Xrandr_INCLUDE_PATH, X11_Xrandr_LIB, X11_Xrandr_FOUND, X11::Xrandr X11_Xrender_INCLUDE_PATH, X11_Xrender_LIB, X11_Xrender_FOUND, X11::Xrender @@ -222,6 +223,7 @@ if (UNIX) find_path(X11_xkbfile_INCLUDE_PATH X11/extensions/XKBfile.h ${X11_INC_SEARCH_PATH}) find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h ${X11_INC_SEARCH_PATH}) find_path(X11_Xpm_INCLUDE_PATH X11/xpm.h ${X11_INC_SEARCH_PATH}) + find_path(X11_Xpresent_INCLUDE_PATH X11/extensions/Xpresent.h ${X11_INC_SEARCH_PATH}) find_path(X11_Xtst_INCLUDE_PATH X11/extensions/XTest.h ${X11_INC_SEARCH_PATH}) find_path(X11_XShm_INCLUDE_PATH X11/extensions/XShm.h ${X11_INC_SEARCH_PATH}) find_path(X11_Xrandr_INCLUDE_PATH X11/extensions/Xrandr.h ${X11_INC_SEARCH_PATH}) @@ -299,6 +301,7 @@ if (UNIX) find_library(X11_xkbfile_LIB xkbfile ${X11_LIB_SEARCH_PATH}) find_library(X11_Xmu_LIB Xmu ${X11_LIB_SEARCH_PATH}) find_library(X11_Xpm_LIB Xpm ${X11_LIB_SEARCH_PATH}) + find_library(X11_Xpresent_LIB Xpresent ${X11_LIB_SEARCH_PATH}) find_library(X11_Xrandr_LIB Xrandr ${X11_LIB_SEARCH_PATH}) find_library(X11_Xrender_LIB Xrender ${X11_LIB_SEARCH_PATH}) find_library(X11_XRes_LIB XRes ${X11_LIB_SEARCH_PATH}) @@ -523,6 +526,11 @@ if (UNIX) list(APPEND X11_INCLUDE_DIR ${X11_Xpm_INCLUDE_PATH}) endif () + if (X11_Xpresent_INCLUDE_PATH AND X11_Xpresent_LIB) + set(X11_Xpresent_FOUND TRUE) + list(APPEND X11_INCLUDE_DIR ${X11_Xpresent_INCLUDE_PATH}) + endif () + if (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB) set(X11_Xcomposite_FOUND TRUE) list(APPEND X11_INCLUDE_DIR ${X11_Xcomposite_INCLUDE_PATH}) @@ -1169,6 +1177,14 @@ if (UNIX) INTERFACE_LINK_LIBRARIES "X11::X11") endif () + if (X11_Xpresent_FOUND AND NOT TARGET X11::Xpresent) + add_library(X11::Xpresent UNKNOWN IMPORTED) + set_target_properties(X11::Xpresent PROPERTIES + IMPORTED_LOCATION "${X11_Xpresent_LIB}" + INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpresent_INCLUDE_PATH}" + INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext;X11::Xfixes;X11::Xrandr") + endif () + if (X11_Xtst_FOUND AND NOT TARGET X11::Xtst) add_library(X11::Xtst UNKNOWN IMPORTED) set_target_properties(X11::Xtst PROPERTIES @@ -1356,6 +1372,8 @@ if (UNIX) X11_Xss_LIB X11_Xpm_INCLUDE_PATH X11_Xpm_LIB + X11_Xpresent_INCLUDE_PATH + X11_Xpresent_LIB X11_Xft_LIB X11_Xft_INCLUDE_PATH X11_Xshape_INCLUDE_PATH diff --git a/Tests/FindX11/Test/CMakeLists.txt b/Tests/FindX11/Test/CMakeLists.txt index 3312f6f772..e47de60afa 100644 --- a/Tests/FindX11/Test/CMakeLists.txt +++ b/Tests/FindX11/Test/CMakeLists.txt @@ -82,6 +82,7 @@ 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 Xpresent) test_x11_component(x11_components Xtst) test_x11_component(x11_components Xrandr) test_x11_component(x11_components Xrender) @@ -147,6 +148,7 @@ foreach(lib xkbfile Xmu Xpm + Xpresent Xtst Xrandr Xrender diff --git a/Tests/FindX11/Test/main.c b/Tests/FindX11/Test/main.c index 2542145e5f..7e3c8863a1 100644 --- a/Tests/FindX11/Test/main.c +++ b/Tests/FindX11/Test/main.c @@ -201,6 +201,15 @@ static int test_Xpm(void) } #endif +#ifdef HAVE_X11_Xpresent +# include + +static int test_Xpresent(void) +{ + return XPresentVersion(); +} +#endif + #ifdef HAVE_X11_Xtst # include @@ -881,6 +890,9 @@ int main(int argc, char* argv[]) #ifdef HAVE_X11_Xpm test_Xpm, #endif +#ifdef HAVE_X11_Xpresent + test_Xpresent, +#endif #ifdef HAVE_X11_Xtst test_Xtst, #endif