create-xcframework.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/bash
  2. set -e
  3. set -o pipefail
  4. if [[ -z "$XCODE_VERSION_MAJOR" ]]
  5. then
  6. XCODE_VERSION_MAJOR=$(xcodebuild -showBuildSettings | awk -F= '/XCODE_VERSION_MAJOR/{x=$NF; gsub(/[^0-9]/,"",x); print int(x)}')
  7. fi
  8. if [[ -z "$XCODE_VERSION_MINOR" ]]
  9. then
  10. XCODE_VERSION_MINOR=$(xcodebuild -showBuildSettings | awk -F= '/XCODE_VERSION_MINOR/{x=$NF; gsub(/[^0-9]/,"",x); print int(x)}')
  11. fi
  12. XCODE_MAJOR=$(($XCODE_VERSION_MAJOR / 100))
  13. XCODE_MINOR=$(($XCODE_VERSION_MINOR / 10))
  14. XCODE_MINOR=$(($XCODE_MINOR % 10))
  15. echo "XCODE_MAJOR=$XCODE_MAJOR"
  16. echo "XCODE_MINOR=$XCODE_MINOR"
  17. if [ -z "$SRCROOT" ]
  18. then
  19. SRCROOT=$(pwd)
  20. fi
  21. if [ $XCODE_MAJOR -lt 11 ]
  22. then
  23. echo "Xcode 10 does not support xcframework. You can still use the individual framework for each platform."
  24. open -a Finder "${SRCROOT}/build/"
  25. exit 0
  26. fi
  27. mkdir -p "${SRCROOT}/build"
  28. PLATFORMS=("iOS" "iOSSimulator" "macOS" "tvOS" "tvOSSimulator" "watchOS" "watchOSSimulator")
  29. if [ $XCODE_MAJOR -ge 11 ]
  30. then
  31. PLATFORMS+=("macCatalyst")
  32. fi
  33. if [[ ($XCODE_MAJOR -gt 15) || ($XCODE_MAJOR -eq 15 && $XCODE_MINOR -ge 2) ]]
  34. then
  35. PLATFORMS+=("visionOS")
  36. PLATFORMS+=("visionOSSimulator")
  37. fi
  38. COMMAND_ARGS=""
  39. for CURRENT_PLATFORM in "${PLATFORMS[@]}"
  40. do
  41. COMMAND_ARGS="${COMMAND_ARGS} -framework ${SRCROOT}/build/${CURRENT_PLATFORM}/SDWebImage.framework"
  42. if [[ $MACH_O_TYPE != "staticlib" ]]; then
  43. COMMAND_ARGS="${COMMAND_ARGS} -debug-symbols ${SRCROOT}/build/${CURRENT_PLATFORM}/SDWebImage.framework.dSYM"
  44. fi
  45. done
  46. # Combine XCFramework
  47. echo "Create XCFramework"
  48. xcodebuild -create-xcframework $COMMAND_ARGS -output "${SRCROOT}/build/SDWebImage.xcframework"