build-framework.sh 4.1 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. # macOS
  8. DERIVED_DATA_PATH=$( mktemp -d )
  9. xcrun xcodebuild build \
  10. $COMMON_SETUP \
  11. -derivedDataPath "${DERIVED_DATA_PATH}" \
  12. -destination 'generic/platform=macOS'
  13. mkdir -p "${OUTPUT_DIR}/macos"
  14. ditto "${DERIVED_DATA_PATH}/Build/Products/Release/CryptoSwift.framework" "${OUTPUT_DIR}/macos/CryptoSwift.framework"
  15. rm -rf "${DERIVED_DATA_PATH}"
  16. # macOS Catalyst
  17. DERIVED_DATA_PATH=$( mktemp -d )
  18. xcrun xcodebuild build \
  19. $COMMON_SETUP \
  20. -derivedDataPath "${DERIVED_DATA_PATH}" \
  21. -destination 'generic/platform=macOS,variant=Mac Catalyst'
  22. mkdir -p "${OUTPUT_DIR}/maccatalyst"
  23. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-maccatalyst/CryptoSwift.framework" "${OUTPUT_DIR}/maccatalyst/CryptoSwift.framework"
  24. rm -rf "${DERIVED_DATA_PATH}"
  25. # iOS
  26. DERIVED_DATA_PATH=$( mktemp -d )
  27. xcrun xcodebuild build \
  28. $COMMON_SETUP \
  29. -derivedDataPath "${DERIVED_DATA_PATH}" \
  30. -destination 'generic/platform=iOS'
  31. mkdir -p "${OUTPUT_DIR}/iphoneos"
  32. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-iphoneos/CryptoSwift.framework" "${OUTPUT_DIR}/iphoneos/CryptoSwift.framework"
  33. rm -rf "${DERIVED_DATA_PATH}"
  34. # iOS Simulator
  35. DERIVED_DATA_PATH=$( mktemp -d )
  36. xcrun xcodebuild build \
  37. $COMMON_SETUP \
  38. -derivedDataPath "${DERIVED_DATA_PATH}" \
  39. -destination 'generic/platform=iOS Simulator'
  40. mkdir -p "${OUTPUT_DIR}/iphonesimulator"
  41. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-iphonesimulator/CryptoSwift.framework" "${OUTPUT_DIR}/iphonesimulator/CryptoSwift.framework"
  42. rm -rf "${DERIVED_DATA_PATH}"
  43. # tvOS
  44. DERIVED_DATA_PATH=$( mktemp -d )
  45. xcrun xcodebuild build \
  46. $COMMON_SETUP \
  47. -derivedDataPath "${DERIVED_DATA_PATH}" \
  48. -destination 'generic/platform=tvOS'
  49. mkdir -p "${OUTPUT_DIR}/appletvos"
  50. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-appletvos/CryptoSwift.framework" "${OUTPUT_DIR}/appletvos/CryptoSwift.framework"
  51. rm -rf "${DERIVED_DATA_PATH}"
  52. # tvOS Simulator
  53. DERIVED_DATA_PATH=$( mktemp -d )
  54. xcrun xcodebuild build \
  55. $COMMON_SETUP \
  56. -derivedDataPath "${DERIVED_DATA_PATH}" \
  57. -destination 'generic/platform=tvOS Simulator'
  58. mkdir -p "${OUTPUT_DIR}/appletvsimulator"
  59. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-appletvsimulator/CryptoSwift.framework" "${OUTPUT_DIR}/appletvsimulator/CryptoSwift.framework"
  60. rm -rf "${DERIVED_DATA_PATH}"
  61. # watchOS
  62. DERIVED_DATA_PATH=$( mktemp -d )
  63. xcrun xcodebuild build \
  64. $COMMON_SETUP \
  65. -derivedDataPath "${DERIVED_DATA_PATH}" \
  66. -destination 'generic/platform=watchOS'
  67. mkdir -p "${OUTPUT_DIR}/watchos"
  68. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-watchos/CryptoSwift.framework" "${OUTPUT_DIR}/watchos/CryptoSwift.framework"
  69. rm -rf "${DERIVED_DATA_PATH}"
  70. # watchOS Simulator
  71. DERIVED_DATA_PATH=$( mktemp -d )
  72. xcrun xcodebuild build \
  73. $COMMON_SETUP \
  74. -derivedDataPath "${DERIVED_DATA_PATH}" \
  75. -destination 'generic/platform=watchOS Simulator'
  76. mkdir -p "${OUTPUT_DIR}/watchsimulator"
  77. ditto "${DERIVED_DATA_PATH}/Build/Products/Release-watchsimulator/CryptoSwift.framework" "${OUTPUT_DIR}/watchsimulator/CryptoSwift.framework"
  78. rm -rf "${DERIVED_DATA_PATH}"
  79. # XCFRAMEWORK
  80. rm -rf ${SCRIPT_DIR}/../CryptoSwift.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 ${SCRIPT_DIR}/../CryptoSwift.xcframework
  91. # pushd ${OUTPUT_DIR}
  92. # xcrun zip --symlinks -r -o ${BASE_PWD}/CryptoSwift.xcframework.zip CryptoSwift.xcframework
  93. # popd
  94. echo "✔️ CryptoSwift.xcframework"
  95. echo ${OUTPUT_DIR}
  96. rm -rf ${OUTPUT_DIR}
  97. cd ${BASE_PWD}