build_ios.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/bin/sh
  2. # This is a first attempt to create a script to libzmq for iOS >= 13.5, including arm64
  3. # inspired on https://raw.githubusercontent.com/drewcrawford/libzmq-ios/master/libzmq.sh
  4. set -e
  5. LIBNAME="libzmq.a"
  6. ARCHS=${ARCHS:-"armv7 armv7s arm64 x86_64"}
  7. DEVELOPER=$(xcode-select -print-path)
  8. LIPO=$(xcrun -sdk iphoneos -find lipo)
  9. SCRIPTDIR=$( (cd -P $(dirname $0) && pwd) )
  10. DISTLIBDIR="${SCRIPTDIR}/lib"
  11. DSTDIR=${SCRIPTDIR}
  12. BUILDDIR="${DSTDIR}/libzmq_build"
  13. DISTDIR="${DSTDIR}/libzmq_dist"
  14. LIBDIR=$(dirname $(dirname ${SCRIPTDIR}))
  15. SDK=$(xcodebuild -showsdks \
  16. | grep iphoneos | sort | tail -n 1 | awk '{print substr($NF, 9)}'
  17. )
  18. IOS_VERSION_MIN=8.0
  19. OTHER_LDFLAGS=""
  20. OTHER_CFLAGS="-Os -Qunused-arguments"
  21. # Enable Bitcode
  22. OTHER_CPPFLAGS="-Os -fembed-bitcode"
  23. OTHER_CXXFLAGS="-Os"
  24. ${LIBDIR}/autogen.sh
  25. for ARCH in $ARCHS
  26. do
  27. BUILDARCHDIR="$BUILDDIR/$ARCH"
  28. mkdir -p ${BUILDARCHDIR}
  29. case ${ARCH} in
  30. armv7)
  31. PLATFORM="iPhoneOS"
  32. HOST="${ARCH}-apple-darwin"
  33. export BASEDIR="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
  34. export ISDKROOT="${BASEDIR}/SDKs/${PLATFORM}${SDK}.sdk"
  35. export CXXFLAGS="${OTHER_CXXFLAGS}"
  36. export CPPFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} -mios-version-min=${IOS_VERSION_MIN} ${OTHER_CPPFLAGS}"
  37. export LDFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} ${OTHER_LDFLAGS}"
  38. ;;
  39. armv7s)
  40. PLATFORM="iPhoneOS"
  41. HOST="${ARCH}-apple-darwin"
  42. export BASEDIR="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
  43. export ISDKROOT="${BASEDIR}/SDKs/${PLATFORM}${SDK}.sdk"
  44. export CXXFLAGS="${OTHER_CXXFLAGS}"
  45. export CPPFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} -mios-version-min=${IOS_VERSION_MIN} ${OTHER_CPPFLAGS}"
  46. export LDFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} ${OTHER_LDFLAGS}"
  47. ;;
  48. arm64)
  49. PLATFORM="iPhoneOS"
  50. HOST="arm-apple-darwin"
  51. export BASEDIR="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
  52. export ISDKROOT="${BASEDIR}/SDKs/${PLATFORM}${SDK}.sdk"
  53. export CXXFLAGS="${OTHER_CXXFLAGS}"
  54. export CPPFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} -mios-version-min=${IOS_VERSION_MIN} ${OTHER_CPPFLAGS}"
  55. export LDFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} ${OTHER_LDFLAGS}"
  56. ;;
  57. x86_64)
  58. PLATFORM="iPhoneSimulator"
  59. HOST="${ARCH}-apple-darwin"
  60. export BASEDIR="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
  61. export ISDKROOT="${BASEDIR}/SDKs/${PLATFORM}${SDK}.sdk"
  62. export CXXFLAGS="${OTHER_CXXFLAGS}"
  63. export CPPFLAGS="-arch ${ARCH} -isysroot ${ISDKROOT} -mios-version-min=${IOS_VERSION_MIN} ${OTHER_CPPFLAGS}"
  64. export LDFLAGS="-arch ${ARCH} ${OTHER_LDFLAGS}"
  65. echo "LDFLAGS $LDFLAGS"
  66. ;;
  67. *)
  68. echo "Unsupported architecture ${ARCH}"
  69. exit 1
  70. ;;
  71. esac
  72. echo "Configuring for ${ARCH}..."
  73. set +e
  74. cd ${LIBDIR}
  75. set -e
  76. ${LIBDIR}/configure \
  77. --prefix=${BUILDARCHDIR} \
  78. --disable-shared \
  79. --enable-static \
  80. --host=${HOST}
  81. echo "Building ${LIBNAME} for ${ARCH}..."
  82. cd ${LIBDIR}
  83. make -j8
  84. make install
  85. make clean
  86. done
  87. mkdir -p ${DISTLIBDIR}
  88. for ARCH in $ARCHS
  89. do
  90. LIBPATH="$BUILDDIR/$ARCH/lib/${LIBNAME}"
  91. LIBLIST+=" -arch ${ARCH} ${LIBPATH}"
  92. done
  93. set +e
  94. ${LIPO} -create ${LIBLIST} -output ${DISTLIBDIR}/${LIBNAME}
  95. echo "Done !"