You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
3.2 KiB

  1. #!/bin/bash
  2. #
  3. # Written and maintained by the.arul@gmail.com (2014)
  4. #
  5. BUILD_DIR="./lib/iOS"
  6. IOS_SDK_VERSION=7.1
  7. IOS_SDK_TARGET=6.0
  8. #(iPhoneOS iPhoneSimulator) -- determined from arch
  9. IOS_SDK_DEVICE=
  10. XCODE_ROOT_DIR=/Applications/Xcode.app/Contents
  11. TOOLCHAIN=$XCODE_ROOT_DIR//Developer/Toolchains/XcodeDefault.xctoolchain
  12. BUILD_ARCHS_DEVICE="armv7 armv7s arm64"
  13. BUILD_ARCHS_SIMULATOR="i386 x86_64"
  14. BUILD_ARCHS_ALL=(armv7 armv7s arm64 i386 x86_64)
  15. CPP_DEV_TARGET_LIST=(miphoneos-version-min mios-simulator-version-min)
  16. CPP_DEV_TARGET=
  17. CPP_STD_LIB_LIST=(libc++ libstdc++)
  18. CPP_STD_LIB=
  19. function join { local IFS="$1"; shift; echo "$*"; }
  20. build_arch()
  21. {
  22. IOS_SDK_DEVICE=iPhoneOS
  23. CPP_DEV_TARGET=${CPP_DEV_TARGET_LIST[0]}
  24. if [[ "$BUILD_ARCHS_SIMULATOR" =~ "$1" ]]
  25. then
  26. echo '[!] Target SDK set to SIMULATOR.'
  27. IOS_SDK_DEVICE=iPhoneSimulator
  28. CPP_DEV_TARGET=${CPP_DEV_TARGET_LIST[1]}
  29. else
  30. echo '[!] Target SDK set to DEVICE.'
  31. fi
  32. unset DEVROOT SDKROOT CFLAGS LDFLAGS CPPFLAGS CXXFLAGS
  33. export DEVROOT=$XCODE_ROOT_DIR/Developer/Platforms/$IOS_SDK_DEVICE.platform/Developer
  34. export SDKROOT=$DEVROOT/SDKs/$IOS_SDK_DEVICE$IOS_SDK_VERSION.sdk
  35. export CFLAGS="-arch $1 -pipe -no-cpp-precomp -stdlib=$CPP_STD_LIB -isysroot $SDKROOT -$CPP_DEV_TARGET=$IOS_SDK_TARGET -I$SDKROOT/usr/include/"
  36. export LDFLAGS="-L$SDKROOT/usr/lib/"
  37. export CPPFLAGS=$CFLAGS
  38. export CXXFLAGS=$CFLAGS
  39. rm CMakeCache.txt
  40. cmake -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_$(echo $1 | tr '[:lower:]' '[:upper:]')_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DASSIMP_BUILD_STATIC_LIB=ON
  41. echo "[!] Building $1 library"
  42. $XCODE_ROOT_DIR/Developer/usr/bin/make clean
  43. $XCODE_ROOT_DIR/Developer/usr/bin/make assimp -j 8 -l
  44. echo "[!] Moving built library into: $BUILD_DIR/$1/"
  45. mv ./lib/libassimp.a $BUILD_DIR/$1/
  46. }
  47. echo "[!] $0 - assimp iOS build script"
  48. CPP_STD_LIB=${CPP_STD_LIB_LIST[0]}
  49. DEPLOY_ARCHS=${BUILD_ARCHS_ALL[*]}
  50. DEPLOY_FAT=1
  51. for i in "$@"; do
  52. case $i in
  53. -l=*|--stdlib=*)
  54. CPP_STD_LIB=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
  55. echo "[!] Selecting c++ std lib: $CPP_STD_LIB"
  56. ;;
  57. -a=*|--archs=*)
  58. DEPLOY_ARCHS=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
  59. echo "[!] Selecting architectures: $DEPLOY_ARCHS"
  60. ;;
  61. -n|--no-fat)
  62. DEPLOY_FAT=0
  63. echo "[!] Fat binary will not be created."
  64. ;;
  65. -h|--help)
  66. echo " - don't build fat library (--no-fat)."
  67. echo " - supported architectures (--archs): $(echo $(join , ${BUILD_ARCHS_ALL[*]}) | sed 's/,/, /g')"
  68. echo " - supported C++ STD libs. (--stdlib): $(echo $(join , ${CPP_STD_LIB_LIST[*]}) | sed 's/,/, /g')"
  69. exit
  70. ;;
  71. *)
  72. ;;
  73. esac
  74. done
  75. cd ../../
  76. rm -rf $BUILD_DIR
  77. for ARCH_TARGET in $DEPLOY_ARCHS; do
  78. mkdir -p $BUILD_DIR/$ARCH_TARGET
  79. build_arch $ARCH_TARGET
  80. #rm ./lib/libassimp.a
  81. done
  82. if [[ "$DEPLOY_FAT" -eq 1 ]]; then
  83. echo '[+] Creating fat binary ...'
  84. for ARCH_TARGET in $DEPLOY_ARCHS; do
  85. LIPO_ARGS="$LIPO_ARGS-arch $ARCH_TARGET $BUILD_DIR/$ARCH_TARGET/libassimp.a "
  86. done
  87. LIPO_ARGS="$LIPO_ARGS-create -output $BUILD_DIR/libassimp-fat.a"
  88. lipo $LIPO_ARGS
  89. echo "[!] Done! The fat binary can be found at $BUILD_DIR"
  90. fi