1# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2# file Copyright.txt or https://cmake.org/licensing for details.
3
4#[=======================================================================[.rst:
5FindX11
6-------
7
8Find X11 installation
9
10Try to find X11 on UNIX systems. The following values are defined
11
12::
13
14  X11_FOUND        - True if X11 is available
15  X11_INCLUDE_DIR  - include directories to use X11
16  X11_LIBRARIES    - link against these to use X11
17
18and also the following more fine grained variables and targets:
19
20.. versionadded:: 3.14
21  Imported targets.
22
23::
24
25  X11_ICE_INCLUDE_PATH,          X11_ICE_LIB,        X11_ICE_FOUND,        X11::ICE
26  X11_SM_INCLUDE_PATH,           X11_SM_LIB,         X11_SM_FOUND,         X11::SM
27  X11_X11_INCLUDE_PATH,          X11_X11_LIB,                              X11::X11
28  X11_Xaccessrules_INCLUDE_PATH,
29  X11_Xaccessstr_INCLUDE_PATH,                       X11_Xaccess_FOUND
30  X11_Xau_INCLUDE_PATH,          X11_Xau_LIB,        X11_Xau_FOUND,        X11::Xau
31  X11_xcb_INCLUDE_PATH,          X11_xcb_LIB,        X11_xcb_FOUND,        X11::xcb
32  X11_X11_xcb_INCLUDE_PATH,      X11_X11_xcb_LIB,    X11_X11_xcb_FOUND,    X11::X11_xcb
33  X11_xcb_icccm_INCLUDE_PATH,    X11_xcb_icccm_LIB,  X11_xcb_icccm_FOUND,  X11::xcb_icccm
34  X11_xcb_util_INCLUDE_PATH,     X11_xcb_util_LIB,   X11_xcb_util_FOUND,   X11::xcb_util
35  X11_xcb_xfixes_INCLUDE_PATH,   X11_xcb_xfixes_LIB, X11_xcb_xfixes_FOUND, X11::xcb_xfixes
36  X11_xcb_xkb_INCLUDE_PATH,      X11_xcb_xkb_LIB,    X11_xcb_xkb_FOUND,    X11::xcb_xkb
37  X11_Xcomposite_INCLUDE_PATH,   X11_Xcomposite_LIB, X11_Xcomposite_FOUND, X11::Xcomposite
38  X11_Xcursor_INCLUDE_PATH,      X11_Xcursor_LIB,    X11_Xcursor_FOUND,    X11::Xcursor
39  X11_Xdamage_INCLUDE_PATH,      X11_Xdamage_LIB,    X11_Xdamage_FOUND,    X11::Xdamage
40  X11_Xdmcp_INCLUDE_PATH,        X11_Xdmcp_LIB,      X11_Xdmcp_FOUND,      X11::Xdmcp
41  X11_Xext_INCLUDE_PATH,         X11_Xext_LIB,       X11_Xext_FOUND,       X11::Xext
42  X11_Xxf86misc_INCLUDE_PATH,    X11_Xxf86misc_LIB,  X11_Xxf86misc_FOUND,  X11::Xxf86misc
43  X11_Xxf86vm_INCLUDE_PATH,      X11_Xxf86vm_LIB     X11_Xxf86vm_FOUND,    X11::Xxf86vm
44  X11_Xfixes_INCLUDE_PATH,       X11_Xfixes_LIB,     X11_Xfixes_FOUND,     X11::Xfixes
45  X11_Xft_INCLUDE_PATH,          X11_Xft_LIB,        X11_Xft_FOUND,        X11::Xft
46  X11_Xi_INCLUDE_PATH,           X11_Xi_LIB,         X11_Xi_FOUND,         X11::Xi
47  X11_Xinerama_INCLUDE_PATH,     X11_Xinerama_LIB,   X11_Xinerama_FOUND,   X11::Xinerama
48  X11_Xkb_INCLUDE_PATH,
49  X11_Xkblib_INCLUDE_PATH,                           X11_Xkb_FOUND,        X11::Xkb
50  X11_xkbcommon_INCLUDE_PATH,    X11_xkbcommon_LIB,  X11_xkbcommon_FOUND,  X11::xkbcommon
51  X11_xkbcommon_X11_INCLUDE_PATH,X11_xkbcommon_X11_LIB,X11_xkbcommon_X11_FOUND,X11::xkbcommon_X11
52  X11_xkbfile_INCLUDE_PATH,      X11_xkbfile_LIB,    X11_xkbfile_FOUND,    X11::xkbfile
53  X11_Xmu_INCLUDE_PATH,          X11_Xmu_LIB,        X11_Xmu_FOUND,        X11::Xmu
54  X11_Xpm_INCLUDE_PATH,          X11_Xpm_LIB,        X11_Xpm_FOUND,        X11::Xpm
55  X11_Xtst_INCLUDE_PATH,         X11_Xtst_LIB,       X11_Xtst_FOUND,       X11::Xtst
56  X11_Xrandr_INCLUDE_PATH,       X11_Xrandr_LIB,     X11_Xrandr_FOUND,     X11::Xrandr
57  X11_Xrender_INCLUDE_PATH,      X11_Xrender_LIB,    X11_Xrender_FOUND,    X11::Xrender
58  X11_XRes_INCLUDE_PATH,         X11_XRes_LIB,       X11_XRes_FOUND,       X11::XRes
59  X11_Xss_INCLUDE_PATH,          X11_Xss_LIB,        X11_Xss_FOUND,        X11::Xss
60  X11_Xt_INCLUDE_PATH,           X11_Xt_LIB,         X11_Xt_FOUND,         X11::Xt
61  X11_Xutil_INCLUDE_PATH,                            X11_Xutil_FOUND,      X11::Xutil
62  X11_Xv_INCLUDE_PATH,           X11_Xv_LIB,         X11_Xv_FOUND,         X11::Xv
63  X11_dpms_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_dpms_FOUND
64  X11_XShm_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_XShm_FOUND
65  X11_Xshape_INCLUDE_PATH,       (in X11_Xext_LIB),  X11_Xshape_FOUND
66  X11_XSync_INCLUDE_PATH,        (in X11_Xext_LIB),  X11_XSync_FOUND
67  X11_Xaw_INCLUDE_PATH,          X11_Xaw_LIB         X11_Xaw_FOUND         X11::Xaw
68
69.. versionadded:: 3.14
70  Renamed ``Xxf86misc``, ``X11_Xxf86misc``, ``X11_Xxf86vm``, ``X11_xkbfile``,
71  ``X11_Xtst``, and ``X11_Xss`` libraries to match their file names.
72  Deprecated the ``X11_Xinput`` library.  Old names are still available
73  for compatibility.
74
75.. versionadded:: 3.14
76  Added the ``X11_Xext_INCLUDE_PATH`` variable.
77
78.. versionadded:: 3.18
79  Added the ``xcb``, ``X11-xcb``, ``xcb-icccm``, ``xcb-xkb``, ``xkbcommon``,
80  and ``xkbcommon-X11`` libraries.
81
82.. versionadded:: 3.19
83  Added the ``Xaw``, ``xcb_util``, and ``xcb_xfixes`` libraries.
84
85#]=======================================================================]
86
87if (UNIX)
88  set(X11_FOUND 0)
89  # X11 is never a framework and some header files may be
90  # found in tcl on the mac
91  set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
92  set(CMAKE_FIND_FRAMEWORK NEVER)
93  set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
94  set(CMAKE_REQUIRED_QUIET ${X11_FIND_QUIETLY})
95  set(X11_INC_SEARCH_PATH
96    /usr/pkg/xorg/include
97    /usr/X11R6/include
98    /usr/X11R7/include
99    /usr/include/X11
100    /usr/openwin/include
101    /usr/openwin/share/include
102    /opt/graphics/OpenGL/include
103    /opt/X11/include
104  )
105
106  set(X11_LIB_SEARCH_PATH
107    /usr/pkg/xorg/lib
108    /usr/X11R6/lib
109    /usr/X11R7/lib
110    /usr/openwin/lib
111    /opt/X11/lib
112  )
113
114  find_path(X11_X11_INCLUDE_PATH X11/X.h                             ${X11_INC_SEARCH_PATH})
115  find_path(X11_Xlib_INCLUDE_PATH X11/Xlib.h                         ${X11_INC_SEARCH_PATH})
116
117  # Look for includes; keep the list sorted by name of the cmake *_INCLUDE_PATH
118  # variable (which doesn't need to match the include file name).
119
120  # Solaris lacks XKBrules.h, so we should skip kxkbd there.
121  find_path(X11_ICE_INCLUDE_PATH X11/ICE/ICE.h                       ${X11_INC_SEARCH_PATH})
122  find_path(X11_SM_INCLUDE_PATH X11/SM/SM.h                          ${X11_INC_SEARCH_PATH})
123  find_path(X11_Xaccessrules_INCLUDE_PATH X11/extensions/XKBrules.h  ${X11_INC_SEARCH_PATH})
124  find_path(X11_Xaccessstr_INCLUDE_PATH X11/extensions/XKBstr.h      ${X11_INC_SEARCH_PATH})
125  find_path(X11_Xau_INCLUDE_PATH X11/Xauth.h                         ${X11_INC_SEARCH_PATH})
126  find_path(X11_Xaw_INCLUDE_PATH X11/Xaw/Intrinsic.h                 ${X11_INC_SEARCH_PATH})
127  find_path(X11_xcb_INCLUDE_PATH xcb/xcb.h                           ${X11_INC_SEARCH_PATH})
128  find_path(X11_X11_xcb_INCLUDE_PATH X11/Xlib-xcb.h                  ${X11_INC_SEARCH_PATH})
129  find_path(X11_xcb_icccm_INCLUDE_PATH xcb/xcb_icccm.h               ${X11_INC_SEARCH_PATH})
130  find_path(X11_xcb_util_INCLUDE_PATH xcb/xcb_aux.h                  ${X11_INC_SEARCH_PATH})
131  find_path(X11_xcb_xfixes_INCLUDE_PATH xcb/xfixes.h                 ${X11_INC_SEARCH_PATH})
132  find_path(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h  ${X11_INC_SEARCH_PATH})
133  find_path(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h           ${X11_INC_SEARCH_PATH})
134  find_path(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h        ${X11_INC_SEARCH_PATH})
135  find_path(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h                       ${X11_INC_SEARCH_PATH})
136  find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h              ${X11_INC_SEARCH_PATH})
137  find_path(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h              ${X11_INC_SEARCH_PATH})
138  find_path(X11_Xxf86misc_INCLUDE_PATH X11/extensions/xf86misc.h     ${X11_INC_SEARCH_PATH})
139  find_path(X11_Xxf86vm_INCLUDE_PATH X11/extensions/xf86vmode.h      ${X11_INC_SEARCH_PATH})
140  find_path(X11_Xfixes_INCLUDE_PATH X11/extensions/Xfixes.h          ${X11_INC_SEARCH_PATH})
141  find_path(X11_Xft_INCLUDE_PATH X11/Xft/Xft.h                       ${X11_INC_SEARCH_PATH})
142  find_path(X11_Xi_INCLUDE_PATH X11/extensions/XInput.h              ${X11_INC_SEARCH_PATH})
143  find_path(X11_Xinerama_INCLUDE_PATH X11/extensions/Xinerama.h      ${X11_INC_SEARCH_PATH})
144  find_path(X11_Xkb_INCLUDE_PATH X11/extensions/XKB.h                ${X11_INC_SEARCH_PATH})
145  find_path(X11_xkbcommon_INCLUDE_PATH xkbcommon/xkbcommon.h         ${X11_INC_SEARCH_PATH})
146  find_path(X11_xkbcommon_X11_INCLUDE_PATH xkbcommon/xkbcommon-x11.h ${X11_INC_SEARCH_PATH})
147  find_path(X11_Xkblib_INCLUDE_PATH X11/XKBlib.h                     ${X11_INC_SEARCH_PATH})
148  find_path(X11_xkbfile_INCLUDE_PATH X11/extensions/XKBfile.h        ${X11_INC_SEARCH_PATH})
149  find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h                       ${X11_INC_SEARCH_PATH})
150  find_path(X11_Xpm_INCLUDE_PATH X11/xpm.h                           ${X11_INC_SEARCH_PATH})
151  find_path(X11_Xtst_INCLUDE_PATH X11/extensions/XTest.h             ${X11_INC_SEARCH_PATH})
152  find_path(X11_XShm_INCLUDE_PATH X11/extensions/XShm.h              ${X11_INC_SEARCH_PATH})
153  find_path(X11_Xrandr_INCLUDE_PATH X11/extensions/Xrandr.h          ${X11_INC_SEARCH_PATH})
154  find_path(X11_Xrender_INCLUDE_PATH X11/extensions/Xrender.h        ${X11_INC_SEARCH_PATH})
155  find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h              ${X11_INC_SEARCH_PATH})
156  find_path(X11_Xss_INCLUDE_PATH X11/extensions/scrnsaver.h          ${X11_INC_SEARCH_PATH})
157  find_path(X11_Xshape_INCLUDE_PATH X11/extensions/shape.h           ${X11_INC_SEARCH_PATH})
158  find_path(X11_Xutil_INCLUDE_PATH X11/Xutil.h                       ${X11_INC_SEARCH_PATH})
159  find_path(X11_Xt_INCLUDE_PATH X11/Intrinsic.h                      ${X11_INC_SEARCH_PATH})
160  find_path(X11_Xv_INCLUDE_PATH X11/extensions/Xvlib.h               ${X11_INC_SEARCH_PATH})
161  find_path(X11_XSync_INCLUDE_PATH X11/extensions/sync.h             ${X11_INC_SEARCH_PATH})
162
163
164
165  # Backwards compatibility.
166  set(X11_Xinput_INCLUDE_PATH "${X11_Xi_INCLUDE_PATH}")
167  set(X11_xf86misc_INCLUDE_PATH "${X11_Xxf86misc_INCLUDE_PATH}")
168  set(X11_xf86vmode_INCLUDE_PATH "${X11_Xxf8vm_INCLUDE_PATH}")
169  set(X11_Xkbfile_INCLUDE_PATH "${X11_xkbfile_INCLUDE_PATH}")
170  set(X11_XTest_INCLUDE_PATH "${X11_Xtst_INCLUDE_PATH}")
171  set(X11_Xscreensaver_INCLUDE_PATH "${X11_Xss_INCLUDE_PATH}")
172
173  find_library(X11_X11_LIB X11               ${X11_LIB_SEARCH_PATH})
174
175  # Find additional X libraries. Keep list sorted by library name.
176  find_library(X11_ICE_LIB ICE               ${X11_LIB_SEARCH_PATH})
177  find_library(X11_SM_LIB SM                 ${X11_LIB_SEARCH_PATH})
178  find_library(X11_Xau_LIB Xau               ${X11_LIB_SEARCH_PATH})
179  find_library(X11_Xaw_LIB Xaw               ${X11_LIB_SEARCH_PATH})
180  find_library(X11_xcb_LIB xcb               ${X11_LIB_SEARCH_PATH})
181  find_library(X11_X11_xcb_LIB X11-xcb       ${X11_LIB_SEARCH_PATH})
182  find_library(X11_xcb_icccm_LIB xcb-icccm   ${X11_LIB_SEARCH_PATH})
183  find_library(X11_xcb_util_LIB xcb-util     ${X11_LIB_SEARCH_PATH})
184  find_library(X11_xcb_xfixes_LIB xcb-xfixes ${X11_LIB_SEARCH_PATH})
185  find_library(X11_xcb_xkb_LIB xcb-xkb       ${X11_LIB_SEARCH_PATH})
186  find_library(X11_Xcomposite_LIB Xcomposite ${X11_LIB_SEARCH_PATH})
187  find_library(X11_Xcursor_LIB Xcursor       ${X11_LIB_SEARCH_PATH})
188  find_library(X11_Xdamage_LIB Xdamage       ${X11_LIB_SEARCH_PATH})
189  find_library(X11_Xdmcp_LIB Xdmcp           ${X11_LIB_SEARCH_PATH})
190  find_library(X11_Xext_LIB Xext             ${X11_LIB_SEARCH_PATH})
191  find_library(X11_Xfixes_LIB Xfixes         ${X11_LIB_SEARCH_PATH})
192  find_library(X11_Xft_LIB Xft               ${X11_LIB_SEARCH_PATH})
193  find_library(X11_Xi_LIB Xi                 ${X11_LIB_SEARCH_PATH})
194  find_library(X11_Xinerama_LIB Xinerama     ${X11_LIB_SEARCH_PATH})
195  find_library(X11_xkbcommon_LIB xkbcommon   ${X11_LIB_SEARCH_PATH})
196  find_library(X11_xkbcommon_X11_LIB xkbcommon-x11   ${X11_LIB_SEARCH_PATH})
197  find_library(X11_xkbfile_LIB xkbfile       ${X11_LIB_SEARCH_PATH})
198  find_library(X11_Xmu_LIB Xmu               ${X11_LIB_SEARCH_PATH})
199  find_library(X11_Xpm_LIB Xpm               ${X11_LIB_SEARCH_PATH})
200  find_library(X11_Xrandr_LIB Xrandr         ${X11_LIB_SEARCH_PATH})
201  find_library(X11_Xrender_LIB Xrender       ${X11_LIB_SEARCH_PATH})
202  find_library(X11_XRes_LIB XRes             ${X11_LIB_SEARCH_PATH})
203  find_library(X11_Xss_LIB Xss               ${X11_LIB_SEARCH_PATH})
204  find_library(X11_Xt_LIB Xt                 ${X11_LIB_SEARCH_PATH})
205  find_library(X11_Xtst_LIB Xtst             ${X11_LIB_SEARCH_PATH})
206  find_library(X11_Xv_LIB Xv                 ${X11_LIB_SEARCH_PATH})
207  find_library(X11_Xxf86misc_LIB Xxf86misc   ${X11_LIB_SEARCH_PATH})
208  find_library(X11_Xxf86vm_LIB Xxf86vm       ${X11_LIB_SEARCH_PATH})
209
210  # Backwards compatibility.
211  set(X11_Xinput_LIB "${X11_Xi_LIB}")
212  set(X11_Xkbfile_LIB "${X11_xkbfile_LIB}")
213  set(X11_XTest_LIB "${X11_Xtst_LIB}")
214  set(X11_Xscreensaver_LIB "${X11_Xss_LIB}")
215
216  set(X11_LIBRARY_DIR "")
217  if(X11_X11_LIB)
218    get_filename_component(X11_LIBRARY_DIR ${X11_X11_LIB} PATH)
219  endif()
220
221  set(X11_INCLUDE_DIR) # start with empty list
222  if(X11_X11_INCLUDE_PATH)
223    list(APPEND X11_INCLUDE_DIR ${X11_X11_INCLUDE_PATH})
224  endif()
225
226  if(X11_Xlib_INCLUDE_PATH)
227    list(APPEND X11_INCLUDE_DIR ${X11_Xlib_INCLUDE_PATH})
228  endif()
229
230  if(X11_Xutil_INCLUDE_PATH)
231    set(X11_Xutil_FOUND TRUE)
232    list(APPEND X11_INCLUDE_DIR ${X11_Xutil_INCLUDE_PATH})
233  endif()
234
235  if(X11_Xshape_INCLUDE_PATH)
236    set(X11_Xshape_FOUND TRUE)
237    list(APPEND X11_INCLUDE_DIR ${X11_Xshape_INCLUDE_PATH})
238  endif()
239
240  set(X11_LIBRARIES) # start with empty list
241  if(X11_X11_LIB)
242    list(APPEND X11_LIBRARIES ${X11_X11_LIB})
243  endif()
244
245  if(X11_Xext_LIB)
246    set(X11_Xext_FOUND TRUE)
247    list(APPEND X11_LIBRARIES ${X11_Xext_LIB})
248  endif()
249
250  if(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
251    set(X11_Xt_FOUND TRUE)
252  endif()
253
254  if(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
255    find_package(Freetype QUIET)
256    find_package(Fontconfig QUIET)
257    if (FREETYPE_FOUND AND Fontconfig_FOUND)
258      set(X11_Xft_FOUND TRUE)
259    endif ()
260    list(APPEND X11_INCLUDE_DIR ${X11_Xft_INCLUDE_PATH})
261  endif()
262
263  if(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
264    set(X11_Xv_FOUND TRUE)
265    list(APPEND X11_INCLUDE_DIR ${X11_Xv_INCLUDE_PATH})
266  endif()
267
268  if (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
269    set(X11_Xau_FOUND TRUE)
270  endif ()
271
272  if (X11_xcb_LIB AND X11_xcb_INCLUDE_PATH)
273    set(X11_xcb_FOUND TRUE)
274  endif ()
275
276  if (X11_X11_xcb_LIB AND X11_X11_xcb_INCLUDE_PATH)
277    set(X11_X11_xcb_FOUND TRUE)
278  endif ()
279
280  if (X11_xcb_icccm_LIB AND X11_xcb_icccm_INCLUDE_PATH)
281    set(X11_xcb_icccm_FOUND TRUE)
282  endif ()
283
284  if (X11_xcb_util_LIB AND X11_xcb_util_INCLUDE_PATH)
285    set(X11_xcb_util_FOUND TRUE)
286  endif ()
287
288  if (X11_xcb_xfixes_LIB)
289    set(X11_xcb_xfixes_FOUND TRUE)
290  endif ()
291
292  if (X11_xcb_xkb_LIB)
293    set(X11_xcb_xkb_FOUND TRUE)
294  endif ()
295
296  if (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
297      set(X11_Xdmcp_FOUND TRUE)
298      list(APPEND X11_INCLUDE_DIR ${X11_Xdmcp_INCLUDE_PATH})
299  endif ()
300
301  if (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
302      set(X11_Xaccess_FOUND TRUE)
303      set(X11_Xaccess_INCLUDE_PATH ${X11_Xaccessstr_INCLUDE_PATH})
304      list(APPEND X11_INCLUDE_DIR ${X11_Xaccess_INCLUDE_PATH})
305  endif ()
306
307  if (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
308      set(X11_Xpm_FOUND TRUE)
309      list(APPEND X11_INCLUDE_DIR ${X11_Xpm_INCLUDE_PATH})
310  endif ()
311
312  if (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB)
313     set(X11_Xcomposite_FOUND TRUE)
314     list(APPEND X11_INCLUDE_DIR ${X11_Xcomposite_INCLUDE_PATH})
315  endif ()
316
317  if (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
318     set(X11_Xdamage_FOUND TRUE)
319     list(APPEND X11_INCLUDE_DIR ${X11_Xdamage_INCLUDE_PATH})
320  endif ()
321
322  if (X11_XShm_INCLUDE_PATH)
323     set(X11_XShm_FOUND TRUE)
324     list(APPEND X11_INCLUDE_DIR ${X11_XShm_INCLUDE_PATH})
325  endif ()
326
327  if (X11_Xtst_INCLUDE_PATH AND X11_Xtst_LIB)
328      set(X11_Xtst_FOUND TRUE)
329      # Backwards compatibility.
330      set(X11_XTest_FOUND TRUE)
331      list(APPEND X11_INCLUDE_DIR ${X11_Xtst_INCLUDE_PATH})
332  endif ()
333
334  if (X11_Xi_INCLUDE_PATH AND X11_Xi_LIB)
335     set(X11_Xi_FOUND TRUE)
336     # Backwards compatibility.
337     set(X11_Xinput_FOUND TRUE)
338     list(APPEND X11_INCLUDE_DIR ${X11_Xi_INCLUDE_PATH})
339  endif ()
340
341  if (X11_Xinerama_INCLUDE_PATH AND X11_Xinerama_LIB)
342     set(X11_Xinerama_FOUND TRUE)
343     list(APPEND X11_INCLUDE_DIR ${X11_Xinerama_INCLUDE_PATH})
344  endif ()
345
346  if (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
347     set(X11_Xfixes_FOUND TRUE)
348     list(APPEND X11_INCLUDE_DIR ${X11_Xfixes_INCLUDE_PATH})
349  endif ()
350
351  if (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
352     set(X11_Xrender_FOUND TRUE)
353     list(APPEND X11_INCLUDE_DIR ${X11_Xrender_INCLUDE_PATH})
354  endif ()
355
356  if (X11_XRes_INCLUDE_PATH AND X11_XRes_LIB)
357     set(X11_XRes_FOUND TRUE)
358     list(APPEND X11_INCLUDE_DIR ${X11_XRes_INCLUDE_PATH})
359  endif ()
360
361  if (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
362     set(X11_Xrandr_FOUND TRUE)
363     list(APPEND X11_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
364  endif ()
365
366  if (X11_Xxf86misc_INCLUDE_PATH AND X11_Xxf86misc_LIB)
367     set(X11_Xxf86misc_FOUND TRUE)
368     # Backwards compatibility.
369     set(X11_xf86misc_FOUND TRUE)
370     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86misc_INCLUDE_PATH})
371  endif ()
372
373  if (X11_Xxf86vm_INCLUDE_PATH AND X11_Xxf86vm_LIB)
374     set(X11_Xxf86vm_FOUND TRUE)
375     # Backwards compatibility.
376     set(X11_xf86vmode_FOUND TRUE)
377     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86vm_INCLUDE_PATH})
378  endif ()
379
380  if (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
381     set(X11_Xcursor_FOUND TRUE)
382     list(APPEND X11_INCLUDE_DIR ${X11_Xcursor_INCLUDE_PATH})
383  endif ()
384
385  if (X11_Xss_INCLUDE_PATH AND X11_Xss_LIB)
386     set(X11_Xss_FOUND TRUE)
387     set(X11_Xscreensaver_FOUND TRUE)
388     list(APPEND X11_INCLUDE_DIR ${X11_Xss_INCLUDE_PATH})
389  endif ()
390
391  if (X11_dpms_INCLUDE_PATH)
392     set(X11_dpms_FOUND TRUE)
393     list(APPEND X11_INCLUDE_DIR ${X11_dpms_INCLUDE_PATH})
394  endif ()
395
396  if (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
397     set(X11_Xkb_FOUND TRUE)
398     list(APPEND X11_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH} )
399  endif ()
400
401  if (X11_xkbcommon_INCLUDE_PATH AND X11_xkbcommon_LIB)
402     set(X11_xkbcommon_FOUND TRUE)
403  endif ()
404
405  if (X11_xkbcommon_X11_INCLUDE_PATH AND X11_xkbcommon_X11_LIB)
406     set(X11_xkbcommon_X11_FOUND TRUE)
407  endif ()
408
409  if (X11_xkbfile_INCLUDE_PATH AND X11_xkbfile_LIB AND X11_Xlib_INCLUDE_PATH)
410     set(X11_xkbfile_FOUND TRUE)
411     # Backwards compatibility.
412     set(X11_Xkbfile_FOUND TRUE)
413     list(APPEND X11_INCLUDE_DIR ${X11_xkbfile_INCLUDE_PATH} )
414  endif ()
415
416  if (X11_Xmu_INCLUDE_PATH AND X11_Xmu_LIB)
417     set(X11_Xmu_FOUND TRUE)
418     list(APPEND X11_INCLUDE_DIR ${X11_Xmu_INCLUDE_PATH})
419  endif ()
420
421  if (X11_XSync_INCLUDE_PATH)
422     set(X11_XSync_FOUND TRUE)
423     list(APPEND X11_INCLUDE_DIR ${X11_XSync_INCLUDE_PATH})
424  endif ()
425
426  if(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
427     set(X11_ICE_FOUND TRUE)
428  endif()
429
430  if(X11_SM_LIB AND X11_SM_INCLUDE_PATH)
431     set(X11_SM_FOUND TRUE)
432  endif()
433
434  if(X11_Xaw_LIB AND X11_Xaw_INCLUDE_PATH)
435      set(X11_Xaw_FOUND TRUE)
436  endif()
437
438  # Most of the X11 headers will be in the same directories, avoid
439  # creating a huge list of duplicates.
440  if (X11_INCLUDE_DIR)
441     list(REMOVE_DUPLICATES X11_INCLUDE_DIR)
442  endif ()
443
444  # Deprecated variable for backwards compatibility with CMake 1.4
445  if (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
446    set(X11_FOUND 1)
447  endif ()
448
449  include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
450  if (CMAKE_FIND_PACKAGE_NAME STREQUAL "FLTK")
451    # FindFLTK include()'s this module. It's an old pattern, but rather than
452    # trying to suppress this from outside the module (which is then sensitive
453    # to the contents, detect the case in this module and suppress it
454    # explicitly.
455    set(FPHSA_NAME_MISMATCHED 1)
456  endif ()
457  find_package_handle_standard_args(X11
458    REQUIRED_VARS X11_X11_INCLUDE_PATH X11_X11_LIB
459    HANDLE_COMPONENTS)
460  unset(FPHSA_NAME_MISMATCHED)
461
462  if(X11_FOUND)
463    include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
464    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
465
466    # Translated from an autoconf-generated configure script.
467    # See libs.m4 in autoconf's m4 directory.
468    if($ENV{ISC} MATCHES "^yes$")
469      set(X11_X_EXTRA_LIBS -lnsl_s -linet)
470    else()
471      set(X11_X_EXTRA_LIBS "")
472
473      # See if XOpenDisplay in X11 works by itself.
474      check_library_exists("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO)
475      if(NOT X11_LIB_X11_SOLO)
476        # Find library needed for dnet_ntoa.
477        check_library_exists("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA)
478        if (X11_LIB_DNET_HAS_DNET_NTOA)
479          list(APPEND X11_X_EXTRA_LIBS -ldnet)
480        else ()
481          check_library_exists("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA)
482          if (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
483            list(APPEND X11_X_EXTRA_LIBS -ldnet_stub)
484          endif ()
485        endif ()
486      endif()
487
488      # Find library needed for gethostbyname.
489      check_function_exists("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME)
490      if(NOT CMAKE_HAVE_GETHOSTBYNAME)
491        check_library_exists("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
492        if (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
493          list(APPEND X11_X_EXTRA_LIBS -lnsl)
494        else ()
495          check_library_exists("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
496          if (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
497            list(APPEND X11_X_EXTRA_LIBS -lbsd)
498          endif ()
499        endif ()
500      endif()
501
502      # Find library needed for connect.
503      check_function_exists("connect" CMAKE_HAVE_CONNECT)
504      if(NOT CMAKE_HAVE_CONNECT)
505        check_library_exists("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT)
506        if (CMAKE_LIB_SOCKET_HAS_CONNECT)
507          list(INSERT X11_X_EXTRA_LIBS 0 -lsocket)
508        endif ()
509      endif()
510
511      # Find library needed for remove.
512      check_function_exists("remove" CMAKE_HAVE_REMOVE)
513      if(NOT CMAKE_HAVE_REMOVE)
514        check_library_exists("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE)
515        if (CMAKE_LIB_POSIX_HAS_REMOVE)
516          list(APPEND X11_X_EXTRA_LIBS -lposix)
517        endif ()
518      endif()
519
520      # Find library needed for shmat.
521      check_function_exists("shmat" CMAKE_HAVE_SHMAT)
522      if(NOT CMAKE_HAVE_SHMAT)
523        check_library_exists("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT)
524        if (CMAKE_LIB_IPS_HAS_SHMAT)
525          list(APPEND X11_X_EXTRA_LIBS -lipc)
526        endif ()
527      endif()
528    endif()
529
530    if (X11_ICE_FOUND)
531      check_library_exists("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}"
532                            CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
533      if(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
534        set (X11_X_PRE_LIBS ${X11_ICE_LIB})
535        if(X11_SM_LIB)
536          list(INSERT X11_X_PRE_LIBS 0 ${X11_SM_LIB})
537        endif()
538      endif()
539    endif ()
540
541    # Build the final list of libraries.
542    set(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})
543
544    if (NOT TARGET X11::X11)
545      add_library(X11::X11 UNKNOWN IMPORTED)
546      set_target_properties(X11::X11 PROPERTIES
547        IMPORTED_LOCATION "${X11_X11_LIB}"
548        INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
549    endif ()
550  endif ()
551
552  if (X11_ICE_FOUND AND NOT TARGET X11::ICE)
553    add_library(X11::ICE UNKNOWN IMPORTED)
554    set_target_properties(X11::ICE PROPERTIES
555      IMPORTED_LOCATION "${X11_ICE_LIB}"
556      INTERFACE_INCLUDE_DIRECTORIES "${X11_ICE_INCLUDE_PATH}")
557  endif ()
558
559  if (X11_SM_FOUND AND NOT TARGET X11::SM)
560    add_library(X11::SM UNKNOWN IMPORTED)
561    set_target_properties(X11::SM PROPERTIES
562      IMPORTED_LOCATION "${X11_SM_LIB}"
563      INTERFACE_INCLUDE_DIRECTORIES "${X11_SM_INCLUDE_PATH}")
564  endif ()
565
566  if (X11_Xau_FOUND AND NOT TARGET X11::Xau)
567    add_library(X11::Xau UNKNOWN IMPORTED)
568    set_target_properties(X11::Xau PROPERTIES
569      IMPORTED_LOCATION "${X11_Xau_LIB}"
570      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xau_INCLUDE_PATH}")
571  endif ()
572
573  if (X11_Xaw_FOUND AND NOT TARGET X11::Xaw)
574    add_library(X11::Xaw UNKNOWN IMPORTED)
575    set_target_properties(X11::Xaw PROPERTIES
576      IMPORTED_LOCATION "${X11_Xaw_LIB}"
577      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xaw_INCLUDE_PATH}"
578      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::Xmu;X11::Xt;X11::Xpm;X11::X11")
579  endif ()
580
581  if (X11_xcb_FOUND AND NOT TARGET X11::xcb)
582    add_library(X11::xcb UNKNOWN IMPORTED)
583    set_target_properties(X11::xcb PROPERTIES
584      IMPORTED_LOCATION "${X11_xcb_LIB}"
585      INTERFACE_INCLUDE_DIRECTORIES "${X11_xcb_INCLUDE_PATH}")
586  endif ()
587
588  if (X11_X11_xcb_FOUND AND NOT TARGET X11::X11_xcb)
589    add_library(X11::X11_xcb UNKNOWN IMPORTED)
590    set_target_properties(X11::X11_xcb PROPERTIES
591      IMPORTED_LOCATION "${X11_X11_xcb_LIB}"
592      INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_xcb_INCLUDE_PATH}"
593      INTERFACE_LINK_LIBRARIES "X11::xcb;X11::X11")
594  endif ()
595
596  if (X11_xcb_icccm_FOUND AND NOT TARGET X11::xcb_icccm)
597    add_library(X11::xcb_icccm UNKNOWN IMPORTED)
598    set_target_properties(X11::xcb_icccm PROPERTIES
599      IMPORTED_LOCATION "${X11_xcb_icccm_LIB}"
600      INTERFACE_LINK_LIBRARIES "X11::xcb")
601  endif ()
602
603  if (X11_xcb_util_FOUND AND NOT TARGET X11::xcb_util)
604    add_library(X11::xcb_util UNKNOWN IMPORTED)
605    set_target_properties(X11::xcb_util PROPERTIES
606      IMPORTED_LOCATION "${X11_xcb_util_LIB}"
607      INTERFACE_LINK_LIBRARIES "X11::xcb")
608  endif ()
609
610  if (X11_xcb_xfixes_FOUND AND NOT TARGET X11::xcb_xfixes)
611    add_library(X11::xcb_xfixes UNKNOWN IMPORTED)
612    set_target_properties(X11::xcb_xfixes PROPERTIES
613      IMPORTED_LOCATION "${X11_xcb_xfixes_LIB}"
614      INTERFACE_LINK_LIBRARIES "X11::xcb")
615  endif ()
616
617  if (X11_xcb_xkb_FOUND AND NOT TARGET X11::xcb_xkb)
618    add_library(X11::xcb_xkb UNKNOWN IMPORTED)
619    set_target_properties(X11::xcb_xkb PROPERTIES
620      IMPORTED_LOCATION "${X11_xcb_xkb_LIB}"
621      INTERFACE_LINK_LIBRARIES "X11::xcb")
622  endif ()
623
624  if (X11_Xcomposite_FOUND AND NOT TARGET X11::Xcomposite)
625    add_library(X11::Xcomposite UNKNOWN IMPORTED)
626    set_target_properties(X11::Xcomposite PROPERTIES
627      IMPORTED_LOCATION "${X11_Xcomposite_LIB}"
628      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcomposite_INCLUDE_PATH}"
629      INTERFACE_LINK_LIBRARIES "X11::X11")
630  endif ()
631
632  if (X11_Xcursor_FOUND AND NOT TARGET X11::Xcursor)
633    add_library(X11::Xcursor UNKNOWN IMPORTED)
634    set_target_properties(X11::Xcursor PROPERTIES
635      IMPORTED_LOCATION "${X11_Xcursor_LIB}"
636      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcursor_INCLUDE_PATH}"
637      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xfixes;X11::X11")
638  endif ()
639
640  if (X11_Xdamage_FOUND AND NOT TARGET X11::Xdamage)
641    add_library(X11::Xdamage UNKNOWN IMPORTED)
642    set_target_properties(X11::Xdamage PROPERTIES
643      IMPORTED_LOCATION "${X11_Xdamage_LIB}"
644      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdamage_INCLUDE_PATH}"
645      INTERFACE_LINK_LIBRARIES "X11::Xfixes;X11::X11")
646  endif ()
647
648  if (X11_Xdmcp_FOUND AND NOT TARGET X11::Xdmcp)
649    add_library(X11::Xdmcp UNKNOWN IMPORTED)
650    set_target_properties(X11::Xdmcp PROPERTIES
651      IMPORTED_LOCATION "${X11_Xdmcp_LIB}"
652      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdmcp_INCLUDE_PATH}")
653  endif ()
654
655  if (X11_Xext_FOUND AND NOT TARGET X11::Xext)
656    add_library(X11::Xext UNKNOWN IMPORTED)
657    set_target_properties(X11::Xext PROPERTIES
658      IMPORTED_LOCATION "${X11_Xext_LIB}"
659      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xext_INCLUDE_PATH}"
660      INTERFACE_LINK_LIBRARIES "X11::X11")
661  endif ()
662
663  if (X11_Xxf86misc_FOUND AND NOT TARGET X11::Xxf86misc)
664    add_library(X11::Xxf86misc UNKNOWN IMPORTED)
665    set_target_properties(X11::Xxf86misc PROPERTIES
666      IMPORTED_LOCATION "${X11_Xxf86misc_LIB}"
667      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86misc_INCLUDE_PATH}"
668      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
669  endif ()
670
671  if (X11_Xxf86vm_FOUND AND NOT TARGET X11::Xxf86vm)
672    add_library(X11::Xxf86vm UNKNOWN IMPORTED)
673    set_target_properties(X11::Xxf86vm PROPERTIES
674      IMPORTED_LOCATION "${X11_Xxf86vm_LIB}"
675      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86vm_INCLUDE_PATH}"
676      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
677  endif ()
678
679  if (X11_Xfixes_FOUND AND NOT TARGET X11::Xfixes)
680    add_library(X11::Xfixes UNKNOWN IMPORTED)
681    set_target_properties(X11::Xfixes PROPERTIES
682      IMPORTED_LOCATION "${X11_Xfixes_LIB}"
683      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xfixes_INCLUDE_PATH}"
684      INTERFACE_LINK_LIBRARIES "X11::X11")
685  endif ()
686
687  if (X11_Xft_FOUND AND NOT TARGET X11::Xft)
688    add_library(X11::Xft UNKNOWN IMPORTED)
689    set_target_properties(X11::Xft PROPERTIES
690      IMPORTED_LOCATION "${X11_Xft_LIB}"
691      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xft_INCLUDE_PATH}"
692      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::X11;Fontconfig::Fontconfig;Freetype::Freetype")
693  endif ()
694
695  if (X11_Xi_FOUND AND NOT TARGET X11::Xi)
696    add_library(X11::Xi UNKNOWN IMPORTED)
697    set_target_properties(X11::Xi PROPERTIES
698      IMPORTED_LOCATION "${X11_Xi_LIB}"
699      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xi_INCLUDE_PATH}"
700      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
701  endif ()
702
703  if (X11_Xinerama_FOUND AND NOT TARGET X11::Xinerama)
704    add_library(X11::Xinerama UNKNOWN IMPORTED)
705    set_target_properties(X11::Xinerama PROPERTIES
706      IMPORTED_LOCATION "${X11_Xinerama_LIB}"
707      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xinerama_INCLUDE_PATH}"
708      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
709  endif ()
710
711  if (X11_Xkb_FOUND AND NOT TARGET X11::Xkb)
712    add_library(X11::Xkb INTERFACE IMPORTED)
713    set_target_properties(X11::Xkb PROPERTIES
714      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xkb_INCLUDE_PATH}"
715      INTERFACE_LINK_LIBRARIES "X11::X11")
716  endif ()
717
718  if (X11_xkbcommon_FOUND AND NOT TARGET X11::xkbcommon)
719    add_library(X11::xkbcommon UNKNOWN IMPORTED)
720    set_target_properties(X11::xkbcommon PROPERTIES
721      IMPORTED_LOCATION "${X11_xkbcommon_LIB}"
722      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_INCLUDE_PATH}")
723  endif ()
724
725  if (X11_xkbcommon_X11_FOUND AND NOT TARGET X11::xkbcommon_X11)
726    add_library(X11::xkbcommon_X11 UNKNOWN IMPORTED)
727    set_target_properties(X11::xkbcommon_X11 PROPERTIES
728      IMPORTED_LOCATION "${X11_xkbcommon_X11_LIB}"
729      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_X11_INCLUDE_PATH}"
730      INTERFACE_LINK_LIBRARIES "X11::X11;X11::xkbcommon")
731  endif ()
732
733  if (X11_xkbfile_FOUND AND NOT TARGET X11::xkbfile)
734    add_library(X11::xkbfile UNKNOWN IMPORTED)
735    set_target_properties(X11::xkbfile PROPERTIES
736      IMPORTED_LOCATION "${X11_xkbfile_LIB}"
737      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbfile_INCLUDE_PATH}"
738      INTERFACE_LINK_LIBRARIES "X11::X11")
739  endif ()
740
741  if (X11_Xmu_FOUND AND NOT TARGET X11::Xmu)
742    add_library(X11::Xmu UNKNOWN IMPORTED)
743    set_target_properties(X11::Xmu PROPERTIES
744      IMPORTED_LOCATION "${X11_Xmu_LIB}"
745      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xmu_INCLUDE_PATH}"
746      INTERFACE_LINK_LIBRARIES "X11::Xt;X11::Xext;X11::X11")
747  endif ()
748
749  if (X11_Xpm_FOUND AND NOT TARGET X11::Xpm)
750    add_library(X11::Xpm UNKNOWN IMPORTED)
751    set_target_properties(X11::Xpm PROPERTIES
752      IMPORTED_LOCATION "${X11_Xpm_LIB}"
753      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpm_INCLUDE_PATH}"
754      INTERFACE_LINK_LIBRARIES "X11::X11")
755  endif ()
756
757  if (X11_Xtst_FOUND AND NOT TARGET X11::Xtst)
758    add_library(X11::Xtst UNKNOWN IMPORTED)
759    set_target_properties(X11::Xtst PROPERTIES
760      IMPORTED_LOCATION "${X11_Xtst_LIB}"
761      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xtst_INCLUDE_PATH}"
762      INTERFACE_LINK_LIBRARIES "X11::Xi;X11::Xext;X11::X11")
763  endif ()
764
765  if (X11_Xrandr_FOUND AND NOT TARGET X11::Xrandr)
766    add_library(X11::Xrandr UNKNOWN IMPORTED)
767    set_target_properties(X11::Xrandr PROPERTIES
768      IMPORTED_LOCATION "${X11_Xrandr_LIB}"
769      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrandr_INCLUDE_PATH}"
770      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xext;X11::X11")
771  endif ()
772
773  if (X11_Xrender_FOUND AND NOT TARGET X11::Xrender)
774    add_library(X11::Xrender UNKNOWN IMPORTED)
775    set_target_properties(X11::Xrender PROPERTIES
776      IMPORTED_LOCATION "${X11_Xrender_LIB}"
777      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrender_INCLUDE_PATH}"
778      INTERFACE_LINK_LIBRARIES "X11::X11")
779  endif ()
780
781  if (X11_XRes_FOUND AND NOT TARGET X11::XRes)
782    add_library(X11::XRes UNKNOWN IMPORTED)
783    set_target_properties(X11::XRes PROPERTIES
784      IMPORTED_LOCATION "${X11_XRes_LIB}"
785      INTERFACE_INCLUDE_DIRECTORIES "${X11_XRes_INCLUDE_PATH}"
786      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
787  endif ()
788
789  if (X11_Xss_FOUND AND NOT TARGET X11::Xss)
790    add_library(X11::Xss UNKNOWN IMPORTED)
791    set_target_properties(X11::Xss PROPERTIES
792      IMPORTED_LOCATION "${X11_Xss_LIB}"
793      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xss_INCLUDE_PATH}"
794      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
795  endif ()
796
797  if (X11_Xt_FOUND AND NOT TARGET X11::Xt)
798    add_library(X11::Xt UNKNOWN IMPORTED)
799    set_target_properties(X11::Xt PROPERTIES
800      IMPORTED_LOCATION "${X11_Xt_LIB}"
801      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xt_INCLUDE_PATH}"
802      INTERFACE_LINK_LIBRARIES "X11::ICE;X11::SM;X11::X11")
803  endif ()
804
805  if (X11_Xutil_FOUND AND NOT TARGET X11::Xutil)
806    add_library(X11::Xutil INTERFACE IMPORTED)
807    set_target_properties(X11::Xutil PROPERTIES
808      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xutil_INCLUDE_PATH}"
809      # libX11 contains the implementations for functions in the Xutil.h
810      # header.
811      INTERFACE_LINK_LIBRARIES "X11::X11")
812  endif ()
813
814  if (X11_Xv_FOUND AND NOT TARGET X11::Xv)
815    add_library(X11::Xv UNKNOWN IMPORTED)
816    set_target_properties(X11::Xv PROPERTIES
817      IMPORTED_LOCATION "${X11_Xv_LIB}"
818      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xv_INCLUDE_PATH}"
819      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
820  endif ()
821
822  mark_as_advanced(
823    X11_X11_INCLUDE_PATH
824    X11_X11_LIB
825    X11_Xext_INCLUDE_PATH
826    X11_Xext_LIB
827    X11_Xau_LIB
828    X11_Xau_INCLUDE_PATH
829    X11_xcb_LIB
830    X11_xcb_INCLUDE_PATH
831    X11_xcb_icccm_LIB
832    X11_xcb_icccm_INCLUDE_PATH
833    X11_xcb_util_LIB
834    X11_xcb_util_INCLUDE_PATH
835    X11_xcb_xfixes_LIB
836    X11_xcb_xfixes_INCLUDE_PATH
837    X11_xcb_xkb_LIB
838    X11_X11_xcb_LIB
839    X11_X11_xcb_INCLUDE_PATH
840    X11_Xlib_INCLUDE_PATH
841    X11_Xutil_INCLUDE_PATH
842    X11_Xcomposite_INCLUDE_PATH
843    X11_Xcomposite_LIB
844    X11_Xfixes_LIB
845    X11_Xfixes_INCLUDE_PATH
846    X11_Xrandr_LIB
847    X11_Xrandr_INCLUDE_PATH
848    X11_Xdamage_LIB
849    X11_Xdamage_INCLUDE_PATH
850    X11_Xrender_LIB
851    X11_Xrender_INCLUDE_PATH
852    X11_XRes_LIB
853    X11_XRes_INCLUDE_PATH
854    X11_Xxf86misc_LIB
855    X11_Xxf86misc_INCLUDE_PATH
856    X11_Xxf86vm_LIB
857    X11_Xxf86vm_INCLUDE_PATH
858    X11_Xi_LIB
859    X11_Xi_INCLUDE_PATH
860    X11_Xinerama_LIB
861    X11_Xinerama_INCLUDE_PATH
862    X11_Xtst_LIB
863    X11_Xtst_INCLUDE_PATH
864    X11_Xcursor_LIB
865    X11_Xcursor_INCLUDE_PATH
866    X11_dpms_INCLUDE_PATH
867    X11_Xt_LIB
868    X11_Xt_INCLUDE_PATH
869    X11_Xdmcp_LIB
870    X11_LIBRARIES
871    X11_Xaccessrules_INCLUDE_PATH
872    X11_Xaccessstr_INCLUDE_PATH
873    X11_Xdmcp_INCLUDE_PATH
874    X11_Xkb_INCLUDE_PATH
875    X11_Xkblib_INCLUDE_PATH
876    X11_xkbcommon_INCLUDE_PATH
877    X11_xkbcommon_LIB
878    X11_xkbcommon_X11_INCLUDE_PATH
879    X11_xkbcommon_X11_LIB
880    X11_xkbfile_INCLUDE_PATH
881    X11_xkbfile_LIB
882    X11_Xmu_INCLUDE_PATH
883    X11_Xmu_LIB
884    X11_Xss_INCLUDE_PATH
885    X11_Xss_LIB
886    X11_Xpm_INCLUDE_PATH
887    X11_Xpm_LIB
888    X11_Xft_LIB
889    X11_Xft_INCLUDE_PATH
890    X11_Xshape_INCLUDE_PATH
891    X11_Xv_LIB
892    X11_Xv_INCLUDE_PATH
893    X11_XShm_INCLUDE_PATH
894    X11_ICE_LIB
895    X11_ICE_INCLUDE_PATH
896    X11_SM_LIB
897    X11_SM_INCLUDE_PATH
898    X11_XSync_INCLUDE_PATH
899    X11_Xaw_LIB
900    X11_Xaw_INCLUDE_PATH
901  )
902  set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
903  set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
904endif ()
905