Files
UnrealEngine/Engine/Source/ThirdParty/OpenVDB/openvdb-12.0.0/cmake/OpenVDBGLFW3Setup.cmake
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

143 lines
4.0 KiB
CMake

# Copyright Contributors to the OpenVDB Project
# SPDX-License-Identifier: Apache-2.0
#
#[=======================================================================[.rst:
OpenVDBGLFW3Setup
-----------------
Wraps the call the FindPackage ( glfw3 ) for OpenVDB builds. Provides
some extra options for finding the glfw3 installation without polluting
the OpenVDB Binaries cmake.
Use this module by invoking include with the form::
include ( OpenVDBGLFW3Setup )
IMPORTED Targets
^^^^^^^^^^^^^^^^
``glfw``
The glfw3 library target.
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``glfw3_FOUND``
True if the system has glfw3 installed.
``glfw3_VERSION``
The version of the glfw3 library which was found.
Hints
^^^^^
The following variables may be provided to tell this module where to look.
``GLFW3_ROOT``
Preferred installation prefix.
``SYSTEM_LIBRARY_PATHS``
Global list of library paths intended to be searched by and find_xxx call
``DISABLE_CMAKE_SEARCH_PATHS``
Disable CMakes default search paths for find_xxx calls in this module
#]=======================================================================]
# Find the glfw3 installation and use glfw's CMake to initialize
# the glfw lib
cmake_minimum_required(VERSION 3.20)
set(_FIND_GLFW3_ADDITIONAL_OPTIONS "")
if(DISABLE_CMAKE_SEARCH_PATHS)
set(_FIND_GLFW3_ADDITIONAL_OPTIONS NO_DEFAULT_PATH)
endif()
set(_GLFW3_ROOT_SEARCH_DIR "")
if(GLFW3_ROOT)
list(APPEND _GLFW3_ROOT_SEARCH_DIR ${GLFW3_ROOT})
else()
set(_ENV_GLFW_ROOT $ENV{GLFW3_ROOT})
if(_ENV_GLFW_ROOT)
list(APPEND _GLFW3_ROOT_SEARCH_DIR ${_ENV_GLFW_ROOT})
endif()
endif()
# Additionally try and use pkconfig to find glfw, though we only use
# pkg-config to re-direct to the cmake. In other words, glfw's cmake is
# expected to be installed
if(USE_PKGCONFIG)
if(NOT DEFINED PKG_CONFIG_FOUND)
find_package(PkgConfig)
endif()
pkg_check_modules(PC_glfw3 QUIET glfw3)
endif()
if(PC_glfw3_FOUND)
foreach(DIR ${PC_glfw3_LIBRARY_DIRS})
list(APPEND _GLFW3_ROOT_SEARCH_DIR ${DIR})
endforeach()
endif()
list(APPEND _GLFW3_ROOT_SEARCH_DIR ${SYSTEM_LIBRARY_PATHS})
set(_GLFW3_PATH_SUFFIXES "lib/cmake/glfw3" "cmake/glfw3" "glfw3")
# GLFW 3.1 installs CMake modules into glfw instead of glfw3
list(APPEND _GLFW3_PATH_SUFFIXES "lib/cmake/glfw" "cmake/glfw" "glfw")
find_path(GLFW3_CMAKE_LOCATION glfw3Config.cmake
${_FIND_GLFW3_ADDITIONAL_OPTIONS}
PATHS ${_GLFW3_ROOT_SEARCH_DIR}
PATH_SUFFIXES ${_GLFW3_PATH_SUFFIXES}
)
if(GLFW3_CMAKE_LOCATION)
if(EXISTS "${GLFW3_CMAKE_LOCATION}/glfw3Targets.cmake")
include("${GLFW3_CMAKE_LOCATION}/glfw3Targets.cmake")
elseif(EXISTS "${GLFW3_CMAKE_LOCATION}/glfwTargets.cmake")
include("${GLFW3_CMAKE_LOCATION}/glfwTargets.cmake")
endif()
endif()
if(GLFW3_CMAKE_LOCATION)
list(APPEND CMAKE_PREFIX_PATH "${GLFW3_CMAKE_LOCATION}")
endif()
set(glfw3_FIND_VERSION ${MINIMUM_GLFW_VERSION})
find_package(glfw3 ${MINIMUM_GLFW_VERSION} REQUIRED)
if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_GLFW_VERSION)
if(glfw3_VERSION VERSION_LESS ${FUTURE_MINIMUM_GLFW_VERSION})
message(DEPRECATION "Support for GLFW versions < ${FUTURE_MINIMUM_GLFW_VERSION} "
"is deprecated and will be removed.")
endif()
endif()
unset(glfw3_FIND_VERSION)
# GLFW 3.1 does not export INTERFACE_LINK_LIBRARIES so detect this
# version and set the property ourselves
# @todo investigate how this might apply for Mac OSX
if(UNIX)
if(glfw3_VERSION VERSION_LESS 3.2)
message(WARNING "GLFW 3.1 does not set the INTERFACE_LINK_LIBRARIES property, "
"hard-coding to expect a dependency on X11. To use a different "
"library dependency, consider upgrading to GLFW 3.2+ where this "
"property is set by the CMake find package module for GLFW.")
find_package(X11 REQUIRED)
set_property(TARGET glfw
PROPERTY INTERFACE_LINK_LIBRARIES
${X11_Xrandr_LIB}
${X11_Xxf86vm_LIB}
${X11_Xcursor_LIB}
${X11_Xinerama_LIB}
${X11_Xi_LIB}
${X11_LIBRARIES}
${CMAKE_DL_LIBS}
)
endif()
endif()