CMake/Modules/FindX11.cmake
Brad King a3a1e69f8a FindFontconfig: Convert module variables to camel case
Our documented standard for find module variable names is to match the
case of the find module package name.  This was overlooked when the
module was added by commit 84e7920b3a (FindFontconfig: Add module to
find Fontconfig, 2018-09-27, v3.14.0-rc1~523^2).

The module was released with the upper case names in CMake 3.14.0, so
fix it to have camel case names in 3.14.1.  This is incompatible but
anyone using a given release series should be using the latest patch on
it and we've made breaking fixups on newly released features like this
before.

Reported-by: Christophe Giboudeaux <christophe@krop.fr>
Fixes: #19094
2019-03-26 14:14:09 -04:00

730 lines
28 KiB
CMake

# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindX11
-------
Find X11 installation
Try to find X11 on UNIX systems. The following values are defined
::
X11_FOUND - True if X11 is available
X11_INCLUDE_DIR - include directories to use X11
X11_LIBRARIES - link against these to use X11
and also the following more fine grained variables and targets:
::
X11_ICE_INCLUDE_PATH, X11_ICE_LIB, X11_ICE_FOUND, X11::ICE
X11_SM_INCLUDE_PATH, X11_SM_LIB, X11_SM_FOUND, X11::SM
X11_X11_INCLUDE_PATH, X11_X11_LIB, X11::X11
X11_Xaccessrules_INCLUDE_PATH,
X11_Xaccessstr_INCLUDE_PATH, X11_Xaccess_FOUND
X11_Xau_INCLUDE_PATH, X11_Xau_LIB, X11_Xau_FOUND, X11::Xau
X11_Xcomposite_INCLUDE_PATH, X11_Xcomposite_LIB, X11_Xcomposite_FOUND, X11::Xcomposite
X11_Xcursor_INCLUDE_PATH, X11_Xcursor_LIB, X11_Xcursor_FOUND, X11::Xcursor
X11_Xdamage_INCLUDE_PATH, X11_Xdamage_LIB, X11_Xdamage_FOUND, X11::Xdamage
X11_Xdmcp_INCLUDE_PATH, X11_Xdmcp_LIB, X11_Xdmcp_FOUND, X11::Xdmcp
X11_Xext_INCLUDE_PATH, X11_Xext_LIB, X11_Xext_FOUND, X11::Xext
X11_Xxf86misc_INCLUDE_PATH, X11_Xxf86misc_LIB, X11_Xxf86misc_FOUND, X11::Xxf86misc
X11_Xxf86vm_INCLUDE_PATH, X11_Xxf86vm_LIB X11_Xxf86vm_FOUND, X11::Xxf86vm
X11_Xfixes_INCLUDE_PATH, X11_Xfixes_LIB, X11_Xfixes_FOUND, X11::Xfixes
X11_Xft_INCLUDE_PATH, X11_Xft_LIB, X11_Xft_FOUND, X11::Xft
X11_Xi_INCLUDE_PATH, X11_Xi_LIB, X11_Xi_FOUND, X11::Xi
X11_Xinerama_INCLUDE_PATH, X11_Xinerama_LIB, X11_Xinerama_FOUND, X11::Xinerama
X11_Xkb_INCLUDE_PATH,
X11_Xkblib_INCLUDE_PATH, X11_Xkb_FOUND, X11::Xkb
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_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
X11_XRes_INCLUDE_PATH, X11_XRes_LIB, X11_XRes_FOUND, X11::XRes
X11_Xss_INCLUDE_PATH, X11_Xss_LIB, X11_Xss_FOUND, X11::Xss
X11_Xt_INCLUDE_PATH, X11_Xt_LIB, X11_Xt_FOUND, X11::Xt
X11_Xutil_INCLUDE_PATH, X11_Xutil_FOUND, X11::Xutil
X11_Xv_INCLUDE_PATH, X11_Xv_LIB, X11_Xv_FOUND, X11::Xv
X11_dpms_INCLUDE_PATH, (in X11_Xext_LIB), X11_dpms_FOUND
X11_XShm_INCLUDE_PATH, (in X11_Xext_LIB), X11_XShm_FOUND
X11_Xshape_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xshape_FOUND
X11_XSync_INCLUDE_PATH, (in X11_Xext_LIB), X11_XSync_FOUND
#]=======================================================================]
if (UNIX)
set(X11_FOUND 0)
# X11 is never a framework and some header files may be
# found in tcl on the mac
set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
set(CMAKE_FIND_FRAMEWORK NEVER)
set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
set(CMAKE_REQUIRED_QUIET ${X11_FIND_QUIETLY})
set(X11_INC_SEARCH_PATH
/usr/pkg/xorg/include
/usr/X11R6/include
/usr/X11R7/include
/usr/include/X11
/usr/openwin/include
/usr/openwin/share/include
/opt/graphics/OpenGL/include
/opt/X11/include
)
set(X11_LIB_SEARCH_PATH
/usr/pkg/xorg/lib
/usr/X11R6/lib
/usr/X11R7/lib
/usr/openwin/lib
/opt/X11/lib
)
find_path(X11_X11_INCLUDE_PATH X11/X.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xlib_INCLUDE_PATH X11/Xlib.h ${X11_INC_SEARCH_PATH})
# Look for includes; keep the list sorted by name of the cmake *_INCLUDE_PATH
# variable (which doesn't need to match the include file name).
# Solaris lacks XKBrules.h, so we should skip kxkbd there.
find_path(X11_ICE_INCLUDE_PATH X11/ICE/ICE.h ${X11_INC_SEARCH_PATH})
find_path(X11_SM_INCLUDE_PATH X11/SM/SM.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xaccessrules_INCLUDE_PATH X11/extensions/XKBrules.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xaccessstr_INCLUDE_PATH X11/extensions/XKBstr.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xau_INCLUDE_PATH X11/Xauth.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h ${X11_INC_SEARCH_PATH})
find_path(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xxf86misc_INCLUDE_PATH X11/extensions/xf86misc.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xxf86vm_INCLUDE_PATH X11/extensions/xf86vmode.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xfixes_INCLUDE_PATH X11/extensions/Xfixes.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xft_INCLUDE_PATH X11/Xft/Xft.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xi_INCLUDE_PATH X11/extensions/XInput.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xinerama_INCLUDE_PATH X11/extensions/Xinerama.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xkb_INCLUDE_PATH X11/extensions/XKB.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xkblib_INCLUDE_PATH X11/XKBlib.h ${X11_INC_SEARCH_PATH})
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_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})
find_path(X11_Xrender_INCLUDE_PATH X11/extensions/Xrender.h ${X11_INC_SEARCH_PATH})
find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xss_INCLUDE_PATH X11/extensions/scrnsaver.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xshape_INCLUDE_PATH X11/extensions/shape.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xutil_INCLUDE_PATH X11/Xutil.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xt_INCLUDE_PATH X11/Intrinsic.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xv_INCLUDE_PATH X11/extensions/Xvlib.h ${X11_INC_SEARCH_PATH})
find_path(X11_XSync_INCLUDE_PATH X11/extensions/sync.h ${X11_INC_SEARCH_PATH})
# Backwards compatibility.
set(X11_Xinput_INCLUDE_PATH "${X11_Xi_INCLUDE_PATH}")
set(X11_xf86misc_INCLUDE_PATH "${X11_Xxf86misc_INCLUDE_PATH}")
set(X11_xf86vmode_INCLUDE_PATH "${X11_Xxf8vm_INCLUDE_PATH}")
set(X11_Xkbfile_INCLUDE_PATH "${X11_xkbfile_INCLUDE_PATH}")
set(X11_XTest_INCLUDE_PATH "${X11_Xtst_INCLUDE_PATH}")
set(X11_Xscreensaver_INCLUDE_PATH "${X11_Xss_INCLUDE_PATH}")
find_library(X11_X11_LIB X11 ${X11_LIB_SEARCH_PATH})
# Find additional X libraries. Keep list sorted by library name.
find_library(X11_ICE_LIB ICE ${X11_LIB_SEARCH_PATH})
find_library(X11_SM_LIB SM ${X11_LIB_SEARCH_PATH})
find_library(X11_Xau_LIB Xau ${X11_LIB_SEARCH_PATH})
find_library(X11_Xcomposite_LIB Xcomposite ${X11_LIB_SEARCH_PATH})
find_library(X11_Xcursor_LIB Xcursor ${X11_LIB_SEARCH_PATH})
find_library(X11_Xdamage_LIB Xdamage ${X11_LIB_SEARCH_PATH})
find_library(X11_Xdmcp_LIB Xdmcp ${X11_LIB_SEARCH_PATH})
find_library(X11_Xext_LIB Xext ${X11_LIB_SEARCH_PATH})
find_library(X11_Xfixes_LIB Xfixes ${X11_LIB_SEARCH_PATH})
find_library(X11_Xft_LIB Xft ${X11_LIB_SEARCH_PATH})
find_library(X11_Xi_LIB Xi ${X11_LIB_SEARCH_PATH})
find_library(X11_Xinerama_LIB Xinerama ${X11_LIB_SEARCH_PATH})
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_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})
find_library(X11_Xss_LIB Xss ${X11_LIB_SEARCH_PATH})
find_library(X11_Xt_LIB Xt ${X11_LIB_SEARCH_PATH})
find_library(X11_Xtst_LIB Xtst ${X11_LIB_SEARCH_PATH})
find_library(X11_Xv_LIB Xv ${X11_LIB_SEARCH_PATH})
find_library(X11_Xxf86misc_LIB Xxf86misc ${X11_LIB_SEARCH_PATH})
find_library(X11_Xxf86vm_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
# Backwards compatibility.
set(X11_Xinput_LIB "${X11_Xi_LIB}")
set(X11_Xkbfile_LIB "${X11_xkbfile_LIB}")
set(X11_XTest_LIB "${X11_Xtst_LIB}")
set(X11_Xscreensaver_LIB "${X11_Xss_LIB}")
set(X11_LIBRARY_DIR "")
if(X11_X11_LIB)
get_filename_component(X11_LIBRARY_DIR ${X11_X11_LIB} PATH)
endif()
set(X11_INCLUDE_DIR) # start with empty list
if(X11_X11_INCLUDE_PATH)
list(APPEND X11_INCLUDE_DIR ${X11_X11_INCLUDE_PATH})
endif()
if(X11_Xlib_INCLUDE_PATH)
list(APPEND X11_INCLUDE_DIR ${X11_Xlib_INCLUDE_PATH})
endif()
if(X11_Xutil_INCLUDE_PATH)
set(X11_Xutil_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xutil_INCLUDE_PATH})
endif()
if(X11_Xshape_INCLUDE_PATH)
set(X11_Xshape_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xshape_INCLUDE_PATH})
endif()
set(X11_LIBRARIES) # start with empty list
if(X11_X11_LIB)
list(APPEND X11_LIBRARIES ${X11_X11_LIB})
endif()
if(X11_Xext_LIB)
set(X11_Xext_FOUND TRUE)
list(APPEND X11_LIBRARIES ${X11_Xext_LIB})
endif()
if(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
set(X11_Xt_FOUND TRUE)
endif()
if(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
find_package(Freetype QUIET)
find_package(Fontconfig QUIET)
if (FREETYPE_FOUND AND Fontconfig_FOUND)
set(X11_Xft_FOUND TRUE)
endif ()
list(APPEND X11_INCLUDE_DIR ${X11_Xft_INCLUDE_PATH})
endif()
if(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
set(X11_Xv_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xv_INCLUDE_PATH})
endif()
if (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
set(X11_Xau_FOUND TRUE)
endif ()
if (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
set(X11_Xdmcp_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xdmcp_INCLUDE_PATH})
endif ()
if (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
set(X11_Xaccess_FOUND TRUE)
set(X11_Xaccess_INCLUDE_PATH ${X11_Xaccessstr_INCLUDE_PATH})
list(APPEND X11_INCLUDE_DIR ${X11_Xaccess_INCLUDE_PATH})
endif ()
if (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
set(X11_Xpm_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xpm_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})
endif ()
if (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
set(X11_Xdamage_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xdamage_INCLUDE_PATH})
endif ()
if (X11_XShm_INCLUDE_PATH)
set(X11_XShm_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_XShm_INCLUDE_PATH})
endif ()
if (X11_Xtst_INCLUDE_PATH AND X11_Xtst_LIB)
set(X11_Xtst_FOUND TRUE)
# Backwards compatibility.
set(X11_XTest_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xtst_INCLUDE_PATH})
endif ()
if (X11_Xi_INCLUDE_PATH AND X11_Xi_LIB)
set(X11_Xi_FOUND TRUE)
# Backwards compatibility.
set(X11_Xinput_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xi_INCLUDE_PATH})
endif ()
if (X11_Xinerama_INCLUDE_PATH AND X11_Xinerama_LIB)
set(X11_Xinerama_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xinerama_INCLUDE_PATH})
endif ()
if (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
set(X11_Xfixes_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xfixes_INCLUDE_PATH})
endif ()
if (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
set(X11_Xrender_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xrender_INCLUDE_PATH})
endif ()
if (X11_XRes_INCLUDE_PATH AND X11_XRes_LIB)
set(X11_XRes_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_XRes_INCLUDE_PATH})
endif ()
if (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
set(X11_Xrandr_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
endif ()
if (X11_Xxf86misc_INCLUDE_PATH AND X11_Xxf86misc_LIB)
set(X11_Xxf86misc_FOUND TRUE)
# Backwards compatibility.
set(X11_xf86misc_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xxf86misc_INCLUDE_PATH})
endif ()
if (X11_Xxf86vm_INCLUDE_PATH AND X11_Xxf86vm_LIB)
set(X11_Xxf86vm_FOUND TRUE)
# Backwards compatibility.
set(X11_xf86vmode_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xxf86vm_INCLUDE_PATH})
endif ()
if (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
set(X11_Xcursor_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xcursor_INCLUDE_PATH})
endif ()
if (X11_Xss_INCLUDE_PATH AND X11_Xss_LIB)
set(X11_Xss_FOUND TRUE)
set(X11_Xscreensaver_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xss_INCLUDE_PATH})
endif ()
if (X11_dpms_INCLUDE_PATH)
set(X11_dpms_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_dpms_INCLUDE_PATH})
endif ()
if (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
set(X11_Xkb_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH} )
endif ()
if (X11_xkbfile_INCLUDE_PATH AND X11_xkbfile_LIB AND X11_Xlib_INCLUDE_PATH)
set(X11_xkbfile_FOUND TRUE)
# Backwards compatibility.
set(X11_Xkbfile_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_xkbfile_INCLUDE_PATH} )
endif ()
if (X11_Xmu_INCLUDE_PATH AND X11_Xmu_LIB)
set(X11_Xmu_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_Xmu_INCLUDE_PATH})
endif ()
if (X11_XSync_INCLUDE_PATH)
set(X11_XSync_FOUND TRUE)
list(APPEND X11_INCLUDE_DIR ${X11_XSync_INCLUDE_PATH})
endif ()
if(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
set(X11_ICE_FOUND TRUE)
endif()
if(X11_SM_LIB AND X11_SM_INCLUDE_PATH)
set(X11_SM_FOUND TRUE)
endif()
# Most of the X11 headers will be in the same directories, avoid
# creating a huge list of duplicates.
if (X11_INCLUDE_DIR)
list(REMOVE_DUPLICATES X11_INCLUDE_DIR)
endif ()
# Deprecated variable for backwards compatibility with CMake 1.4
if (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
set(X11_FOUND 1)
endif ()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
find_package_handle_standard_args(X11
REQUIRED_VARS X11_X11_INCLUDE_PATH X11_X11_LIB
HANDLE_COMPONENTS)
if(X11_FOUND)
include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
# Translated from an autoconf-generated configure script.
# See libs.m4 in autoconf's m4 directory.
if($ENV{ISC} MATCHES "^yes$")
set(X11_X_EXTRA_LIBS -lnsl_s -linet)
else()
set(X11_X_EXTRA_LIBS "")
# See if XOpenDisplay in X11 works by itself.
check_library_exists("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO)
if(NOT X11_LIB_X11_SOLO)
# Find library needed for dnet_ntoa.
check_library_exists("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA)
if (X11_LIB_DNET_HAS_DNET_NTOA)
list(APPEND X11_X_EXTRA_LIBS -ldnet)
else ()
check_library_exists("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA)
if (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
list(APPEND X11_X_EXTRA_LIBS -ldnet_stub)
endif ()
endif ()
endif()
# Find library needed for gethostbyname.
check_function_exists("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME)
if(NOT CMAKE_HAVE_GETHOSTBYNAME)
check_library_exists("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
if (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
list(APPEND X11_X_EXTRA_LIBS -lnsl)
else ()
check_library_exists("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
if (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
list(APPEND X11_X_EXTRA_LIBS -lbsd)
endif ()
endif ()
endif()
# Find library needed for connect.
check_function_exists("connect" CMAKE_HAVE_CONNECT)
if(NOT CMAKE_HAVE_CONNECT)
check_library_exists("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT)
if (CMAKE_LIB_SOCKET_HAS_CONNECT)
list(INSERT X11_X_EXTRA_LIBS 0 -lsocket)
endif ()
endif()
# Find library needed for remove.
check_function_exists("remove" CMAKE_HAVE_REMOVE)
if(NOT CMAKE_HAVE_REMOVE)
check_library_exists("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE)
if (CMAKE_LIB_POSIX_HAS_REMOVE)
list(APPEND X11_X_EXTRA_LIBS -lposix)
endif ()
endif()
# Find library needed for shmat.
check_function_exists("shmat" CMAKE_HAVE_SHMAT)
if(NOT CMAKE_HAVE_SHMAT)
check_library_exists("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT)
if (CMAKE_LIB_IPS_HAS_SHMAT)
list(APPEND X11_X_EXTRA_LIBS -lipc)
endif ()
endif()
endif()
if (X11_ICE_FOUND)
check_library_exists("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}"
CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
if(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
set (X11_X_PRE_LIBS ${X11_ICE_LIB})
if(X11_SM_LIB)
list(INSERT X11_X_PRE_LIBS 0 ${X11_SM_LIB})
endif()
endif()
endif ()
# Build the final list of libraries.
set(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})
if (NOT TARGET X11::X11)
add_library(X11::X11 UNKNOWN IMPORTED)
set_target_properties(X11::X11 PROPERTIES
IMPORTED_LOCATION "${X11_X11_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
endif ()
endif ()
if (X11_ICE_FOUND AND NOT TARGET X11::ICE)
add_library(X11::ICE UNKNOWN IMPORTED)
set_target_properties(X11::ICE PROPERTIES
IMPORTED_LOCATION "${X11_ICE_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_ICE_INCLUDE_PATH}")
endif ()
if (X11_SM_FOUND AND NOT TARGET X11::SM)
add_library(X11::SM UNKNOWN IMPORTED)
set_target_properties(X11::SM PROPERTIES
IMPORTED_LOCATION "${X11_SM_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_SM_INCLUDE_PATH}")
endif ()
if (X11_Xau_FOUND AND NOT TARGET X11::Xau)
add_library(X11::Xau UNKNOWN IMPORTED)
set_target_properties(X11::Xau PROPERTIES
IMPORTED_LOCATION "${X11_Xau_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xau_INCLUDE_PATH}")
endif ()
if (X11_Xcomposite_FOUND AND NOT TARGET X11::Xcomposite)
add_library(X11::Xcomposite UNKNOWN IMPORTED)
set_target_properties(X11::Xcomposite PROPERTIES
IMPORTED_LOCATION "${X11_Xcomposite_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcomposite_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xcursor_FOUND AND NOT TARGET X11::Xcursor)
add_library(X11::Xcursor UNKNOWN IMPORTED)
set_target_properties(X11::Xcursor PROPERTIES
IMPORTED_LOCATION "${X11_Xcursor_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcursor_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xfixes;X11::X11")
endif ()
if (X11_Xdamage_FOUND AND NOT TARGET X11::Xdamage)
add_library(X11::Xdamage UNKNOWN IMPORTED)
set_target_properties(X11::Xdamage PROPERTIES
IMPORTED_LOCATION "${X11_Xdamage_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdamage_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xfixes;X11::X11")
endif ()
if (X11_Xdmcp_FOUND AND NOT TARGET X11::Xdmcp)
add_library(X11::Xdmcp UNKNOWN IMPORTED)
set_target_properties(X11::Xdmcp PROPERTIES
IMPORTED_LOCATION "${X11_Xdmcp_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdmcp_INCLUDE_PATH}")
endif ()
if (X11_Xext_FOUND AND NOT TARGET X11::Xext)
add_library(X11::Xext UNKNOWN IMPORTED)
set_target_properties(X11::Xext PROPERTIES
IMPORTED_LOCATION "${X11_Xext_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xext_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xxf86misc_FOUND AND NOT TARGET X11::Xxf86misc)
add_library(X11::Xxf86misc UNKNOWN IMPORTED)
set_target_properties(X11::Xxf86misc PROPERTIES
IMPORTED_LOCATION "${X11_Xxf86misc_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86misc_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
endif ()
if (X11_Xxf86vm_FOUND AND NOT TARGET X11::Xxf86vm)
add_library(X11::Xxf86vm UNKNOWN IMPORTED)
set_target_properties(X11::Xxf86vm PROPERTIES
IMPORTED_LOCATION "${X11_Xxf86vm_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86vm_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
endif ()
if (X11_Xfixes_FOUND AND NOT TARGET X11::Xfixes)
add_library(X11::Xfixes UNKNOWN IMPORTED)
set_target_properties(X11::Xfixes PROPERTIES
IMPORTED_LOCATION "${X11_Xfixes_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xfixes_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xft_FOUND AND NOT TARGET X11::Xft)
add_library(X11::Xft UNKNOWN IMPORTED)
set_target_properties(X11::Xft PROPERTIES
IMPORTED_LOCATION "${X11_Xft_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xft_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::X11;Fontconfig::Fontconfig;Freetype::Freetype")
endif ()
if (X11_Xi_FOUND AND NOT TARGET X11::Xi)
add_library(X11::Xi UNKNOWN IMPORTED)
set_target_properties(X11::Xi PROPERTIES
IMPORTED_LOCATION "${X11_Xi_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xi_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
endif ()
if (X11_Xinerama_FOUND AND NOT TARGET X11::Xinerama)
add_library(X11::Xinerama UNKNOWN IMPORTED)
set_target_properties(X11::Xinerama PROPERTIES
IMPORTED_LOCATION "${X11_Xinerama_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xinerama_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
endif ()
if (X11_Xkb_FOUND AND NOT TARGET X11::Xkb)
add_library(X11::Xkb INTERFACE IMPORTED)
set_target_properties(X11::Xkb PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xkb_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_xkbfile_FOUND AND NOT TARGET X11::xkbfile)
add_library(X11::xkbfile UNKNOWN IMPORTED)
set_target_properties(X11::xkbfile PROPERTIES
IMPORTED_LOCATION "${X11_xkbfile_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbfile_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xmu_FOUND AND NOT TARGET X11::Xmu)
add_library(X11::Xmu UNKNOWN IMPORTED)
set_target_properties(X11::Xmu PROPERTIES
IMPORTED_LOCATION "${X11_Xmu_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xmu_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xt;X11::Xext;X11::X11")
endif ()
if (X11_Xpm_FOUND AND NOT TARGET X11::Xpm)
add_library(X11::Xpm UNKNOWN IMPORTED)
set_target_properties(X11::Xpm PROPERTIES
IMPORTED_LOCATION "${X11_Xpm_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpm_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xtst_FOUND AND NOT TARGET X11::Xtst)
add_library(X11::Xtst UNKNOWN IMPORTED)
set_target_properties(X11::Xtst PROPERTIES
IMPORTED_LOCATION "${X11_Xtst_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xtst_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xi;X11::Xext;X11::X11")
endif ()
if (X11_Xrandr_FOUND AND NOT TARGET X11::Xrandr)
add_library(X11::Xrandr UNKNOWN IMPORTED)
set_target_properties(X11::Xrandr PROPERTIES
IMPORTED_LOCATION "${X11_Xrandr_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrandr_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xext;X11::X11")
endif ()
if (X11_Xrender_FOUND AND NOT TARGET X11::Xrender)
add_library(X11::Xrender UNKNOWN IMPORTED)
set_target_properties(X11::Xrender PROPERTIES
IMPORTED_LOCATION "${X11_Xrender_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrender_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_XRes_FOUND AND NOT TARGET X11::XRes)
add_library(X11::XRes UNKNOWN IMPORTED)
set_target_properties(X11::XRes PROPERTIES
IMPORTED_LOCATION "${X11_XRes_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_XRes_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
endif ()
if (X11_Xss_FOUND AND NOT TARGET X11::Xss)
add_library(X11::Xss UNKNOWN IMPORTED)
set_target_properties(X11::Xss PROPERTIES
IMPORTED_LOCATION "${X11_Xss_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xss_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
endif ()
if (X11_Xt_FOUND AND NOT TARGET X11::Xt)
add_library(X11::Xt UNKNOWN IMPORTED)
set_target_properties(X11::Xt PROPERTIES
IMPORTED_LOCATION "${X11_Xt_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xt_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::ICE;X11::SM;X11::X11")
endif ()
if (X11_Xutil_FOUND AND NOT TARGET X11::Xutil)
add_library(X11::Xutil INTERFACE IMPORTED)
set_target_properties(X11::Xutil PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xutil_INCLUDE_PATH}"
# libX11 contains the implementations for functions in the Xutil.h
# header.
INTERFACE_LINK_LIBRARIES "X11::X11")
endif ()
if (X11_Xv_FOUND AND NOT TARGET X11::Xv)
add_library(X11::Xv UNKNOWN IMPORTED)
set_target_properties(X11::Xv PROPERTIES
IMPORTED_LOCATION "${X11_Xv_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${X11_Xv_INCLUDE_PATH}"
INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
endif ()
mark_as_advanced(
X11_X11_INCLUDE_PATH
X11_X11_LIB
X11_Xext_INCLUDE_PATH
X11_Xext_LIB
X11_Xau_LIB
X11_Xau_INCLUDE_PATH
X11_Xlib_INCLUDE_PATH
X11_Xutil_INCLUDE_PATH
X11_Xcomposite_INCLUDE_PATH
X11_Xcomposite_LIB
X11_Xfixes_LIB
X11_Xfixes_INCLUDE_PATH
X11_Xrandr_LIB
X11_Xrandr_INCLUDE_PATH
X11_Xdamage_LIB
X11_Xdamage_INCLUDE_PATH
X11_Xrender_LIB
X11_Xrender_INCLUDE_PATH
X11_XRes_LIB
X11_XRes_INCLUDE_PATH
X11_Xxf86misc_LIB
X11_Xxf86misc_INCLUDE_PATH
X11_Xxf86vm_LIB
X11_Xxf86vm_INCLUDE_PATH
X11_Xi_LIB
X11_Xi_INCLUDE_PATH
X11_Xinerama_LIB
X11_Xinerama_INCLUDE_PATH
X11_Xtst_LIB
X11_Xtst_INCLUDE_PATH
X11_Xcursor_LIB
X11_Xcursor_INCLUDE_PATH
X11_dpms_INCLUDE_PATH
X11_Xt_LIB
X11_Xt_INCLUDE_PATH
X11_Xdmcp_LIB
X11_LIBRARIES
X11_Xaccessrules_INCLUDE_PATH
X11_Xaccessstr_INCLUDE_PATH
X11_Xdmcp_INCLUDE_PATH
X11_Xkb_INCLUDE_PATH
X11_Xkblib_INCLUDE_PATH
X11_xkbfile_INCLUDE_PATH
X11_xkbfile_LIB
X11_Xmu_INCLUDE_PATH
X11_Xmu_LIB
X11_Xss_INCLUDE_PATH
X11_Xss_LIB
X11_Xpm_INCLUDE_PATH
X11_Xpm_LIB
X11_Xft_LIB
X11_Xft_INCLUDE_PATH
X11_Xshape_INCLUDE_PATH
X11_Xv_LIB
X11_Xv_INCLUDE_PATH
X11_XShm_INCLUDE_PATH
X11_ICE_LIB
X11_ICE_INCLUDE_PATH
X11_SM_LIB
X11_SM_INCLUDE_PATH
X11_XSync_INCLUDE_PATH
)
set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
endif ()