Resync
[CMakeLuaTailorHgBridge.git] / CMakeLua / Modules / FindX11.cmake
blobf3e88070e4ba435d95cbd92edca58702ca30cb0b
1 # - Find X11 installation
2 # Try to find X11 on UNIX systems. The following values are defined
3 #  X11_FOUND        - True if X11 is available
4 #  X11_INCLUDE_DIR  - include directories to use X11
5 #  X11_LIBRARIES    - link against these to use X11
7 # and also the following more fine grained variables:
8 # Include paths: X11_ICE_INCLUDE_PATH,          X11_ICE_LIB,        X11_ICE_FOUND
9 #                X11_Xaccessrules_INCLUDE_PATH,                     X11_Xaccess_FOUND
10 #                X11_Xaccessstr_INCLUDE_PATH,                       X11_Xaccess_FOUND
11 #                X11_Xau_INCLUDE_PATH,          X11_Xau_LIB,        X11_Xau_FOUND
12 #                X11_Xcomposite_INCLUDE_PATH,   X11_Xcomposite_LIB, X11_Xcomposite_FOUND
13 #                X11_Xcursor_INCLUDE_PATH,      X11_Xcursor_LIB,    X11_Xcursor_FOUND
14 #                X11_Xdamage_INCLUDE_PATH,      X11_Xdamage_LIB,    X11_Xdamage_FOUND
15 #                X11_Xdmcp_INCLUDE_PATH,        X11_Xdmcp_LIB,      X11_Xdmcp_FOUND
16 #                                               X11_Xext_LIB,       X11_Xext_FOUND
17 #                X11_dpms_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_dpms_FOUND
18 #                X11_XShm_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_XShm_FOUND
19 #                X11_Xshape_INCLUDE_PATH,       (in X11_Xext_LIB),  X11_Xshape_FOUND
20 #                X11_xf86misc_INCLUDE_PATH,     X11_Xxf86misc_LIB,  X11_xf86misc_FOUND
21 #                X11_xf86vmode_INCLUDE_PATH,                        X11_xf86vmode_FOUND
22 #                X11_Xfixes_INCLUDE_PATH,       X11_Xfixes_LIB,     X11_Xfixes_FOUND
23 #                X11_Xft_INCLUDE_PATH,          X11_Xft_LIB,        X11_Xft_FOUND
24 #                X11_Xinerama_INCLUDE_PATH,     X11_Xinerama_LIB,   X11_Xinerama_FOUND
25 #                X11_Xinput_INCLUDE_PATH,       X11_Xinput_LIB,     X11_Xinput_FOUND
26 #                X11_Xkb_INCLUDE_PATH,                              X11_Xkb_FOUND
27 #                X11_Xkblib_INCLUDE_PATH,                           X11_Xkb_FOUND
28 #                X11_Xpm_INCLUDE_PATH,          X11_Xpm_LIB,        X11_Xpm_FOUND
29 #                X11_XTest_INCLUDE_PATH,        X11_XTest_LIB,      X11_XTest_FOUND
30 #                X11_Xrandr_INCLUDE_PATH,       X11_Xrandr_LIB,     X11_Xrandr_FOUND
31 #                X11_Xrender_INCLUDE_PATH,      X11_Xrender_LIB,    X11_Xrender_FOUND
32 #                X11_Xscreensaver_INCLUDE_PATH, X11_Xscreensaver_LIB, X11_Xscreensaver_FOUND
33 #                X11_Xt_INCLUDE_PATH,           X11_Xt_LIB,         X11_Xt_FOUND
34 #                X11_Xutil_INCLUDE_PATH,                            X11_Xutil_FOUND
35 #                X11_Xv_INCLUDE_PATH,           X11_Xv_LIB,         X11_Xv_FOUND
37 # Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
38 # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
40 IF (UNIX)
41   SET(X11_FOUND 0)
42   # X11 is never a framework and some header files may be
43   # found in tcl on the mac
44   SET(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
45   SET(CMAKE_FIND_FRAMEWORK NEVER)
46   SET(X11_INC_SEARCH_PATH
47     /usr/pkg/xorg/include
48     /usr/X11R6/include 
49     /usr/local/include 
50     /usr/include/X11
51     /usr/openwin/include 
52     /usr/openwin/share/include 
53     /opt/graphics/OpenGL/include
54     /usr/include
55   )
57   SET(X11_LIB_SEARCH_PATH
58     /usr/pkg/xorg/lib
59     /usr/X11R6/lib
60     /usr/local/lib 
61     /usr/openwin/lib 
62     /usr/lib 
63   )
65   FIND_PATH(X11_X11_INCLUDE_PATH X11/X.h                             ${X11_INC_SEARCH_PATH})
66   FIND_PATH(X11_Xlib_INCLUDE_PATH X11/Xlib.h                         ${X11_INC_SEARCH_PATH})
68   # Look for includes; keep the list sorted by name of the cmake *_INCLUDE_PATH
69   # variable (which doesn't need to match the include file name).
70   
71   # Solaris lacks XKBrules.h, so we should skip kxkbd there.
72   FIND_PATH(X11_ICE_INCLUDE_PATH X11/ICE/ICE.h                       ${X11_INC_SEARCH_PATH})
73   FIND_PATH(X11_Xaccessrules_INCLUDE_PATH X11/extensions/XKBrules.h  ${X11_INC_SEARCH_PATH})
74   FIND_PATH(X11_Xaccessstr_INCLUDE_PATH X11/extensions/XKBstr.h      ${X11_INC_SEARCH_PATH})
75   FIND_PATH(X11_Xau_INCLUDE_PATH X11/Xauth.h                         ${X11_INC_SEARCH_PATH})
76   FIND_PATH(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h  ${X11_INC_SEARCH_PATH})
77   FIND_PATH(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h           ${X11_INC_SEARCH_PATH})
78   FIND_PATH(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h        ${X11_INC_SEARCH_PATH})
79   FIND_PATH(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h                       ${X11_INC_SEARCH_PATH})
80   FIND_PATH(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h              ${X11_INC_SEARCH_PATH})
81   FIND_PATH(X11_xf86misc_INCLUDE_PATH X11/extensions/xf86misc.h      ${X11_INC_SEARCH_PATH})
82   FIND_PATH(X11_xf86vmode_INCLUDE_PATH X11/extensions/xf86vmode.h    ${X11_INC_SEARCH_PATH})
83   FIND_PATH(X11_Xfixes_INCLUDE_PATH X11/extensions/Xfixes.h          ${X11_INC_SEARCH_PATH})
84   FIND_PATH(X11_Xft_INCLUDE_PATH X11/Xft/Xft.h                       ${X11_INC_SEARCH_PATH})
85   FIND_PATH(X11_Xinerama_INCLUDE_PATH X11/extensions/Xinerama.h      ${X11_INC_SEARCH_PATH})
86   FIND_PATH(X11_Xinput_INCLUDE_PATH X11/extensions/XInput.h          ${X11_INC_SEARCH_PATH})
87   FIND_PATH(X11_Xkb_INCLUDE_PATH X11/extensions/XKB.h                ${X11_INC_SEARCH_PATH})
88   FIND_PATH(X11_Xkblib_INCLUDE_PATH X11/XKBlib.h                     ${X11_INC_SEARCH_PATH})
89   FIND_PATH(X11_Xpm_INCLUDE_PATH X11/xpm.h                           ${X11_INC_SEARCH_PATH})
90   FIND_PATH(X11_XTest_INCLUDE_PATH X11/extensions/XTest.h            ${X11_INC_SEARCH_PATH})
91   FIND_PATH(X11_XShm_INCLUDE_PATH X11/extensions/XShm.h              ${X11_INC_SEARCH_PATH})
92   FIND_PATH(X11_Xrandr_INCLUDE_PATH X11/extensions/Xrandr.h          ${X11_INC_SEARCH_PATH})
93   FIND_PATH(X11_Xrender_INCLUDE_PATH X11/extensions/Xrender.h        ${X11_INC_SEARCH_PATH})
94   FIND_PATH(X11_Xscreensaver_INCLUDE_PATH X11/extensions/scrnsaver.h ${X11_INC_SEARCH_PATH})
95   FIND_PATH(X11_Xshape_INCLUDE_PATH X11/extensions/shape.h           ${X11_INC_SEARCH_PATH})
96   FIND_PATH(X11_Xutil_INCLUDE_PATH X11/Xutil.h                       ${X11_INC_SEARCH_PATH})
97   FIND_PATH(X11_Xt_INCLUDE_PATH X11/Intrinsic.h                      ${X11_INC_SEARCH_PATH})
98   FIND_PATH(X11_Xv_INCLUDE_PATH X11/extensions/Xvlib.h               ${X11_INC_SEARCH_PATH})
101   FIND_LIBRARY(X11_X11_LIB X11               ${X11_LIB_SEARCH_PATH})
103   # Find additional X libraries. Keep list sorted by library name.
104   FIND_LIBRARY(X11_ICE_LIB ICE               ${X11_LIB_SEARCH_PATH})
105   FIND_LIBRARY(X11_SM_LIB SM                 ${X11_LIB_SEARCH_PATH})
106   FIND_LIBRARY(X11_Xau_LIB Xau               ${X11_LIB_SEARCH_PATH})
107   FIND_LIBRARY(X11_Xcomposite_LIB Xcomposite ${X11_LIB_SEARCH_PATH})
108   FIND_LIBRARY(X11_Xcursor_LIB Xcursor       ${X11_LIB_SEARCH_PATH})
109   FIND_LIBRARY(X11_Xdamage_LIB Xdamage       ${X11_LIB_SEARCH_PATH})
110   FIND_LIBRARY(X11_Xdmcp_LIB Xdmcp           ${X11_LIB_SEARCH_PATH})
111   FIND_LIBRARY(X11_Xext_LIB Xext             ${X11_LIB_SEARCH_PATH})
112   FIND_LIBRARY(X11_Xfixes_LIB Xfixes         ${X11_LIB_SEARCH_PATH})
113   FIND_LIBRARY(X11_Xft_LIB Xft               ${X11_LIB_SEARCH_PATH})
114   FIND_LIBRARY(X11_Xinerama_LIB Xinerama     ${X11_LIB_SEARCH_PATH})
115   FIND_LIBRARY(X11_Xinput_LIB Xi             ${X11_LIB_SEARCH_PATH})
116   FIND_LIBRARY(X11_Xpm_LIB Xpm               ${X11_LIB_SEARCH_PATH})
117   FIND_LIBRARY(X11_Xrandr_LIB Xrandr         ${X11_LIB_SEARCH_PATH})
118   FIND_LIBRARY(X11_Xrender_LIB Xrender       ${X11_LIB_SEARCH_PATH})
119   FIND_LIBRARY(X11_Xscreensaver_LIB Xss      ${X11_LIB_SEARCH_PATH})
120   FIND_LIBRARY(X11_Xt_LIB Xt                 ${X11_LIB_SEARCH_PATH})
121   FIND_LIBRARY(X11_XTest_LIB Xtst            ${X11_LIB_SEARCH_PATH})
122   FIND_LIBRARY(X11_Xv_LIB Xv                 ${X11_LIB_SEARCH_PATH})
123   FIND_LIBRARY(X11_Xxf86misc_LIB Xxf86misc   ${X11_LIB_SEARCH_PATH})
125   SET(X11_LIBRARY_DIR "")
126   IF(X11_X11_LIB)
127     GET_FILENAME_COMPONENT(X11_LIBRARY_DIR ${X11_X11_LIB} PATH)
128   ENDIF(X11_X11_LIB)
130   SET(X11_INCLUDE_DIR) # start with empty list
131   IF(X11_X11_INCLUDE_PATH)
132     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_X11_INCLUDE_PATH})
133   ENDIF(X11_X11_INCLUDE_PATH)
135   IF(X11_Xlib_INCLUDE_PATH)
136     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xlib_INCLUDE_PATH})
137   ENDIF(X11_Xlib_INCLUDE_PATH)
139   IF(X11_Xutil_INCLUDE_PATH)
140     SET(X11_Xutil_FOUND TRUE)
141     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xutil_INCLUDE_PATH})
142   ENDIF(X11_Xutil_INCLUDE_PATH)
144   IF(X11_Xshape_INCLUDE_PATH)
145     SET(X11_Xshape_FOUND TRUE)
146     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xshape_INCLUDE_PATH})
147   ENDIF(X11_Xshape_INCLUDE_PATH)
149   SET(X11_LIBRARIES) # start with empty list
150   IF(X11_X11_LIB)
151     SET(X11_LIBRARIES ${X11_LIBRARIES} ${X11_X11_LIB})
152   ENDIF(X11_X11_LIB)
154   IF(X11_Xext_LIB)
155     SET(X11_Xext_FOUND TRUE)
156     SET(X11_LIBRARIES ${X11_LIBRARIES} ${X11_Xext_LIB})
157   ENDIF(X11_Xext_LIB)
159   IF(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
160     SET(X11_Xt_FOUND TRUE)
161   ENDIF(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
163   IF(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
164     SET(X11_Xft_FOUND TRUE)
165     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xft_INCLUDE_PATH})
166   ENDIF(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
168   IF(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
169     SET(X11_Xv_FOUND TRUE)
170     SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xv_INCLUDE_PATH})
171   ENDIF(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
173   IF (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
174     SET(X11_Xau_FOUND TRUE)
175   ENDIF (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
177   IF (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
178       SET(X11_Xdmcp_FOUND TRUE)
179       SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xdmcp_INCLUDE_PATH})
180   ENDIF (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
182   IF (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
183       SET(X11_Xaccess_FOUND TRUE)
184       SET(X11_Xaccess_INCLUDE_PATH ${X11_Xaccessstr_INCLUDE_PATH})
185       SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xaccess_INCLUDE_PATH})
186   ENDIF (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
188   IF (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
189       SET(X11_Xpm_FOUND TRUE)
190       SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xpm_INCLUDE_PATH})
191   ENDIF (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
193   IF (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB)
194      SET(X11_Xcomposite_FOUND TRUE)
195      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xcomposite_INCLUDE_PATH})
196   ENDIF (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB)
198   IF (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
199      SET(X11_Xdamage_FOUND TRUE)
200      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xdamage_INCLUDE_PATH})
201   ENDIF (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
203   IF (X11_XShm_INCLUDE_PATH)
204      SET(X11_XShm_FOUND TRUE)
205      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_XShm_INCLUDE_PATH})
206   ENDIF (X11_XShm_INCLUDE_PATH)
208   IF (X11_XTest_INCLUDE_PATH AND X11_XTest_LIB)
209       SET(X11_XTest_FOUND TRUE)
210       SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_XTest_INCLUDE_PATH})
211   ENDIF (X11_XTest_INCLUDE_PATH AND X11_XTest_LIB)
213   IF (X11_Xinerama_INCLUDE_PATH AND X11_Xinerama_LIB)
214      SET(X11_Xinerama_FOUND TRUE)
215      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xinerama_INCLUDE_PATH})
216   ENDIF (X11_Xinerama_INCLUDE_PATH  AND X11_Xinerama_LIB)
218   IF (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
219      SET(X11_Xfixes_FOUND TRUE)
220      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xfixes_INCLUDE_PATH})
221   ENDIF (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
223   IF (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
224      SET(X11_Xrender_FOUND TRUE)
225      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xrender_INCLUDE_PATH})
226   ENDIF (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
228   IF (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
229      SET(X11_Xrandr_FOUND TRUE)
230      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xrandr_INCLUDE_PATH})
231   ENDIF (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
233   IF (X11_xf86misc_INCLUDE_PATH AND X11_Xxf86misc_LIB)
234      SET(X11_xf86misc_FOUND TRUE)
235      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_xf86misc_INCLUDE_PATH})
236   ENDIF (X11_xf86misc_INCLUDE_PATH  AND X11_Xxf86misc_LIB)
238   IF (X11_xf86vmode_INCLUDE_PATH)
239      SET(X11_xf86vmode_FOUND TRUE)
240      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_xf86vmode_INCLUDE_PATH})
241   ENDIF (X11_xf86vmode_INCLUDE_PATH)
243   IF (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
244      SET(X11_Xcursor_FOUND TRUE)
245      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xcursor_INCLUDE_PATH})
246   ENDIF (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
248   IF (X11_Xscreensaver_INCLUDE_PATH AND X11_Xscreensaver_LIB)
249      SET(X11_Xscreensaver_FOUND TRUE)
250      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xscreensaver_INCLUDE_PATH})
251   ENDIF (X11_Xscreensaver_INCLUDE_PATH AND X11_Xscreensaver_LIB)
253   IF (X11_dpms_INCLUDE_PATH)
254      SET(X11_dpms_FOUND TRUE)
255      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_dpms_INCLUDE_PATH})
256   ENDIF (X11_dpms_INCLUDE_PATH)
258   IF (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
259      SET(X11_Xkb_FOUND TRUE)
260      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xkb_INCLUDE_PATH} )
261   ENDIF (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
263   IF (X11_Xinput_INCLUDE_PATH AND X11_Xinput_LIB)
264      SET(X11_Xinput_FOUND TRUE)
265      SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xinput_INCLUDE_PATH})
266   ENDIF (X11_Xinput_INCLUDE_PATH AND X11_Xinput_LIB)
268   IF(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
269      SET(X11_ICE_FOUND TRUE)
270   ENDIF(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
272   # Deprecated variable for backwards compatibility with CMake 1.4
273   IF (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
274     SET(X11_FOUND 1)
275   ENDIF (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
277   IF(X11_FOUND)
278     INCLUDE(CheckFunctionExists)
279     INCLUDE(CheckLibraryExists)
281     # Translated from an autoconf-generated configure script.
282     # See libs.m4 in autoconf's m4 directory.
283     IF($ENV{ISC} MATCHES "^yes$")
284       SET(X11_X_EXTRA_LIBS -lnsl_s -linet)
285     ELSE($ENV{ISC} MATCHES "^yes$")
286       SET(X11_X_EXTRA_LIBS "")
288       # See if XOpenDisplay in X11 works by itself.
289       CHECK_LIBRARY_EXISTS("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO)
290       IF(NOT X11_LIB_X11_SOLO)
291         # Find library needed for dnet_ntoa.
292         CHECK_LIBRARY_EXISTS("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA) 
293         IF (X11_LIB_DNET_HAS_DNET_NTOA)
294           SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -ldnet)
295         ELSE (X11_LIB_DNET_HAS_DNET_NTOA)
296           CHECK_LIBRARY_EXISTS("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA) 
297           IF (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
298             SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -ldnet_stub)
299           ENDIF (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
300         ENDIF (X11_LIB_DNET_HAS_DNET_NTOA)
301       ENDIF(NOT X11_LIB_X11_SOLO)
303       # Find library needed for gethostbyname.
304       CHECK_FUNCTION_EXISTS("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME)
305       IF(NOT CMAKE_HAVE_GETHOSTBYNAME)
306         CHECK_LIBRARY_EXISTS("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME) 
307         IF (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
308           SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lnsl)
309         ELSE (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
310           CHECK_LIBRARY_EXISTS("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME) 
311           IF (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
312             SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lbsd)
313           ENDIF (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
314         ENDIF (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
315       ENDIF(NOT CMAKE_HAVE_GETHOSTBYNAME)
317       # Find library needed for connect.
318       CHECK_FUNCTION_EXISTS("connect" CMAKE_HAVE_CONNECT)
319       IF(NOT CMAKE_HAVE_CONNECT)
320         CHECK_LIBRARY_EXISTS("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT) 
321         IF (CMAKE_LIB_SOCKET_HAS_CONNECT)
322           SET (X11_X_EXTRA_LIBS -lsocket ${X11_X_EXTRA_LIBS})
323         ENDIF (CMAKE_LIB_SOCKET_HAS_CONNECT)
324       ENDIF(NOT CMAKE_HAVE_CONNECT)
326       # Find library needed for remove.
327       CHECK_FUNCTION_EXISTS("remove" CMAKE_HAVE_REMOVE)
328       IF(NOT CMAKE_HAVE_REMOVE)
329         CHECK_LIBRARY_EXISTS("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE) 
330         IF (CMAKE_LIB_POSIX_HAS_REMOVE)
331           SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lposix)
332         ENDIF (CMAKE_LIB_POSIX_HAS_REMOVE)
333       ENDIF(NOT CMAKE_HAVE_REMOVE)
335       # Find library needed for shmat.
336       CHECK_FUNCTION_EXISTS("shmat" CMAKE_HAVE_SHMAT)
337       IF(NOT CMAKE_HAVE_SHMAT)
338         CHECK_LIBRARY_EXISTS("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT) 
339         IF (CMAKE_LIB_IPS_HAS_SHMAT)
340           SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lipc)
341         ENDIF (CMAKE_LIB_IPS_HAS_SHMAT)
342       ENDIF(NOT CMAKE_HAVE_SHMAT)
343     ENDIF($ENV{ISC} MATCHES "^yes$")
345     IF (X11_ICE_FOUND)
346       CHECK_LIBRARY_EXISTS("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}"
347                             CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
348       IF(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
349         SET (X11_X_PRE_LIBS ${X11_ICE_LIB})
350         IF(X11_SM_LIB)
351           SET (X11_X_PRE_LIBS ${X11_SM_LIB} ${X11_X_PRE_LIBS})
352         ENDIF(X11_SM_LIB)
353       ENDIF(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
354     ENDIF (X11_ICE_FOUND)
356     # Build the final list of libraries.
357     SET(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})
359     INCLUDE(FindPackageMessage)
360     FIND_PACKAGE_MESSAGE(X11 "Found X11: ${X11_X11_LIB}"
361       "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
362   ELSE (X11_FOUND)
363     IF (X11_FIND_REQUIRED)
364       MESSAGE(FATAL_ERROR "Could not find X11")
365     ENDIF (X11_FIND_REQUIRED)
366   ENDIF (X11_FOUND)
368   MARK_AS_ADVANCED(
369     X11_X11_INCLUDE_PATH
370     X11_X11_LIB
371     X11_Xext_LIB
372     X11_Xau_LIB
373     X11_Xau_INCLUDE_PATH
374     X11_Xlib_INCLUDE_PATH
375     X11_Xutil_INCLUDE_PATH
376     X11_Xcomposite_INCLUDE_PATH
377     X11_Xcomposite_LIB
378     X11_Xaccess_INCLUDE_PATH
379     X11_Xfixes_LIB
380     X11_Xfixes_INCLUDE_PATH
381     X11_Xrandr_LIB
382     X11_Xrandr_INCLUDE_PATH
383     X11_Xdamage_LIB
384     X11_Xdamage_INCLUDE_PATH
385     X11_Xrender_LIB
386     X11_Xrender_INCLUDE_PATH
387     X11_Xxf86misc_LIB
388     X11_xf86misc_INCLUDE_PATH
389     X11_xf86vmode_INCLUDE_PATH
390     X11_Xinerama_LIB
391     X11_Xinerama_INCLUDE_PATH
392     X11_XTest_LIB
393     X11_XTest_INCLUDE_PATH
394     X11_Xcursor_LIB
395     X11_Xcursor_INCLUDE_PATH
396     X11_dpms_INCLUDE_PATH
397     X11_Xt_LIB
398     X11_Xt_INCLUDE_PATH
399     X11_Xdmcp_LIB
400     X11_LIBRARIES
401     X11_Xaccessrules_INCLUDE_PATH
402     X11_Xaccessstr_INCLUDE_PATH
403     X11_Xdmcp_INCLUDE_PATH
404     X11_Xkb_INCLUDE_PATH
405     X11_Xkblib_INCLUDE_PATH
406     X11_Xscreensaver_INCLUDE_PATH
407     X11_Xscreensaver_LIB
408     X11_Xpm_INCLUDE_PATH
409     X11_Xpm_LIB
410     X11_Xinput_LIB
411     X11_Xinput_INCLUDE_PATH
412     X11_Xft_LIB
413     X11_Xft_INCLUDE_PATH
414     X11_Xshape_INCLUDE_PATH
415     X11_Xv_LIB
416     X11_Xv_INCLUDE_PATH
417     X11_XShm_INCLUDE_PATH
418     X11_ICE_LIB
419     X11_ICE_INCLUDE_PATH
420   )
421   SET(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
422 ENDIF (UNIX)
424 # X11_FIND_REQUIRED_<component> could be checked too