build-framework.sh 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/usr/bin/env bash
  2. set -e
  3. BASE_PWD="$PWD"
  4. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
  5. OUTPUT_DIR=$( mktemp -d )
  6. COMMON_SETUP="-project ${SCRIPT_DIR}/../CryptoSwift.xcodeproj -scheme CryptoSwift -configuration Release -quiet SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES"
  7. # carthage build --no-skip-current --create-xcframework --configuration "Release" --platform all
  8. # macOS
  9. DERIVED_DATA_PATH=$( mktemp -d )
  10. xcrun xcodebuild build \
  11. $COMMON_SETUP \
  12. -derivedDataPath "${DERIVED_DATA_PATH}" \
  13. -destination 'generic/platform=macOS'
  14. mkdir -p "${OUTPUT_DIR}/macos"
  15. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release/CryptoSwift.framework" "${OUTPUT_DIR}/macos"
  16. rm -rf "${DERIVED_DATA_PATH}"
  17. # macOS Catalyst
  18. DERIVED_DATA_PATH=$( mktemp -d )
  19. xcrun xcodebuild build \
  20. $COMMON_SETUP \
  21. -derivedDataPath "${DERIVED_DATA_PATH}" \
  22. -destination 'generic/platform=macOS,variant=Mac Catalyst'
  23. mkdir -p "${OUTPUT_DIR}/maccatalyst"
  24. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-maccatalyst/CryptoSwift.framework" "${OUTPUT_DIR}/maccatalyst"
  25. rm -rf "${DERIVED_DATA_PATH}"
  26. # iOS
  27. DERIVED_DATA_PATH=$( mktemp -d )
  28. xcrun xcodebuild build \
  29. $COMMON_SETUP \
  30. -derivedDataPath "${DERIVED_DATA_PATH}" \
  31. -destination 'generic/platform=iOS'
  32. mkdir -p "${OUTPUT_DIR}/iphoneos"
  33. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-iphoneos/CryptoSwift.framework" "${OUTPUT_DIR}/iphoneos"
  34. rm -rf "${DERIVED_DATA_PATH}"
  35. # iOS Simulator
  36. DERIVED_DATA_PATH=$( mktemp -d )
  37. xcrun xcodebuild build \
  38. $COMMON_SETUP \
  39. -derivedDataPath "${DERIVED_DATA_PATH}" \
  40. -destination 'generic/platform=iOS Simulator'
  41. mkdir -p "${OUTPUT_DIR}/iphonesimulator"
  42. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-iphonesimulator/CryptoSwift.framework" "${OUTPUT_DIR}/iphonesimulator"
  43. rm -rf "${DERIVED_DATA_PATH}"
  44. # tvOS
  45. DERIVED_DATA_PATH=$( mktemp -d )
  46. xcrun xcodebuild build \
  47. $COMMON_SETUP \
  48. -derivedDataPath "${DERIVED_DATA_PATH}" \
  49. -destination 'generic/platform=tvOS'
  50. mkdir -p "${OUTPUT_DIR}/appletvos"
  51. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-appletvos/CryptoSwift.framework" "${OUTPUT_DIR}/appletvos"
  52. rm -rf "${DERIVED_DATA_PATH}"
  53. # tvOS Simulator
  54. DERIVED_DATA_PATH=$( mktemp -d )
  55. xcrun xcodebuild build \
  56. $COMMON_SETUP \
  57. -derivedDataPath "${DERIVED_DATA_PATH}" \
  58. -destination 'generic/platform=tvOS Simulator'
  59. mkdir -p "${OUTPUT_DIR}/appletvsimulator"
  60. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-appletvsimulator/CryptoSwift.framework" "${OUTPUT_DIR}/appletvsimulator"
  61. rm -rf "${DERIVED_DATA_PATH}"
  62. # watchOS
  63. DERIVED_DATA_PATH=$( mktemp -d )
  64. xcrun xcodebuild build \
  65. $COMMON_SETUP \
  66. -derivedDataPath "${DERIVED_DATA_PATH}" \
  67. -destination 'generic/platform=watchOS'
  68. mkdir -p "${OUTPUT_DIR}/watchos"
  69. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-watchos/CryptoSwift.framework" "${OUTPUT_DIR}/watchos"
  70. rm -rf "${DERIVED_DATA_PATH}"
  71. # watchOS Simulator
  72. DERIVED_DATA_PATH=$( mktemp -d )
  73. xcrun xcodebuild build \
  74. $COMMON_SETUP \
  75. -derivedDataPath "${DERIVED_DATA_PATH}" \
  76. -destination 'generic/platform=watchOS Simulator'
  77. mkdir -p "${OUTPUT_DIR}/watchsimulator"
  78. cp -r "${DERIVED_DATA_PATH}/Build/Products/Release-watchsimulator/CryptoSwift.framework" "${OUTPUT_DIR}/watchsimulator"
  79. rm -rf "${DERIVED_DATA_PATH}"
  80. # XCFRAMEWORK
  81. xcrun xcodebuild -quiet -create-xcframework \
  82. -framework "${OUTPUT_DIR}/iphoneos/CryptoSwift.framework" \
  83. -framework "${OUTPUT_DIR}/iphonesimulator/CryptoSwift.framework" \
  84. -framework "${OUTPUT_DIR}/appletvos/CryptoSwift.framework" \
  85. -framework "${OUTPUT_DIR}/appletvsimulator/CryptoSwift.framework" \
  86. -framework "${OUTPUT_DIR}/watchos/CryptoSwift.framework" \
  87. -framework "${OUTPUT_DIR}/watchsimulator/CryptoSwift.framework" \
  88. -framework "${OUTPUT_DIR}/macos/CryptoSwift.framework" \
  89. -framework "${OUTPUT_DIR}/maccatalyst/CryptoSwift.framework" \
  90. -output ${OUTPUT_DIR}/CryptoSwift.xcframework
  91. # zip CryptoSwift.xcframework.zip ${OUTPUT_DIR}/CryptoSwift.xcframework
  92. mv ${OUTPUT_DIR}/CryptoSwift.xcframework ${BASE_PWD}
  93. echo "✔️ CryptoSwift.xcframework"
  94. rm -rf ${OUTPUT_DIR}
  95. cd ${BASE_PWD}