1# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2# file Copyright.txt or https://cmake.org/licensing for details.
3
4#[=======================================================================[.rst:
5CMakeFindFrameworks
6-------------------
7
8helper module to find OSX frameworks
9
10This module reads hints about search locations from variables::
11
12  CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS - Extra directories
13#]=======================================================================]
14
15if(NOT CMAKE_FIND_FRAMEWORKS_INCLUDED)
16  set(CMAKE_FIND_FRAMEWORKS_INCLUDED 1)
17  macro(CMAKE_FIND_FRAMEWORKS fwk)
18    set(${fwk}_FRAMEWORKS)
19    if(APPLE)
20      file(TO_CMAKE_PATH "$ENV{CMAKE_FRAMEWORK_PATH}" _cmff_CMAKE_FRAMEWORK_PATH)
21      set(_cmff_search_paths
22            ${CMAKE_FRAMEWORK_PATH}
23            ${_cmff_CMAKE_FRAMEWORK_PATH}
24            ~/Library/Frameworks
25            /usr/local/Frameworks
26            /Library/Frameworks
27            /System/Library/Frameworks
28            /Network/Library/Frameworks
29            ${CMAKE_SYSTEM_FRAMEWORK_PATH})
30
31      # For backwards compatibility reasons,
32      # CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS includes ${fwk}.framework
33      list(TRANSFORM _cmff_search_paths APPEND /${fwk}.framework)
34      list(APPEND _cmff_search_paths ${CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS})
35
36      list(REMOVE_DUPLICATES _cmff_search_paths)
37
38      foreach(dir IN LISTS _cmff_search_paths)
39        if(EXISTS ${dir})
40          set(${fwk}_FRAMEWORKS ${${fwk}_FRAMEWORKS} ${dir})
41        endif()
42      endforeach()
43    endif()
44  endmacro()
45endif()
46