mirror of https://github.com/cutefishos/core
				
				
				
			Remove ecm
							parent
							
								
									deb2af4984
								
							
						
					
					
						commit
						6291f791fa
					
				@ -0,0 +1,297 @@
 | 
				
			|||||||
 | 
					#.rst:
 | 
				
			||||||
 | 
					# ECMFindModuleHelpers
 | 
				
			||||||
 | 
					# --------------------
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Helper macros for find modules: ecm_find_package_version_check(),
 | 
				
			||||||
 | 
					# ecm_find_package_parse_components() and
 | 
				
			||||||
 | 
					# ecm_find_package_handle_library_components().
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ::
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   ecm_find_package_version_check(<name>)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Prints warnings if the CMake version or the project's required CMake version
 | 
				
			||||||
 | 
					# is older than that required by extra-cmake-modules.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ::
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   ecm_find_package_parse_components(<name>
 | 
				
			||||||
 | 
					#       RESULT_VAR <variable>
 | 
				
			||||||
 | 
					#       KNOWN_COMPONENTS <component1> [<component2> [...]]
 | 
				
			||||||
 | 
					#       [SKIP_DEPENDENCY_HANDLING])
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This macro will populate <variable> with a list of components found in
 | 
				
			||||||
 | 
					# <name>_FIND_COMPONENTS, after checking that all those components are in the
 | 
				
			||||||
 | 
					# list of KNOWN_COMPONENTS; if there are any unknown components, it will print
 | 
				
			||||||
 | 
					# an error or warning (depending on the value of <name>_FIND_REQUIRED) and call
 | 
				
			||||||
 | 
					# return().
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The order of components in <variable> is guaranteed to match the order they
 | 
				
			||||||
 | 
					# are listed in the KNOWN_COMPONENTS argument.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# If SKIP_DEPENDENCY_HANDLING is not set, for each component the variable
 | 
				
			||||||
 | 
					# <name>_<component>_component_deps will be checked for dependent components.
 | 
				
			||||||
 | 
					# If <component> is listed in <name>_FIND_COMPONENTS, then all its (transitive)
 | 
				
			||||||
 | 
					# dependencies will also be added to <variable>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ::
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#   ecm_find_package_handle_library_components(<name>
 | 
				
			||||||
 | 
					#       COMPONENTS <component> [<component> [...]]
 | 
				
			||||||
 | 
					#       [SKIP_DEPENDENCY_HANDLING])
 | 
				
			||||||
 | 
					#       [SKIP_PKG_CONFIG])
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Creates an imported library target for each component.  The operation of this
 | 
				
			||||||
 | 
					# macro depends on the presence of a number of CMake variables.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The <name>_<component>_lib variable should contain the name of this library,
 | 
				
			||||||
 | 
					# and <name>_<component>_header variable should contain the name of a header
 | 
				
			||||||
 | 
					# file associated with it (whatever relative path is normally passed to
 | 
				
			||||||
 | 
					# '#include'). <name>_<component>_header_subdir variable can be used to specify
 | 
				
			||||||
 | 
					# which subdirectory of the include path the headers will be found in.
 | 
				
			||||||
 | 
					# ecm_find_package_components() will then search for the library
 | 
				
			||||||
 | 
					# and include directory (creating appropriate cache variables) and create an
 | 
				
			||||||
 | 
					# imported library target named <name>::<component>.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Additional variables can be used to provide additional information:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# If SKIP_PKG_CONFIG, the <name>_<component>_pkg_config variable is set, and
 | 
				
			||||||
 | 
					# pkg-config is found, the pkg-config module given by
 | 
				
			||||||
 | 
					# <name>_<component>_pkg_config will be searched for and used to help locate the
 | 
				
			||||||
 | 
					# library and header file.  It will also be used to set
 | 
				
			||||||
 | 
					# <name>_<component>_VERSION.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Note that if version information is found via pkg-config,
 | 
				
			||||||
 | 
					# <name>_<component>_FIND_VERSION can be set to require a particular version
 | 
				
			||||||
 | 
					# for each component.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# If SKIP_DEPENDENCY_HANDLING is not set, the INTERFACE_LINK_LIBRARIES property
 | 
				
			||||||
 | 
					# of the imported target for <component> will be set to contain the imported
 | 
				
			||||||
 | 
					# targets for the components listed in <name>_<component>_component_deps.
 | 
				
			||||||
 | 
					# <component>_FOUND will also be set to false if any of the compoments in
 | 
				
			||||||
 | 
					# <name>_<component>_component_deps are not found.  This requires the components
 | 
				
			||||||
 | 
					# in <name>_<component>_component_deps to be listed before <component> in the
 | 
				
			||||||
 | 
					# COMPONENTS argument.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The following variables will be set:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# ``<name>_TARGETS``
 | 
				
			||||||
 | 
					#   the imported targets
 | 
				
			||||||
 | 
					# ``<name>_LIBRARIES``
 | 
				
			||||||
 | 
					#   the found libraries
 | 
				
			||||||
 | 
					# ``<name>_INCLUDE_DIRS``
 | 
				
			||||||
 | 
					#   the combined required include directories for the components
 | 
				
			||||||
 | 
					# ``<name>_DEFINITIONS``
 | 
				
			||||||
 | 
					#   the "other" CFLAGS provided by pkg-config, if any
 | 
				
			||||||
 | 
					# ``<name>_VERSION``
 | 
				
			||||||
 | 
					#   the value of ``<name>_<component>_VERSION`` for the first component that
 | 
				
			||||||
 | 
					#   has this variable set (note that components are searched for in the order
 | 
				
			||||||
 | 
					#   they are passed to the macro), although if it is already set, it will not
 | 
				
			||||||
 | 
					#   be altered
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Note that these variables are never cleared, so if
 | 
				
			||||||
 | 
					# ecm_find_package_handle_library_components() is called multiple times with
 | 
				
			||||||
 | 
					# different components (typically because of multiple find_package() calls) then
 | 
				
			||||||
 | 
					# ``<name>_TARGETS``, for example, will contain all the targets found in any
 | 
				
			||||||
 | 
					# call (although no duplicates).
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Since pre-1.0.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#=============================================================================
 | 
				
			||||||
 | 
					# Copyright 2014 Alex Merry <alex.merry@kde.org>
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					# modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					# are met:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 1. Redistributions of source code must retain the copyright
 | 
				
			||||||
 | 
					#    notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					# 2. Redistributions in binary form must reproduce the copyright
 | 
				
			||||||
 | 
					#    notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					#    documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					# 3. The name of the author may not be used to endorse or promote products
 | 
				
			||||||
 | 
					#    derived from this software without specific prior written permission.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 | 
				
			||||||
 | 
					# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 | 
				
			||||||
 | 
					# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 | 
				
			||||||
 | 
					# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
				
			||||||
 | 
					# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | 
				
			||||||
 | 
					# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
				
			||||||
 | 
					# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
				
			||||||
 | 
					# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
				
			||||||
 | 
					# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | 
				
			||||||
 | 
					# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMakeParseArguments)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					macro(ecm_find_package_version_check module_name)
 | 
				
			||||||
 | 
					    if(CMAKE_VERSION VERSION_LESS 2.8.12)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "CMake 2.8.12 is required by Find${module_name}.cmake")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
 | 
				
			||||||
 | 
					        message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use Find${module_name}.cmake")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					macro(ecm_find_package_parse_components module_name)
 | 
				
			||||||
 | 
					    set(ecm_fppc_options SKIP_DEPENDENCY_HANDLING)
 | 
				
			||||||
 | 
					    set(ecm_fppc_oneValueArgs RESULT_VAR)
 | 
				
			||||||
 | 
					    set(ecm_fppc_multiValueArgs KNOWN_COMPONENTS DEFAULT_COMPONENTS)
 | 
				
			||||||
 | 
					    cmake_parse_arguments(ECM_FPPC "${ecm_fppc_options}" "${ecm_fppc_oneValueArgs}" "${ecm_fppc_multiValueArgs}" ${ARGN})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(ECM_FPPC_UNPARSED_ARGUMENTS)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "Unexpected arguments to ecm_find_package_parse_components: ${ECM_FPPC_UNPARSED_ARGUMENTS}")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(NOT ECM_FPPC_RESULT_VAR)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "Missing RESULT_VAR argument to ecm_find_package_parse_components")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(NOT ECM_FPPC_KNOWN_COMPONENTS)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "Missing KNOWN_COMPONENTS argument to ecm_find_package_parse_components")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(NOT ECM_FPPC_DEFAULT_COMPONENTS)
 | 
				
			||||||
 | 
					        set(ECM_FPPC_DEFAULT_COMPONENTS ${ECM_FPPC_KNOWN_COMPONENTS})
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(${module_name}_FIND_COMPONENTS)
 | 
				
			||||||
 | 
					        set(ecm_fppc_requestedComps ${${module_name}_FIND_COMPONENTS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(NOT ECM_FPPC_SKIP_DEPENDENCY_HANDLING)
 | 
				
			||||||
 | 
					            # Make sure deps are included
 | 
				
			||||||
 | 
					            foreach(ecm_fppc_comp ${ecm_fppc_requestedComps})
 | 
				
			||||||
 | 
					                foreach(ecm_fppc_dep_comp ${${module_name}_${ecm_fppc_comp}_component_deps})
 | 
				
			||||||
 | 
					                    list(FIND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}" ecm_fppc_index)
 | 
				
			||||||
 | 
					                    if("${ecm_fppc_index}" STREQUAL "-1")
 | 
				
			||||||
 | 
					                        if(NOT ${module_name}_FIND_QUIETLY)
 | 
				
			||||||
 | 
					                            message(STATUS "${module_name}: ${ecm_fppc_comp} requires ${${module_name}_${ecm_fppc_comp}_component_deps}")
 | 
				
			||||||
 | 
					                        endif()
 | 
				
			||||||
 | 
					                        list(APPEND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}")
 | 
				
			||||||
 | 
					                    endif()
 | 
				
			||||||
 | 
					                endforeach()
 | 
				
			||||||
 | 
					            endforeach()
 | 
				
			||||||
 | 
					        else()
 | 
				
			||||||
 | 
					            message(STATUS "Skipping dependency handling for ${module_name}")
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					        list(REMOVE_DUPLICATES ecm_fppc_requestedComps)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # This makes sure components are listed in the same order as
 | 
				
			||||||
 | 
					        # KNOWN_COMPONENTS (potentially important for inter-dependencies)
 | 
				
			||||||
 | 
					        set(${ECM_FPPC_RESULT_VAR})
 | 
				
			||||||
 | 
					        foreach(ecm_fppc_comp ${ECM_FPPC_KNOWN_COMPONENTS})
 | 
				
			||||||
 | 
					            list(FIND ecm_fppc_requestedComps "${ecm_fppc_comp}" ecm_fppc_index)
 | 
				
			||||||
 | 
					            if(NOT "${ecm_fppc_index}" STREQUAL "-1")
 | 
				
			||||||
 | 
					                list(APPEND ${ECM_FPPC_RESULT_VAR} "${ecm_fppc_comp}")
 | 
				
			||||||
 | 
					                list(REMOVE_AT ecm_fppc_requestedComps ${ecm_fppc_index})
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					        endforeach()
 | 
				
			||||||
 | 
					        # if there are any left, they are unknown components
 | 
				
			||||||
 | 
					        if(ecm_fppc_requestedComps)
 | 
				
			||||||
 | 
					            set(ecm_fppc_msgType STATUS)
 | 
				
			||||||
 | 
					            if(${module_name}_FIND_REQUIRED)
 | 
				
			||||||
 | 
					                set(ecm_fppc_msgType FATAL_ERROR)
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					            if(NOT ${module_name}_FIND_QUIETLY)
 | 
				
			||||||
 | 
					                message(${ecm_fppc_msgType} "${module_name}: requested unknown components ${ecm_fppc_requestedComps}")
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					            return()
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					    else()
 | 
				
			||||||
 | 
					        set(${ECM_FPPC_RESULT_VAR} ${ECM_FPPC_DEFAULT_COMPONENTS})
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					macro(ecm_find_package_handle_library_components module_name)
 | 
				
			||||||
 | 
					    set(ecm_fpwc_options SKIP_PKG_CONFIG SKIP_DEPENDENCY_HANDLING)
 | 
				
			||||||
 | 
					    set(ecm_fpwc_oneValueArgs)
 | 
				
			||||||
 | 
					    set(ecm_fpwc_multiValueArgs COMPONENTS)
 | 
				
			||||||
 | 
					    cmake_parse_arguments(ECM_FPWC "${ecm_fpwc_options}" "${ecm_fpwc_oneValueArgs}" "${ecm_fpwc_multiValueArgs}" ${ARGN})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(ECM_FPWC_UNPARSED_ARGUMENTS)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "Unexpected arguments to ecm_find_package_handle_components: ${ECM_FPWC_UNPARSED_ARGUMENTS}")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(NOT ECM_FPWC_COMPONENTS)
 | 
				
			||||||
 | 
					        message(FATAL_ERROR "Missing COMPONENTS argument to ecm_find_package_handle_components")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    include(FindPackageHandleStandardArgs)
 | 
				
			||||||
 | 
					    find_package(PkgConfig)
 | 
				
			||||||
 | 
					    foreach(ecm_fpwc_comp ${ECM_FPWC_COMPONENTS})
 | 
				
			||||||
 | 
					        set(ecm_fpwc_dep_vars)
 | 
				
			||||||
 | 
					        set(ecm_fpwc_dep_targets)
 | 
				
			||||||
 | 
					        if(NOT SKIP_DEPENDENCY_HANDLING)
 | 
				
			||||||
 | 
					            foreach(ecm_fpwc_dep ${${module_name}_${ecm_fpwc_comp}_component_deps})
 | 
				
			||||||
 | 
					                list(APPEND ecm_fpwc_dep_vars "${module_name}_${ecm_fpwc_dep}_FOUND")
 | 
				
			||||||
 | 
					                list(APPEND ecm_fpwc_dep_targets "${module_name}::${ecm_fpwc_dep}")
 | 
				
			||||||
 | 
					            endforeach()
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(NOT ECM_FPWC_SKIP_PKG_CONFIG AND ${module_name}_${ecm_fpwc_comp}_pkg_config)
 | 
				
			||||||
 | 
					            pkg_check_modules(PKG_${module_name}_${ecm_fpwc_comp} QUIET
 | 
				
			||||||
 | 
					                              ${${module_name}_${ecm_fpwc_comp}_pkg_config})
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        find_path(${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
 | 
				
			||||||
 | 
					            NAMES ${${module_name}_${ecm_fpwc_comp}_header}
 | 
				
			||||||
 | 
					            HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_INCLUDE_DIRS}
 | 
				
			||||||
 | 
					            PATH_SUFFIXES ${${module_name}_${ecm_fpwc_comp}_header_subdir}
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        find_library(${module_name}_${ecm_fpwc_comp}_LIBRARY
 | 
				
			||||||
 | 
					            NAMES ${${module_name}_${ecm_fpwc_comp}_lib}
 | 
				
			||||||
 | 
					            HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_LIBRARY_DIRS}
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set(${module_name}_${ecm_fpwc_comp}_VERSION "${PKG_${module_name}_${ecm_fpwc_comp}_VERSION}")
 | 
				
			||||||
 | 
					        if(NOT ${module_name}_VERSION)
 | 
				
			||||||
 | 
					            set(${module_name}_VERSION ${${module_name}_${ecm_fpwc_comp}_VERSION})
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        find_package_handle_standard_args(${module_name}_${ecm_fpwc_comp}
 | 
				
			||||||
 | 
					            FOUND_VAR
 | 
				
			||||||
 | 
					                ${module_name}_${ecm_fpwc_comp}_FOUND
 | 
				
			||||||
 | 
					            REQUIRED_VARS
 | 
				
			||||||
 | 
					                ${module_name}_${ecm_fpwc_comp}_LIBRARY
 | 
				
			||||||
 | 
					                ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
 | 
				
			||||||
 | 
					                ${ecm_fpwc_dep_vars}
 | 
				
			||||||
 | 
					            VERSION_VAR
 | 
				
			||||||
 | 
					                ${module_name}_${ecm_fpwc_comp}_VERSION
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mark_as_advanced(
 | 
				
			||||||
 | 
					            ${module_name}_${ecm_fpwc_comp}_LIBRARY
 | 
				
			||||||
 | 
					            ${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(${module_name}_${ecm_fpwc_comp}_FOUND)
 | 
				
			||||||
 | 
					            list(APPEND ${module_name}_LIBRARIES
 | 
				
			||||||
 | 
					                        "${${module_name}_${ecm_fpwc_comp}_LIBRARY}")
 | 
				
			||||||
 | 
					            list(APPEND ${module_name}_INCLUDE_DIRS
 | 
				
			||||||
 | 
					                        "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}")
 | 
				
			||||||
 | 
					            set(${module_name}_DEFINITIONS
 | 
				
			||||||
 | 
					                    ${${module_name}_DEFINITIONS}
 | 
				
			||||||
 | 
					                    ${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS})
 | 
				
			||||||
 | 
					            if(NOT TARGET ${module_name}::${ecm_fpwc_comp})
 | 
				
			||||||
 | 
					                add_library(${module_name}::${ecm_fpwc_comp} UNKNOWN IMPORTED)
 | 
				
			||||||
 | 
					                set_target_properties(${module_name}::${ecm_fpwc_comp} PROPERTIES
 | 
				
			||||||
 | 
					                    IMPORTED_LOCATION "${${module_name}_${ecm_fpwc_comp}_LIBRARY}"
 | 
				
			||||||
 | 
					                    INTERFACE_COMPILE_OPTIONS "${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS}"
 | 
				
			||||||
 | 
					                    INTERFACE_INCLUDE_DIRECTORIES "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}"
 | 
				
			||||||
 | 
					                    INTERFACE_LINK_LIBRARIES "${ecm_fpwc_dep_targets}"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					            list(APPEND ${module_name}_TARGETS
 | 
				
			||||||
 | 
					                        "${module_name}::${ecm_fpwc_comp}")
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					    endforeach()
 | 
				
			||||||
 | 
					    if(${module_name}_LIBRARIES)
 | 
				
			||||||
 | 
					        list(REMOVE_DUPLICATES ${module_name}_LIBRARIES)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(${module_name}_INCLUDE_DIRS)
 | 
				
			||||||
 | 
					        list(REMOVE_DUPLICATES ${module_name}_INCLUDE_DIRS)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(${module_name}_DEFINITIONS)
 | 
				
			||||||
 | 
					        list(REMOVE_DUPLICATES ${module_name}_DEFINITIONS)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(${module_name}_TARGETS)
 | 
				
			||||||
 | 
					        list(REMOVE_DUPLICATES ${module_name}_TARGETS)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
 | 
				
			||||||
 | 
					# SPDX-FileCopyrightText: 2011 Fredrik Höglund <fredrik@kde.org>
 | 
				
			||||||
 | 
					# SPDX-FileCopyrightText: 2008 Helio Chissini de Castro <helio@kde.org>
 | 
				
			||||||
 | 
					# SPDX-FileCopyrightText: 2007 Matthias Kretz <kretz@kde.org>
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: BSD-3-Clause
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[=======================================================================[.rst:
 | 
				
			||||||
 | 
					FindX11_XCB
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Try to find the X11 XCB compatibility library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will define the following variables:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``X11_XCB_FOUND``
 | 
				
			||||||
 | 
					    True if (the requested version of) libX11-xcb is available
 | 
				
			||||||
 | 
					``X11_XCB_VERSION``
 | 
				
			||||||
 | 
					    The version of libX11-xcb (this is not guaranteed to be set even when
 | 
				
			||||||
 | 
					    X11_XCB_FOUND is true)
 | 
				
			||||||
 | 
					``X11_XCB_LIBRARIES``
 | 
				
			||||||
 | 
					    This can be passed to target_link_libraries() instead of the ``EGL::EGL``
 | 
				
			||||||
 | 
					    target
 | 
				
			||||||
 | 
					``X11_XCB_INCLUDE_DIR``
 | 
				
			||||||
 | 
					    This should be passed to target_include_directories() if the target is not
 | 
				
			||||||
 | 
					    used for linking
 | 
				
			||||||
 | 
					``X11_XCB_DEFINITIONS``
 | 
				
			||||||
 | 
					    This should be passed to target_compile_options() if the target is not
 | 
				
			||||||
 | 
					    used for linking
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If ``X11_XCB_FOUND`` is TRUE, it will also define the following imported
 | 
				
			||||||
 | 
					target:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``X11::XCB``
 | 
				
			||||||
 | 
					    The X11 XCB compatibility library
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In general we recommend using the imported target, as it is easier to use.
 | 
				
			||||||
 | 
					Bear in mind, however, that if the target is in the link interface of an
 | 
				
			||||||
 | 
					exported library, it must be made available by the package config file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since pre-1.0.0.
 | 
				
			||||||
 | 
					#]=======================================================================]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# use pkg-config to get the directories and then use these values
 | 
				
			||||||
 | 
					# in the FIND_PATH() and FIND_LIBRARY() calls
 | 
				
			||||||
 | 
					find_package(PkgConfig QUIET)
 | 
				
			||||||
 | 
					pkg_check_modules(PKG_X11_XCB QUIET x11-xcb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(X11_XCB_DEFINITIONS ${PKG_X11_XCB_CFLAGS_OTHER})
 | 
				
			||||||
 | 
					set(X11_XCB_VERSION ${PKG_X11_XCB_VERSION})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_path(X11_XCB_INCLUDE_DIR
 | 
				
			||||||
 | 
					    NAMES X11/Xlib-xcb.h
 | 
				
			||||||
 | 
					    HINTS ${PKG_X11_XCB_INCLUDE_DIRS}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					find_library(X11_XCB_LIBRARY
 | 
				
			||||||
 | 
					    NAMES X11-xcb
 | 
				
			||||||
 | 
					    HINTS ${PKG_X11_XCB_LIBRARY_DIRS}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(FindPackageHandleStandardArgs)
 | 
				
			||||||
 | 
					find_package_handle_standard_args(X11_XCB
 | 
				
			||||||
 | 
					    FOUND_VAR
 | 
				
			||||||
 | 
					        X11_XCB_FOUND
 | 
				
			||||||
 | 
					    REQUIRED_VARS
 | 
				
			||||||
 | 
					        X11_XCB_LIBRARY
 | 
				
			||||||
 | 
					        X11_XCB_INCLUDE_DIR
 | 
				
			||||||
 | 
					    VERSION_VAR
 | 
				
			||||||
 | 
					        X11_XCB_VERSION
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(X11_XCB_FOUND AND NOT TARGET X11::XCB)
 | 
				
			||||||
 | 
					    add_library(X11::XCB UNKNOWN IMPORTED)
 | 
				
			||||||
 | 
					    set_target_properties(X11::XCB PROPERTIES
 | 
				
			||||||
 | 
					        IMPORTED_LOCATION "${X11_XCB_LIBRARY}"
 | 
				
			||||||
 | 
					        INTERFACE_COMPILE_OPTIONS "${X11_XCB_DEFINITIONS}"
 | 
				
			||||||
 | 
					        INTERFACE_INCLUDE_DIRECTORIES "${X11_XCB_INCLUDE_DIR}"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mark_as_advanced(X11_XCB_INCLUDE_DIR X11_XCB_LIBRARY)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# compatibility variables
 | 
				
			||||||
 | 
					set(X11_XCB_LIBRARIES ${X11_XCB_LIBRARY})
 | 
				
			||||||
 | 
					set(X11_XCB_INCLUDE_DIRS ${X11_XCB_INCLUDE_DIR})
 | 
				
			||||||
 | 
					set(X11_XCB_VERSION_STRING ${X11_XCB_VERSION})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(FeatureSummary)
 | 
				
			||||||
 | 
					set_package_properties(X11_XCB PROPERTIES
 | 
				
			||||||
 | 
					    URL "https://xorg.freedesktop.org/"
 | 
				
			||||||
 | 
					    DESCRIPTION "A compatibility library for code that translates Xlib API calls into XCB calls"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
@ -0,0 +1,177 @@
 | 
				
			|||||||
 | 
					# SPDX-FileCopyrightText: 2011 Fredrik Höglund <fredrik@kde.org>
 | 
				
			||||||
 | 
					# SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
 | 
				
			||||||
 | 
					# SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: BSD-3-Clause
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[=======================================================================[.rst:
 | 
				
			||||||
 | 
					FindXCB
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Try to find XCB.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a component-based find module, which makes use of the COMPONENTS and
 | 
				
			||||||
 | 
					OPTIONAL_COMPONENTS arguments to find_module.  The following components are
 | 
				
			||||||
 | 
					available::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  XCB
 | 
				
			||||||
 | 
					  ATOM         AUX          COMPOSITE    CURSOR       DAMAGE
 | 
				
			||||||
 | 
					  DPMS         DRI2         DRI3         EVENT        EWMH
 | 
				
			||||||
 | 
					  GLX          ICCCM        IMAGE        KEYSYMS      PRESENT
 | 
				
			||||||
 | 
					  RANDR        RECORD       RENDER       RENDERUTIL   RES
 | 
				
			||||||
 | 
					  SCREENSAVER  SHAPE        SHM          SYNC         UTIL
 | 
				
			||||||
 | 
					  XEVIE        XF86DRI      XFIXES       XINERAMA     XINPUT
 | 
				
			||||||
 | 
					  XKB          XPRINT       XTEST        XV           XVMC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If no components are specified, this module will act as though all components
 | 
				
			||||||
 | 
					except XINPUT (which is considered unstable) were passed to
 | 
				
			||||||
 | 
					OPTIONAL_COMPONENTS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This module will define the following variables, independently of the
 | 
				
			||||||
 | 
					components searched for or found:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``XCB_FOUND``
 | 
				
			||||||
 | 
					    True if (the requestion version of) xcb is available
 | 
				
			||||||
 | 
					``XCB_VERSION``
 | 
				
			||||||
 | 
					    Found xcb version
 | 
				
			||||||
 | 
					``XCB_TARGETS``
 | 
				
			||||||
 | 
					    A list of all targets imported by this module (note that there may be more
 | 
				
			||||||
 | 
					    than the components that were requested)
 | 
				
			||||||
 | 
					``XCB_LIBRARIES``
 | 
				
			||||||
 | 
					    This can be passed to target_link_libraries() instead of the imported
 | 
				
			||||||
 | 
					    targets
 | 
				
			||||||
 | 
					``XCB_INCLUDE_DIRS``
 | 
				
			||||||
 | 
					    This should be passed to target_include_directories() if the targets are
 | 
				
			||||||
 | 
					    not used for linking
 | 
				
			||||||
 | 
					``XCB_DEFINITIONS``
 | 
				
			||||||
 | 
					    This should be passed to target_compile_options() if the targets are not
 | 
				
			||||||
 | 
					    used for linking
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For each searched-for components, ``XCB_<component>_FOUND`` will be set to
 | 
				
			||||||
 | 
					true if the corresponding xcb library was found, and false otherwise.  If
 | 
				
			||||||
 | 
					``XCB_<component>_FOUND`` is true, the imported target ``XCB::<component>``
 | 
				
			||||||
 | 
					will be defined.  This module will also attempt to determine
 | 
				
			||||||
 | 
					``XCB_*_VERSION`` variables for each imported target, although
 | 
				
			||||||
 | 
					``XCB_VERSION`` should normally be sufficient.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In general we recommend using the imported targets, as they are easier to use
 | 
				
			||||||
 | 
					and provide more control.  Bear in mind, however, that if any target is in the
 | 
				
			||||||
 | 
					link interface of an exported library, it must be made available by the
 | 
				
			||||||
 | 
					package config file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Since pre-1.0.0.
 | 
				
			||||||
 | 
					#]=======================================================================]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpers.cmake)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Note that this list needs to be ordered such that any component
 | 
				
			||||||
 | 
					# appears after its dependencies
 | 
				
			||||||
 | 
					set(XCB_known_components
 | 
				
			||||||
 | 
					    XCB
 | 
				
			||||||
 | 
					    RENDER
 | 
				
			||||||
 | 
					    SHAPE
 | 
				
			||||||
 | 
					    XFIXES
 | 
				
			||||||
 | 
					    SHM
 | 
				
			||||||
 | 
					    ATOM
 | 
				
			||||||
 | 
					    AUX
 | 
				
			||||||
 | 
					    COMPOSITE
 | 
				
			||||||
 | 
					    CURSOR
 | 
				
			||||||
 | 
					    DAMAGE
 | 
				
			||||||
 | 
					    DPMS
 | 
				
			||||||
 | 
					    DRI2
 | 
				
			||||||
 | 
					    DRI3
 | 
				
			||||||
 | 
					    EVENT
 | 
				
			||||||
 | 
					    EWMH
 | 
				
			||||||
 | 
					    GLX
 | 
				
			||||||
 | 
					    ICCCM
 | 
				
			||||||
 | 
					    IMAGE
 | 
				
			||||||
 | 
					    KEYSYMS
 | 
				
			||||||
 | 
					    PRESENT
 | 
				
			||||||
 | 
					    RANDR
 | 
				
			||||||
 | 
					    RECORD
 | 
				
			||||||
 | 
					    RENDERUTIL
 | 
				
			||||||
 | 
					    RES
 | 
				
			||||||
 | 
					    SCREENSAVER
 | 
				
			||||||
 | 
					    SYNC
 | 
				
			||||||
 | 
					    UTIL
 | 
				
			||||||
 | 
					    XEVIE
 | 
				
			||||||
 | 
					    XF86DRI
 | 
				
			||||||
 | 
					    XINERAMA
 | 
				
			||||||
 | 
					    XINPUT
 | 
				
			||||||
 | 
					    XKB
 | 
				
			||||||
 | 
					    XPRINT
 | 
				
			||||||
 | 
					    XTEST
 | 
				
			||||||
 | 
					    XV
 | 
				
			||||||
 | 
					    XVMC
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# XINPUT is unstable; do not include it by default
 | 
				
			||||||
 | 
					set(XCB_default_components ${XCB_known_components})
 | 
				
			||||||
 | 
					list(REMOVE_ITEM XCB_default_components "XINPUT")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# default component info: xcb components have fairly predictable
 | 
				
			||||||
 | 
					# header files, library names and pkg-config names
 | 
				
			||||||
 | 
					foreach(_comp ${XCB_known_components})
 | 
				
			||||||
 | 
					    string(TOLOWER "${_comp}" _lc_comp)
 | 
				
			||||||
 | 
					    set(XCB_${_comp}_component_deps XCB)
 | 
				
			||||||
 | 
					    set(XCB_${_comp}_pkg_config "xcb-${_lc_comp}")
 | 
				
			||||||
 | 
					    set(XCB_${_comp}_lib "xcb-${_lc_comp}")
 | 
				
			||||||
 | 
					    set(XCB_${_comp}_header "xcb/${_lc_comp}.h")
 | 
				
			||||||
 | 
					endforeach()
 | 
				
			||||||
 | 
					# exceptions
 | 
				
			||||||
 | 
					set(XCB_XCB_component_deps)
 | 
				
			||||||
 | 
					set(XCB_COMPOSITE_component_deps XCB XFIXES)
 | 
				
			||||||
 | 
					set(XCB_DAMAGE_component_deps XCB XFIXES)
 | 
				
			||||||
 | 
					set(XCB_IMAGE_component_deps XCB SHM)
 | 
				
			||||||
 | 
					set(XCB_RENDERUTIL_component_deps XCB RENDER)
 | 
				
			||||||
 | 
					set(XCB_XFIXES_component_deps XCB RENDER SHAPE)
 | 
				
			||||||
 | 
					set(XCB_XVMC_component_deps XCB XV)
 | 
				
			||||||
 | 
					set(XCB_XV_component_deps XCB SHM)
 | 
				
			||||||
 | 
					set(XCB_XCB_pkg_config "xcb")
 | 
				
			||||||
 | 
					set(XCB_XCB_lib "xcb")
 | 
				
			||||||
 | 
					set(XCB_ATOM_header "xcb/xcb_atom.h")
 | 
				
			||||||
 | 
					set(XCB_ATOM_lib "xcb-util")
 | 
				
			||||||
 | 
					set(XCB_AUX_header "xcb/xcb_aux.h")
 | 
				
			||||||
 | 
					set(XCB_AUX_lib "xcb-util")
 | 
				
			||||||
 | 
					set(XCB_CURSOR_header "xcb/xcb_cursor.h")
 | 
				
			||||||
 | 
					set(XCB_EVENT_header "xcb/xcb_event.h")
 | 
				
			||||||
 | 
					set(XCB_EVENT_lib "xcb-util")
 | 
				
			||||||
 | 
					set(XCB_EWMH_header "xcb/xcb_ewmh.h")
 | 
				
			||||||
 | 
					set(XCB_ICCCM_header "xcb/xcb_icccm.h")
 | 
				
			||||||
 | 
					set(XCB_IMAGE_header "xcb/xcb_image.h")
 | 
				
			||||||
 | 
					set(XCB_KEYSYMS_header "xcb/xcb_keysyms.h")
 | 
				
			||||||
 | 
					set(XCB_PIXEL_header "xcb/xcb_pixel.h")
 | 
				
			||||||
 | 
					set(XCB_RENDERUTIL_header "xcb/xcb_renderutil.h")
 | 
				
			||||||
 | 
					set(XCB_RENDERUTIL_lib "xcb-render-util")
 | 
				
			||||||
 | 
					set(XCB_UTIL_header "xcb/xcb_util.h")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ecm_find_package_parse_components(XCB
 | 
				
			||||||
 | 
					    RESULT_VAR XCB_components
 | 
				
			||||||
 | 
					    KNOWN_COMPONENTS ${XCB_known_components}
 | 
				
			||||||
 | 
					    DEFAULT_COMPONENTS ${XCB_default_components}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					list(FIND XCB_components "XINPUT" _XCB_XINPUT_index)
 | 
				
			||||||
 | 
					if (NOT _XCB_XINPUT_index EQUAL -1)
 | 
				
			||||||
 | 
					    message(AUTHOR_WARNING "XINPUT from XCB was requested: this is EXPERIMENTAL and is likely to unavailable on many systems!")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ecm_find_package_handle_library_components(XCB
 | 
				
			||||||
 | 
					    COMPONENTS ${XCB_components}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_package_handle_standard_args(XCB
 | 
				
			||||||
 | 
					    FOUND_VAR
 | 
				
			||||||
 | 
					        XCB_FOUND
 | 
				
			||||||
 | 
					    REQUIRED_VARS
 | 
				
			||||||
 | 
					        XCB_LIBRARIES
 | 
				
			||||||
 | 
					    VERSION_VAR
 | 
				
			||||||
 | 
					        XCB_VERSION
 | 
				
			||||||
 | 
					    HANDLE_COMPONENTS
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(FeatureSummary)
 | 
				
			||||||
 | 
					set_package_properties(XCB PROPERTIES
 | 
				
			||||||
 | 
					    URL "https://xcb.freedesktop.org/"
 | 
				
			||||||
 | 
					    DESCRIPTION "X protocol C-language Binding"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue