1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-15 20:46:37 +08:00

macOS: Simplify imported framework locations in find modules

Take advantage of commit d605f728f7 (macOS: Allow IMPORTED_LOCATION to
be a framework folder, 2023-06-16) to remove special-case framework
logic from find modules.

This changes link lines from `/path/to/Foo.framework/Foo[.tbd]` to
`-framework Foo`.  With the latter, the linker will automatically choose
the `.tbd` if it exists.

Issue: #24946
This commit is contained in:
Brad King
2023-08-25 11:00:35 -04:00
parent 5ae0030e90
commit 6b01a27f90
3 changed files with 23 additions and 66 deletions

View File

@@ -107,18 +107,8 @@ elseif(APPLE)
if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa) if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa)
add_library(GLUT::Cocoa UNKNOWN IMPORTED) add_library(GLUT::Cocoa UNKNOWN IMPORTED)
# Cocoa should always be a Framework, but we check to make sure. set_target_properties(GLUT::Cocoa PROPERTIES
if(GLUT_cocoa_LIBRARY MATCHES "/([^/]+)\\.framework$") IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}")
set(_glut_cocoa "${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1}")
if(EXISTS "${_glut_cocoa}.tbd")
string(APPEND _glut_cocoa ".tbd")
endif()
set_target_properties(GLUT::Cocoa PROPERTIES
IMPORTED_LOCATION "${_glut_cocoa}")
else()
set_target_properties(GLUT::Cocoa PROPERTIES
IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}")
endif()
endif() endif()
else() else()
if(BEOS) if(BEOS)
@@ -196,32 +186,23 @@ if (GLUT_FOUND)
add_library(GLUT::GLUT UNKNOWN IMPORTED) add_library(GLUT::GLUT UNKNOWN IMPORTED)
set_target_properties(GLUT::GLUT PROPERTIES set_target_properties(GLUT::GLUT PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIRS}") INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIRS}")
if(GLUT_glut_LIBRARY MATCHES "/([^/]+)\\.framework$") if(GLUT_glut_LIBRARY_RELEASE)
set(_glut_glut "${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1}") set_property(TARGET GLUT::GLUT APPEND PROPERTY
if(EXISTS "${_glut_glut}.tbd") IMPORTED_CONFIGURATIONS RELEASE)
string(APPEND _glut_glut ".tbd")
endif()
set_target_properties(GLUT::GLUT PROPERTIES set_target_properties(GLUT::GLUT PROPERTIES
IMPORTED_LOCATION "${_glut_glut}") IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}")
else() endif()
if(GLUT_glut_LIBRARY_RELEASE)
set_property(TARGET GLUT::GLUT APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(GLUT::GLUT PROPERTIES
IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}")
endif()
if(GLUT_glut_LIBRARY_DEBUG) if(GLUT_glut_LIBRARY_DEBUG)
set_property(TARGET GLUT::GLUT APPEND PROPERTY set_property(TARGET GLUT::GLUT APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG) IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(GLUT::GLUT PROPERTIES set_target_properties(GLUT::GLUT PROPERTIES
IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}") IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}")
endif() endif()
if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG) if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG)
set_property(TARGET GLUT::GLUT APPEND PROPERTY set_property(TARGET GLUT::GLUT APPEND PROPERTY
IMPORTED_LOCATION "${GLUT_glut_LIBRARY}") IMPORTED_LOCATION "${GLUT_glut_LIBRARY}")
endif()
endif() endif()
if(TARGET GLUT::Xmu) if(TARGET GLUT::Xmu)

View File

