build_ios.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. # Automatic build script for pbc-lua
  3. ###########################################################################
  4. # Change values here
  5. #
  6. SDKVERSION=$(xcrun -sdk iphoneos --show-sdk-version);
  7. #
  8. ###########################################################################
  9. #
  10. # Don't change anything here
  11. WORKING_DIR="$(cd $(dirname $0))";
  12. cd "$WORKING_DIR";
  13. ARCHS="i386 x86_64 armv7 armv7s arm64";
  14. DEVELOPER_ROOT=$(xcode-select -print-path);
  15. ENABLE_PBC=0;
  16. # ======================= options =======================
  17. while getopts "a:d:hps:-" OPTION; do
  18. case $OPTION in
  19. a)
  20. ARCHS="$OPTARG";
  21. ;;
  22. d)
  23. DEVELOPER_ROOT="$OPTARG";
  24. ;;
  25. h)
  26. echo "usage: $0 [options] [-- [LUADIR=Lua include directory] [other make options]]";
  27. echo "options:";
  28. echo "-a [archs] which arch need to built, multiple values must be split by space(default: $ARCHS)";
  29. echo "-d [developer root directory] developer root directory, we use xcode-select -print-path to find default value.(default: $DEVELOPER_ROOT)";
  30. echo "-p integration pbc into this lib.";
  31. echo "-s [sdk version] sdk version, we use xcrun -sdk iphoneos --show-sdk-version to find default value.(default: $SDKVERSION)";
  32. echo "-h help message.";
  33. exit 0;
  34. ;;
  35. p)
  36. ENABLE_PBC=1;
  37. ;;
  38. s)
  39. SDKVERSION="$SDKVERSION";
  40. ;;
  41. -)
  42. break;
  43. ;;
  44. ?) #当有不认识的选项的时候arg为?
  45. echo "unkonw argument detected";
  46. exit 1;
  47. ;;
  48. esac
  49. done
  50. shift $(($OPTIND-1));
  51. echo "Ready to build for ios";
  52. echo "WORKING_DIR=${WORKING_DIR}";
  53. echo "ARCHS=${ARCHS}";
  54. echo "DEVELOPER_ROOT=${DEVELOPER_ROOT}";
  55. echo "SDKVERSION=${SDKVERSION}";
  56. echo "Integration pbc=${ENABLE_PBC}";
  57. echo "make options=$@";
  58. ##########
  59. cp -f Makefile Makefile.bak;
  60. perl -p -i -e "s;\\-shared;\\-c;g" Makefile;
  61. perl -p -i -e "s;\\s\\-[lL][^\\s]*; ;g" Makefile;
  62. for ARCH in ${ARCHS}; do
  63. echo "================== Compling $ARCH ==================";
  64. if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; then
  65. PLATFORM="iPhoneSimulator";
  66. else
  67. PLATFORM="iPhoneOS";
  68. fi
  69. echo "Building pbc-lua for ${PLATFORM} ${SDKVERSION} ${ARCH}" ;
  70. echo "Please stand by..."
  71. export DEVROOT="${DEVELOPER_ROOT}/Platforms/${PLATFORM}.platform/Developer";
  72. export SDKROOT="${DEVROOT}/SDKs/${PLATFORM}${SDKVERSION}.sdk";
  73. export BUILD_TOOLS="${DEVELOPER_ROOT}";
  74. #export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}";
  75. export CC=${BUILD_TOOLS}/usr/bin/gcc;
  76. #export LD=${BUILD_TOOLS}/usr/bin/ld;
  77. #export CPP=${BUILD_TOOLS}/usr/bin/cpp;
  78. #export CXX=${BUILD_TOOLS}/usr/bin/g++;
  79. export AR=${DEVELOPER_ROOT}/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar;
  80. #export AS=${DEVROOT}/usr/bin/as;
  81. #export NM=${DEVROOT}/usr/bin/nm;
  82. #export CXXCPP=${BUILD_TOOLS}/usr/bin/cpp;
  83. #export RANLIB=${BUILD_TOOLS}/usr/bin/ranlib;
  84. export LDFLAGS="-arch ${ARCH} -isysroot ${SDKROOT} ";
  85. export CFLAGS="-arch ${ARCH} -isysroot ${SDKROOT} -O2 -fPIC -Wall";
  86. make clean TARGET=libprotobuf.a;
  87. make clean TARGET=libprotobuf-$ARCH.a;
  88. make libprotobuf.a CC="$CC" CFLAGS="$CFLAGS" TARGET=libprotobuf.a $@;
  89. mv -f libprotobuf.a "libprotobuf-$ARCH.a";
  90. if [ 0 -ne $ENABLE_PBC ]; then
  91. ${AR} rc "libpbc-protobuf-$ARCH.a" "libprotobuf-$ARCH.a" ../../build/libpbc-${ARCH}.a ;
  92. fi
  93. done
  94. mv -f Makefile.bak Makefile;
  95. cd "$WORKING_DIR";
  96. echo "Linking and packaging library...";
  97. LIPO_LIBS="libprotobuf";
  98. if [ 0 -ne $ENABLE_PBC ]; then
  99. LIPO_LIBS="$LIPO_LIBS libpbc-protobuf";
  100. fi
  101. for LIB_NAME in $LIPO_LIBS; do
  102. lipo -create $LIB_NAME-*.a -output "$LIB_NAME.a";
  103. echo "$LIB_NAME.a built.";
  104. done