this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

[build] Support arbitrary framework directories

This is necessary for stubs for the CoreSimulator framework (needed for
Xcode), which lives in `/Library/Developer/PrivateFrameworks`.

+38 -16
+19 -9
cmake/darling_framework.cmake
··· 7 7 FULL_DOCS "Used to make reexporting child frameworks less painful.") 8 8 9 9 function(add_framework name) 10 - cmake_parse_arguments(FRAMEWORK "CURRENT_VERSION;FAT;PRIVATE;IOSSUPPORT;CIRCULAR;NO_INSTALL" "VERSION;LINK_FLAGS;PARENT;PARENT_VERSION;TARGET_NAME;PARENT_COMPONENT" 10 + cmake_parse_arguments(FRAMEWORK "CURRENT_VERSION;FAT;PRIVATE;IOSSUPPORT;CIRCULAR;NO_INSTALL" "VERSION;LINK_FLAGS;PARENT;PARENT_VERSION;TARGET_NAME;PARENT_COMPONENT;PARENT_DIR" 11 11 "SOURCES;DEPENDENCIES;CIRCULAR_DEPENDENCIES;RESOURCES;UPWARD_DEPENDENCIES;OBJECTS;STRONG_DEPENDENCIES" ${ARGN}) 12 12 13 13 if (FRAMEWORK_NO_INSTALL) ··· 36 36 set(sys_library_dir "System/Library") 37 37 endif (FRAMEWORK_IOSSUPPORT) 38 38 39 + set(root_dir "/${sys_library_dir}/${dir_name}") 40 + 41 + if (FRAMEWORK_PARENT_DIR) 42 + set(root_dir "${FRAMEWORK_PARENT_DIR}") 43 + endif() 44 + 45 + if (NOT (root_dir MATCHES "^/")) 46 + set(root_dir "/${root_dir}") 47 + endif() 48 + 39 49 if(DEFINED FRAMEWORK_PARENT) 40 50 if(NOT DEFINED FRAMEWORK_PARENT_VERSION) 41 51 # 99% of the time it's version A ··· 47 57 set(COMPONENT_ARG "") 48 58 endif() 49 59 InstallSymlink(Versions/Current/Frameworks 50 - "${CMAKE_INSTALL_PREFIX}/libexec/darling/${sys_library_dir}/${dir_name}/${FRAMEWORK_PARENT}.framework/Frameworks" 60 + "${CMAKE_INSTALL_PREFIX}/libexec/darling${root_dir}/${FRAMEWORK_PARENT}.framework/Frameworks" 51 61 ${EXCLUDE_FROM_ALL_ARG} ${COMPONENT_ARG}) 52 - set(dir_name "${dir_name}/${FRAMEWORK_PARENT}.framework/Versions/${FRAMEWORK_PARENT_VERSION}/Frameworks") 62 + set(root_dir "${root_dir}/${FRAMEWORK_PARENT}.framework/Versions/${FRAMEWORK_PARENT_VERSION}/Frameworks") 53 63 endif(DEFINED FRAMEWORK_PARENT) 54 64 55 - set(DYLIB_INSTALL_NAME "/${sys_library_dir}/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/${name}") 65 + set(DYLIB_INSTALL_NAME "${root_dir}/${name}.framework/Versions/${FRAMEWORK_VERSION}/${name}") 56 66 57 67 if (FRAMEWORK_CIRCULAR OR FRAMEWORK_CIRCULAR_DEPENDENCIES OR FRAMEWORK_UPWARD_DEPENDENCIES) 58 68 if (FRAMEWORK_FAT) ··· 98 108 set_property(TARGET ${my_name} APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") 99 109 endif (FRAMEWORK_LINK_FLAGS) 100 110 101 - install(TARGETS ${my_name} DESTINATION "libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/" ${EXCLUDE_FROM_ALL_ARG}) 111 + install(TARGETS ${my_name} DESTINATION "libexec/darling${root_dir}/${name}.framework/Versions/${FRAMEWORK_VERSION}/" ${EXCLUDE_FROM_ALL_ARG}) 102 112 103 113 if (FRAMEWORK_RESOURCES) 104 114 if (FRAMEWORK_CURRENT_VERSION) 105 - InstallSymlink("Versions/Current/Resources" "${CMAKE_INSTALL_PREFIX}/libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/Resources" ${EXCLUDE_FROM_ALL_ARG}) 115 + InstallSymlink("Versions/Current/Resources" "${CMAKE_INSTALL_PREFIX}/libexec/darling${root_dir}/${name}.framework/Resources" ${EXCLUDE_FROM_ALL_ARG}) 106 116 endif (FRAMEWORK_CURRENT_VERSION) 107 117 while (FRAMEWORK_RESOURCES) 108 118 list(GET FRAMEWORK_RESOURCES 0 res_install_path) ··· 110 120 get_filename_component(res_install_dir ${res_install_path} DIRECTORY) 111 121 get_filename_component(res_install_name ${res_install_path} NAME) 112 122 install(FILES ${res_source_path} 113 - DESTINATION libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/Resources/${res_install_dir} 123 + DESTINATION libexec/darling${root_dir}/${name}.framework/Versions/${FRAMEWORK_VERSION}/Resources/${res_install_dir} 114 124 RENAME ${res_install_name} ${EXCLUDE_FROM_ALL_ARG}) 115 125 list(REMOVE_AT FRAMEWORK_RESOURCES 0 1) 116 126 endwhile (FRAMEWORK_RESOURCES) 117 127 endif() 118 128 119 129 if (FRAMEWORK_CURRENT_VERSION) 120 - InstallSymlink(${FRAMEWORK_VERSION} "${CMAKE_INSTALL_PREFIX}/libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/Versions/Current" ${EXCLUDE_FROM_ALL_ARG}) 121 - InstallSymlink("Versions/Current/${name}" "${CMAKE_INSTALL_PREFIX}/libexec/darling/${sys_library_dir}/${dir_name}/${name}.framework/${name}" ${EXCLUDE_FROM_ALL_ARG}) 130 + InstallSymlink(${FRAMEWORK_VERSION} "${CMAKE_INSTALL_PREFIX}/libexec/darling${root_dir}/${name}.framework/Versions/Current" ${EXCLUDE_FROM_ALL_ARG}) 131 + InstallSymlink("Versions/Current/${name}" "${CMAKE_INSTALL_PREFIX}/libexec/darling${root_dir}/${name}.framework/${name}" ${EXCLUDE_FROM_ALL_ARG}) 122 132 endif() 123 133 endfunction(add_framework) 124 134
+19 -7
cmake/darling_open_source_sdk.cmake
··· 3 3 function(remove_sdk_framework name) 4 4 cmake_parse_arguments(SDK 5 5 "PRIVATE;IOSSUPPORT" 6 - "" 6 + "PARENT_DIR" 7 7 "" 8 8 ${ARGN} 9 9 ) ··· 28 28 29 29 set(developer_sdk_path "Developer/Platforms/${developer_platform}/Developer/SDKs/${developer_sdk}") 30 30 set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${developer_sys_library_dir}/${developer_framework_dir}/${name}.framework") 31 + 32 + if (SDK_PARENT_DIR) 33 + set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${SDK_PARENT_DIR}/${name}.framework") 34 + endif() 35 + 31 36 set(header_framework_include_path "${DARLING_TOP_DIRECTORY}/${header_framework_include}/${name}") 32 37 33 38 # Remove file from 'Developer' folder ··· 35 40 # Also remove the the header folder from the framework/framework-private-include header 36 41 file(REMOVE_RECURSE ${header_framework_include_path}) 37 42 38 - message("Deleted SDK framework ${developer_sdk_path}") 43 + message("Deleted SDK framework ${developer_framework_path}") 39 44 endif (REGENERATE_SDK) 40 45 endfunction(remove_sdk_framework) 41 46 42 47 function(get_path_preframework result) 43 48 cmake_parse_arguments(SDK 44 49 "PRIVATE;IOSSUPPORT" 45 - "" 50 + "PARENT_DIR" 46 51 "" 47 52 ${ARGN} 48 53 ) ··· 63 68 set(developer_framework_dir "Frameworks") 64 69 endif (SDK_PRIVATE) 65 70 66 - set("${result}" "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${developer_sys_library_dir}/${developer_framework_dir}" PARENT_SCOPE) 71 + set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${developer_sys_library_dir}/${developer_framework_dir}") 72 + 73 + if (SDK_PARENT_DIR) 74 + set(developer_framework_path "${DARLING_TOP_DIRECTORY}/${developer_sdk_path}/${SDK_PARENT_DIR}") 75 + endif() 76 + 77 + set("${result}" "${developer_framework_path}" PARENT_SCOPE) 67 78 endfunction(get_path_preframework) 68 79 69 80 function(append_path_sdk_subframework input_path output_path name) ··· 80 91 function(internal_generate_developer_framework name path) 81 92 cmake_parse_arguments(SDK 82 93 "" 83 - "VERSION;HEADER" 94 + "VERSION;HEADER;PARENT_DIR" 84 95 "" 85 96 ${ARGN} 86 97 ) ··· 133 144 function(generate_sdk_framework name) 134 145 cmake_parse_arguments(SDK 135 146 "PRIVATE;IOSSUPPORT" 136 - "VERSION;HEADER" 147 + "VERSION;HEADER;PARENT_DIR" 137 148 "" 138 149 ${ARGN} 139 150 ) ··· 154 165 get_path_preframework(sdk_path 155 166 ${PRIVATE} 156 167 ${IOSSUPPORT} 168 + PARENT_DIR "${SDK_PARENT_DIR}" 157 169 ) 158 170 159 171 internal_generate_developer_framework(${name} ··· 195 207 ${PRIVATE} 196 208 ) 197 209 endif (REGENERATE_SDK) 198 - endfunction(generate_sdk_subframework) 210 + endfunction(generate_sdk_subframework)