| #!/bin/bash |
| ############################################################################## |
| # Example command to build the iOS target. |
| ############################################################################## |
| # |
| # This script shows how one can build a Caffe2 binary for the iOS platform |
| # using ios-cmake. This is very similar to the android-cmake - see |
| # build_android.sh for more details. |
| |
| CAFFE2_ROOT="$( cd "$(dirname "$0")"/.. ; pwd -P)" |
| echo "Caffe2 codebase root is: $CAFFE2_ROOT" |
| # We are going to build the target into build_ios. |
| BUILD_ROOT=$CAFFE2_ROOT/build_ios |
| mkdir -p $BUILD_ROOT |
| echo "Build Caffe2 ios into: $BUILD_ROOT" |
| |
| # Build protobuf from third_party so we have a host protoc binary. |
| echo "Building protoc" |
| BITCODE_FLAGS="-DCMAKE_C_FLAGS=-fembed-bitcode -DCMAKE_CXX_FLAGS=-fembed-bitcode " |
| $CAFFE2_ROOT/scripts/build_host_protoc.sh --other-flags $BITCODE_FLAGS || exit 1 |
| |
| # Now, actually build the iOS target. |
| echo "Building caffe2" |
| cd $BUILD_ROOT |
| |
| if [ -z ${IOS_PLATFORM+x} ]; then |
| # IOS_PLATFORM is not set, in which case we will default to OS, which |
| # builds iOS. |
| IOS_PLATFORM=OS |
| fi |
| |
| cmake .. \ |
| -DCMAKE_TOOLCHAIN_FILE=$CAFFE2_ROOT/third_party/ios-cmake/toolchain/iOS.cmake\ |
| -DCMAKE_INSTALL_PREFIX=../install \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DIOS_PLATFORM=${IOS_PLATFORM} \ |
| -DUSE_CUDA=OFF \ |
| -DBUILD_TEST=OFF \ |
| -DBUILD_BINARY=OFF \ |
| -DCMAKE_C_FLAGS=-fembed-bitcode \ |
| -DCMAKE_CXX_FLAGS=-fembed-bitcode \ |
| -DUSE_LMDB=OFF \ |
| -DUSE_LEVELDB=OFF \ |
| -DBUILD_PYTHON=OFF \ |
| -DPROTOBUF_PROTOC_EXECUTABLE=$CAFFE2_ROOT/build_host_protoc/bin/protoc \ |
| -DCMAKE_VERBOSE_MAKEFILE=1 \ |
| -DUSE_MPI=OFF \ |
| -DBUILD_SHARED_LIBS=OFF \ |
| -DCMAKE_THREAD_LIBS_INIT=-lpthread \ |
| -DCMAKE_HAVE_THREADS_LIBRARY=1 \ |
| -DCMAKE_USE_PTHREADS_INIT=1 \ |
| $@ \ |
| || exit 1 |
| make |