@@ -106,15 +106,9 @@ find_package_handle_standard_args(
mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR) mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
if(OPENAL_FOUND AND NOT TARGET OpenAL::OpenAL) if(OPENAL_FOUND AND NOT TARGET OpenAL::OpenAL)
if(OPENAL_LIBRARY MATCHES "/([^/]+)\\.framework$") add_library(OpenAL::OpenAL UNKNOWN IMPORTED)
add_library(OpenAL::OpenAL INTERFACE IMPORTED) set_target_properties(OpenAL::OpenAL PROPERTIES
set_target_properties(OpenAL::OpenAL PROPERTIES IMPORTED_LOCATION "${OPENAL_LIBRARY}")
INTERFACE_LINK_LIBRARIES "${OPENAL_LIBRARY}")
else()
add_library(OpenAL::OpenAL UNKNOWN IMPORTED)
set_target_properties(OpenAL::OpenAL PROPERTIES
IMPORTED_LOCATION "${OPENAL_LIBRARY}")
endif()
set_target_properties(OpenAL::OpenAL PROPERTIES set_target_properties(OpenAL::OpenAL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPENAL_INCLUDE_DIR}") INTERFACE_INCLUDE_DIRECTORIES "${OPENAL_INCLUDE_DIR}")
endif() endif()

View File

@@ -655,17 +655,8 @@ if(OPENGL_FOUND)
# A legacy GL library is available, so use it for the legacy GL target. # A legacy GL library is available, so use it for the legacy GL target.
if(IS_ABSOLUTE "${OPENGL_gl_LIBRARY}") if(IS_ABSOLUTE "${OPENGL_gl_LIBRARY}")
add_library(OpenGL::GL UNKNOWN IMPORTED) add_library(OpenGL::GL UNKNOWN IMPORTED)
if(OPENGL_gl_LIBRARY MATCHES "/([^/]+)\\.framework$") set_target_properties(OpenGL::GL PROPERTIES
set(_gl_fw "${OPENGL_gl_LIBRARY}/${CMAKE_MATCH_1}") IMPORTED_LOCATION "${OPENGL_gl_LIBRARY}")
if(EXISTS "${_gl_fw}.tbd")
string(APPEND _gl_fw ".tbd")
endif()
set_target_properties(OpenGL::GL PROPERTIES
IMPORTED_LOCATION "${_gl_fw}")
else()
set_target_properties(OpenGL::GL PROPERTIES
IMPORTED_LOCATION "${OPENGL_gl_LIBRARY}")
endif()
else() else()
add_library(OpenGL::GL INTERFACE IMPORTED) add_library(OpenGL::GL INTERFACE IMPORTED)
set_target_properties(OpenGL::GL PROPERTIES set_target_properties(OpenGL::GL PROPERTIES
@@ -709,17 +700,8 @@ if(OPENGL_FOUND)
if(OPENGL_GLU_FOUND AND NOT TARGET OpenGL::GLU) if(OPENGL_GLU_FOUND AND NOT TARGET OpenGL::GLU)
if(IS_ABSOLUTE "${OPENGL_glu_LIBRARY}") if(IS_ABSOLUTE "${OPENGL_glu_LIBRARY}")
add_library(OpenGL::GLU UNKNOWN IMPORTED) add_library(OpenGL::GLU UNKNOWN IMPORTED)
if(OPENGL_glu_LIBRARY MATCHES "/([^/]+)\\.framework$") set_target_properties(OpenGL::GLU PROPERTIES
set(_glu_fw "${OPENGL_glu_LIBRARY}/${CMAKE_MATCH_1}") IMPORTED_LOCATION "${OPENGL_glu_LIBRARY}")
if(EXISTS "${_glu_fw}.tbd")
string(APPEND _glu_fw ".tbd")
endif()
set_target_properties(OpenGL::GLU PROPERTIES
IMPORTED_LOCATION "${_glu_fw}")
else()
set_target_properties(OpenGL::GLU PROPERTIES
IMPORTED_LOCATION "${OPENGL_glu_LIBRARY}")
endif()
else() else()
add_library(OpenGL::GLU INTERFACE IMPORTED) add_library(OpenGL::GLU INTERFACE IMPORTED)
set_target_properties(OpenGL::GLU PROPERTIES set_target_properties(OpenGL::GLU PROPERTIES