create-framework.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/sh
  2. # Bitcode is not working for a dynamic framework
  3. FWNAME="OpenSSL"
  4. OSX_MIN="10.9"
  5. IOS_MIN="8.0"
  6. rm -rf Frameworks/ios/$FWNAME.framework
  7. rm -rf Frameworks/macos/$FWNAME.framework
  8. echo "Creating $FWNAME.framework"
  9. mkdir -p Frameworks/ios/$FWNAME.framework/Headers
  10. mkdir -p Frameworks/ios/$FWNAME.framework/Modules
  11. mkdir -p Frameworks/macos/$FWNAME.framework/Headers
  12. mkdir -p Frameworks/macos/$FWNAME.framework/Modules
  13. # xcrun --sdk iphoneos ld -dylib -arch armv7 -bitcode_bundle -ios_version_min $IOS_MIN lib-ios/libcrypto.a -o Frameworks/ios/$FWNAME.framework/$FWNAME-armv7
  14. # xcrun --sdk iphoneos ld -dylib -arch armv7s -bitcode_bundle -ios_version_min $IOS_MIN lib-ios/libcrypto.a -o Frameworks/ios/$FWNAME.framework/$FWNAME-armv7s
  15. # xcrun --sdk iphoneos ld -dylib -arch arm64 -bitcode_bundle -ios_version_min $IOS_MIN lib-ios/libcrypto.a -o Frameworks/ios/$FWNAME.framework/$FWNAME-arm64
  16. # xcrun --sdk iphoneos lipo -create Frameworks/ios/$FWNAME.framework/$FWNAME-* -output Frameworks/ios/$FWNAME.framework/$FWNAME
  17. # rm -rf Frameworks/ios/$FWNAME.framework/$FWNAME-*
  18. xcrun -n --sdk iphoneos libtool -dynamic -no_warning_for_no_symbols -undefined dynamic_lookup -ios_version_min $IOS_MIN -o Frameworks/ios/$FWNAME.framework/$FWNAME lib-ios/libcrypto.a lib-ios/libssl.a
  19. # rdar://41396876 - macosx fails randomly
  20. xcrun -n --sdk macosx libtool -dynamic -no_warning_for_no_symbols -undefined dynamic_lookup -macosx_version_min $OSX_MIN -o Frameworks/macos/$FWNAME.framework/$FWNAME lib-macos/libcrypto.a lib-macos/libssl.a
  21. cp -r include-ios/$FWNAME/* Frameworks/ios/$FWNAME.framework/Headers/
  22. sed -i '' 's/include <openssl/include <OpenSSL/' Frameworks/ios/$FWNAME.framework/Headers/*.h
  23. cp -r include-macos/$FWNAME/* Frameworks/macos/$FWNAME.framework/Headers/
  24. sed -i '' 's/include <openssl/include <OpenSSL/' Frameworks/macos/$FWNAME.framework/Headers/*.h
  25. echo "Create module"
  26. # Umbrella header
  27. for entry in `find Frameworks/ios/OpenSSL.framework/Headers -mindepth 1 -maxdepth 1 -type f -exec basename {} \;`; do
  28. echo "#include \"$entry\"" >> Frameworks/ios/$FWNAME.framework/Headers/OpenSSL.h
  29. done
  30. for entry in `find Frameworks/macos/OpenSSL.framework/Headers -mindepth 1 -maxdepth 1 -type f -exec basename {} \;`; do
  31. echo "#include \"$entry\"" >> Frameworks/macos/$FWNAME.framework/Headers/OpenSSL.h
  32. done
  33. echo "framework module OpenSSL {
  34. umbrella header \"OpenSSL.h\"
  35. export *
  36. module * { export *}
  37. }" > Frameworks/ios/$FWNAME.framework/Modules/module.modulemap
  38. echo "framework module OpenSSL {
  39. umbrella header \"OpenSSL.h\"
  40. export *
  41. module * { export *}
  42. }" > Frameworks/macos/$FWNAME.framework/Modules/module.modulemap
  43. echo "Created $FWNAME.framework"