Warning, /frameworks/extra-cmake-modules/find-modules/FindEGL.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org> 0002 # SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 # 0004 # SPDX-License-Identifier: BSD-3-Clause 0005 0006 #[=======================================================================[.rst: 0007 FindEGL 0008 ------- 0009 0010 Try to find EGL. 0011 0012 This will define the following variables: 0013 0014 ``EGL_FOUND`` 0015 True if (the requested version of) EGL is available 0016 ``EGL_VERSION`` 0017 The version of EGL; note that this is the API version defined in the 0018 headers, rather than the version of the implementation (eg: Mesa) 0019 ``EGL_LIBRARIES`` 0020 This can be passed to target_link_libraries() instead of the ``EGL::EGL`` 0021 target 0022 ``EGL_INCLUDE_DIRS`` 0023 This should be passed to target_include_directories() if the target is not 0024 used for linking 0025 ``EGL_DEFINITIONS`` 0026 This should be passed to target_compile_options() if the target is not 0027 used for linking 0028 0029 If ``EGL_FOUND`` is TRUE, it will also define the following imported target: 0030 0031 ``EGL::EGL`` 0032 The EGL library 0033 0034 In general we recommend using the imported target, as it is easier to use. 0035 Bear in mind, however, that if the target is in the link interface of an 0036 exported library, it must be made available by the package config file. 0037 0038 Since pre-1.0.0. 0039 #]=======================================================================] 0040 0041 include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake) 0042 include(CheckCXXSourceCompiles) 0043 include(CMakePushCheckState) 0044 0045 ecm_find_package_version_check(EGL) 0046 0047 # Use pkg-config to get the directories and then use these values 0048 # in the FIND_PATH() and FIND_LIBRARY() calls 0049 find_package(PkgConfig QUIET) 0050 pkg_check_modules(PKG_EGL QUIET egl) 0051 0052 set(EGL_DEFINITIONS ${PKG_EGL_CFLAGS_OTHER}) 0053 0054 find_path(EGL_INCLUDE_DIR 0055 NAMES 0056 EGL/egl.h 0057 HINTS 0058 ${PKG_EGL_INCLUDE_DIRS} 0059 ) 0060 find_library(EGL_LIBRARY 0061 NAMES 0062 EGL 0063 libEGL 0064 HINTS 0065 ${PKG_EGL_LIBRARY_DIRS} 0066 ) 0067 0068 # NB: We do *not* use the version information from pkg-config, as that 0069 # is the implementation version (eg: the Mesa version) 0070 if(EGL_INCLUDE_DIR) 0071 # egl.h has defines of the form EGL_VERSION_x_y for each supported 0072 # version; so the header for EGL 1.1 will define EGL_VERSION_1_0 and 0073 # EGL_VERSION_1_1. Finding the highest supported version involves 0074 # finding all these defines and selecting the highest numbered. 0075 file(READ "${EGL_INCLUDE_DIR}/EGL/egl.h" _EGL_header_contents) 0076 string(REGEX MATCHALL 0077 "[ \t]EGL_VERSION_[0-9_]+" 0078 _EGL_version_lines 0079 "${_EGL_header_contents}" 0080 ) 0081 unset(_EGL_header_contents) 0082 foreach(_EGL_version_line ${_EGL_version_lines}) 0083 string(REGEX REPLACE 0084 "[ \t]EGL_VERSION_([0-9_]+)" 0085 "\\1" 0086 _version_candidate 0087 "${_EGL_version_line}" 0088 ) 0089 string(REPLACE "_" "." _version_candidate "${_version_candidate}") 0090 if(NOT DEFINED EGL_VERSION OR EGL_VERSION VERSION_LESS _version_candidate) 0091 set(EGL_VERSION "${_version_candidate}") 0092 endif() 0093 endforeach() 0094 unset(_EGL_version_lines) 0095 endif() 0096 0097 cmake_push_check_state(RESET) 0098 list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}") 0099 list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}") 0100 0101 check_cxx_source_compiles(" 0102 #include <EGL/egl.h> 0103 0104 int main(int argc, char *argv[]) { 0105 EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0; 0106 eglDestroyContext(dpy, ctx); 0107 }" HAVE_EGL) 0108 0109 cmake_pop_check_state() 0110 0111 set(required_vars EGL_INCLUDE_DIR HAVE_EGL) 0112 if(NOT EMSCRIPTEN) 0113 list(APPEND required_vars EGL_LIBRARY) 0114 endif() 0115 0116 include(FindPackageHandleStandardArgs) 0117 find_package_handle_standard_args(EGL 0118 FOUND_VAR 0119 EGL_FOUND 0120 REQUIRED_VARS 0121 ${required_vars} 0122 VERSION_VAR 0123 EGL_VERSION 0124 ) 0125 0126 if(EGL_FOUND AND NOT TARGET EGL::EGL) 0127 if (EMSCRIPTEN) 0128 add_library(EGL::EGL INTERFACE IMPORTED) 0129 # Nothing further to be done, system include paths have headers and linkage is implicit. 0130 else() 0131 add_library(EGL::EGL UNKNOWN IMPORTED) 0132 set_target_properties(EGL::EGL PROPERTIES 0133 IMPORTED_LOCATION "${EGL_LIBRARY}" 0134 INTERFACE_COMPILE_OPTIONS "${EGL_DEFINITIONS}" 0135 INTERFACE_INCLUDE_DIRECTORIES "${EGL_INCLUDE_DIR}" 0136 ) 0137 endif() 0138 endif() 0139 0140 mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL) 0141 0142 # compatibility variables 0143 set(EGL_LIBRARIES ${EGL_LIBRARY}) 0144 set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR}) 0145 set(EGL_VERSION_STRING ${EGL_VERSION}) 0146 0147 include(FeatureSummary) 0148 set_package_properties(EGL PROPERTIES 0149 URL "https://www.khronos.org/egl/" 0150 DESCRIPTION "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG." 0151 )