From 3dbedea8fc143198b3978fa4e5dbec2272acc147 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 11 Sep 2023 14:48:32 +0200 Subject: [PATCH] CMake: Fix build with CMake 3.28 on macOS FindWrapOpenGL.cmake assumed that IMPORTED_LOCATION is the absolute path of the library within the framework. That's not the case with CMake 3.28 anymore. There, IMPORTED_LOCATION is the absolute path of the framework directory. The relevant upstream CMake change is 6b01a27f901b5eb392955fea322cde44a1b782a3. Change-Id: I6b702a28318e0978c56dec83c398965aa77ef020 Reviewed-by: Alexandru Croitor (cherry picked from commit 0efea8020c1d221635aaa0a71529edb392cfe3cc) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 9dbb4a8f8113310e209aaba334fbfdfd688e703c) (cherry picked from commit b055169f76acb509a4e3ce5c90ae2b18b8e8f2f5) --- cmake/FindWrapOpenGL.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmake/FindWrapOpenGL.cmake b/cmake/FindWrapOpenGL.cmake index 91d8b77c12e..bdbf1aa8db0 100644 --- a/cmake/FindWrapOpenGL.cmake +++ b/cmake/FindWrapOpenGL.cmake @@ -14,14 +14,18 @@ if (OpenGL_FOUND) add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED) if(APPLE) + # CMake 3.27 and older: # On Darwin platforms FindOpenGL sets IMPORTED_LOCATION to the absolute path of the library # within the framework. This ends up as an absolute path link flag, which we don't want, # because that makes our .prl files un-relocatable. # Extract the framework path instead, and use that in INTERFACE_LINK_LIBRARIES, - # which CMake ends up transforming into a reloctable -framework flag. + # which CMake ends up transforming into a relocatable -framework flag. # See https://gitlab.kitware.com/cmake/cmake/-/issues/20871 for details. + # + # CMake 3.28 and above: + # IMPORTED_LOCATION is the absolute path the the OpenGL.framework folder. get_target_property(__opengl_fw_lib_path OpenGL::GL IMPORTED_LOCATION) - if(__opengl_fw_lib_path) + if(__opengl_fw_lib_path AND NOT __opengl_fw_lib_path MATCHES "/([^/]+)\\.framework$") get_filename_component(__opengl_fw_path "${__opengl_fw_lib_path}" DIRECTORY) endif()