Blame view

Pods/Target Support Files/Pods-HDFwear/Pods-HDFwear-frameworks.sh 11.2 KB
75d24c15   yangbin   123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
  #!/bin/sh
  set -e
  set -u
  set -o pipefail
  
  function on_error {
    echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
  }
  trap 'on_error $LINENO' ERR
  
  if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
    # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
    # frameworks to, so exit 0 (signalling the script phase was successful).
    exit 0
  fi
  
  echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  
  COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
  SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
  BCSYMBOLMAP_DIR="BCSymbolMaps"
  
  
  # This protects against multiple targets copying the same framework dependency at the same time. The solution
  # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
  RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
  
  # Copies and strips a vendored framework
  install_framework()
  {
    if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
      local source="${BUILT_PRODUCTS_DIR}/$1"
    elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
      local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
    elif [ -r "$1" ]; then
      local source="$1"
    fi
  
    local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  
    if [ -L "${source}" ]; then
      echo "Symlinked..."
      source="$(readlink "${source}")"
    fi
  
    if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
      # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
      find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
        echo "Installing $f"
        install_bcsymbolmap "$f" "$destination"
        rm "$f"
      done
      rmdir "${source}/${BCSYMBOLMAP_DIR}"
    fi
  
    # Use filter instead of exclude so missing patterns don't throw errors.
    echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
    rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
  
    local basename
    basename="$(basename -s .framework "$1")"
    binary="${destination}/${basename}.framework/${basename}"
  
    if ! [ -r "$binary" ]; then
      binary="${destination}/${basename}"
    elif [ -L "${binary}" ]; then
      echo "Destination binary is symlinked..."
      dirname="$(dirname "${binary}")"
      binary="${dirname}/$(readlink "${binary}")"
    fi
  
    # Strip invalid architectures so "fat" simulator / device frameworks work on device
    if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
      strip_invalid_archs "$binary"
    fi
  
    # Resign the code if required by the build settings to avoid unstable apps
    code_sign_if_enabled "${destination}/$(basename "$1")"
  
    # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
    if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
      local swift_runtime_libs
      swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
      for lib in $swift_runtime_libs; do
        echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
        rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
        code_sign_if_enabled "${destination}/${lib}"
      done
    fi
  }
  # Copies and strips a vendored dSYM
  install_dsym() {
    local source="$1"
    warn_missing_arch=${2:-true}
    if [ -r "$source" ]; then
      # Copy the dSYM into the targets temp dir.
      echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
      rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
  
      local basename
      basename="$(basename -s .dSYM "$source")"
      binary_name="$(ls "$source/Contents/Resources/DWARF")"
      binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}"
  
      # Strip invalid architectures from the dSYM.
      if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
        strip_invalid_archs "$binary" "$warn_missing_arch"
      fi
      if [[ $STRIP_BINARY_RETVAL == 0 ]]; then
        # Move the stripped file into its final destination.
        echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
        rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
      else
        # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
        mkdir -p "${DWARF_DSYM_FOLDER_PATH}"
        touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM"
      fi
    fi
  }
  
  # Used as a return value for each invocation of `strip_invalid_archs` function.
  STRIP_BINARY_RETVAL=0
  
  # Strip invalid architectures
  strip_invalid_archs() {
    binary="$1"
    warn_missing_arch=${2:-true}
    # Get architectures for current target binary
    binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
    # Intersect them with the architectures we are building for
    intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
    # If there are no archs supported by this binary then warn the user
    if [[ -z "$intersected_archs" ]]; then
      if [[ "$warn_missing_arch" == "true" ]]; then
        echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
      fi
      STRIP_BINARY_RETVAL=1
      return
    fi
    stripped=""
    for arch in $binary_archs; do
      if ! [[ "${ARCHS}" == *"$arch"* ]]; then
        # Strip non-valid architectures in-place
        lipo -remove "$arch" -output "$binary" "$binary"
        stripped="$stripped $arch"
      fi
    done
    if [[ "$stripped" ]]; then
      echo "Stripped $binary of architectures:$stripped"
    fi
    STRIP_BINARY_RETVAL=0
  }
  
  # Copies the bcsymbolmap files of a vendored framework
  install_bcsymbolmap() {
      local bcsymbolmap_path="$1"
      local destination="${BUILT_PRODUCTS_DIR}"
      echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
      rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
  }
  
  # Signs a framework with the provided identity
  code_sign_if_enabled() {
    if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
      # Use the current code_sign_identity
      echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
      local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
  
      if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
        code_sign_cmd="$code_sign_cmd &"
      fi
      echo "$code_sign_cmd"
      eval "$code_sign_cmd"
    fi
  }
  
  if [[ "$CONFIGURATION" == "Debug" ]]; then
    install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
f2cf74c7   yangbin   1.0.20(4)
182
    install_framework "${BUILT_PRODUCTS_DIR}/HCKalmanFilter/HCKalmanFilter.framework"
75d24c15   yangbin   123
183
184
185
    install_framework "${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/JTAppleCalendar/JTAppleCalendar.framework"
f2cf74c7   yangbin   1.0.20(4)
186
    install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
75d24c15   yangbin   123
187
188
189
190
    install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework"
582f536d   yangbin   common:2022.1.28
191
    install_framework "${BUILT_PRODUCTS_DIR}/SCIndexView/SCIndexView.framework"
be19e595   yangbin   9
192
    install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
75d24c15   yangbin   123
193
    install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
f2cf74c7   yangbin   1.0.20(4)
194
    install_framework "${BUILT_PRODUCTS_DIR}/Surge/Surge.framework"
75d24c15   yangbin   123
195
196
    install_framework "${BUILT_PRODUCTS_DIR}/SwiftDate/SwiftDate.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework"
582f536d   yangbin   common:2022.1.28
197
198
    install_framework "${BUILT_PRODUCTS_DIR}/YYText/YYText.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/swiftScan/swiftScan.framework"
75d24c15   yangbin   123
199
200
201
202
203
  fi
  if [[ "$CONFIGURATION" == "Release" ]]; then
    install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
f2cf74c7   yangbin   1.0.20(4)
204
    install_framework "${BUILT_PRODUCTS_DIR}/HCKalmanFilter/HCKalmanFilter.framework"
75d24c15   yangbin   123
205
206
207
    install_framework "${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/JTAppleCalendar/JTAppleCalendar.framework"
f2cf74c7   yangbin   1.0.20(4)
208
    install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
75d24c15   yangbin   123
209
210
211
212
    install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/Realm/Realm.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/RealmSwift/RealmSwift.framework"
582f536d   yangbin   common:2022.1.28
213
    install_framework "${BUILT_PRODUCTS_DIR}/SCIndexView/SCIndexView.framework"
be19e595   yangbin   9
214
    install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
75d24c15   yangbin   123
215
    install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
f2cf74c7   yangbin   1.0.20(4)
216
    install_framework "${BUILT_PRODUCTS_DIR}/Surge/Surge.framework"
75d24c15   yangbin   123
217
218
    install_framework "${BUILT_PRODUCTS_DIR}/SwiftDate/SwiftDate.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework"
582f536d   yangbin   common:2022.1.28
219
220
    install_framework "${BUILT_PRODUCTS_DIR}/YYText/YYText.framework"
    install_framework "${BUILT_PRODUCTS_DIR}/swiftScan/swiftScan.framework"
75d24c15   yangbin   123
221
222
223
224
  fi
  if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
    wait
  fi