diff options
Diffstat (limited to 'tensorflow/contrib/makefile/compile_ios_tensorflow.sh')
-rwxr-xr-x | tensorflow/contrib/makefile/compile_ios_tensorflow.sh | 155 |
1 files changed, 112 insertions, 43 deletions
diff --git a/tensorflow/contrib/makefile/compile_ios_tensorflow.sh b/tensorflow/contrib/makefile/compile_ios_tensorflow.sh index 5d1cc8b375..ae82163e11 100755 --- a/tensorflow/contrib/makefile/compile_ios_tensorflow.sh +++ b/tensorflow/contrib/makefile/compile_ios_tensorflow.sh @@ -43,55 +43,124 @@ then exit 1 fi +usage() { + echo "Usage: $(basename "$0") [-a]" + echo "-a [build_arch] build for specified arch comma separate for multiple archs (eg: x86_64,arm64)" + echo "default is [i386, x86_64, armv7, armv7s, arm64]" + exit 1 +} + +BUILD_TARGET="i386 x86_64 armv7 armv7s arm64" +while getopts "a:f:h:n:" opt_name; do + case "$opt_name" in + a) BUILD_TARGET="${OPTARG}";; + f) BUILD_OPT="${OPTARG}";; + h) NSYNC_HOST="${OPTARG}";; + n) NSYNC_TARGET="${OPTARG}";; + *) usage;; + esac +done +shift $((OPTIND - 1)) + +IFS=' ' read -r -a build_targets <<< "${BUILD_TARGET}" + +SCRIPT_DIR=$(cd `dirname $0` && pwd) +source "${SCRIPT_DIR}/build_helper.subr" + + GENDIR=tensorflow/contrib/makefile/gen/ LIBDIR=${GENDIR}lib LIB_PREFIX=libtensorflow-core -make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ -TARGET=IOS IOS_ARCH=ARMV7 LIB_NAME=${LIB_PREFIX}-armv7.a OPTFLAGS="$1" -if [ $? -ne 0 ] -then - echo "armv7 compilation failed." - exit 1 -fi +#remove any old artifacts +rm -rf ${LIBDIR}/${LIB_PREFIX}.a -make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ -TARGET=IOS IOS_ARCH=ARMV7S LIB_NAME=${LIB_PREFIX}-armv7s.a OPTFLAGS="$1" -if [ $? -ne 0 ] -then - echo "arm7vs compilation failed." - exit 1 -fi +package_tf_library() { + CAP_DIR=`echo $1 | tr 'a-z' 'A-Z'` + tf_libs="${LIBDIR}/ios_${CAP_DIR}/${LIB_PREFIX}-${1}.a" + if [ -f "${LIBDIR}/${LIB_PREFIX}.a" ]; then + tf_libs="$tf_libs ${LIBDIR}/${LIB_PREFIX}.a" + fi + lipo \ + $tf_libs \ + -create \ + -output ${LIBDIR}/${LIB_PREFIX}.a +} -make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ -TARGET=IOS IOS_ARCH=ARM64 LIB_NAME=${LIB_PREFIX}-arm64.a OPTFLAGS="$1" -if [ $? -ne 0 ] -then - echo "arm64 compilation failed." - exit 1 -fi +build_tf_target() { +case "$1" in + armv7) + make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ + TARGET=IOS IOS_ARCH=ARMV7 LIB_NAME=${LIB_PREFIX}-armv7.a \ + OPTFLAGS="${BUILD_OPT}" HOST_NSYNC_LIB="${NSYNC_HOST}" \ + TARGET_NSYNC_LIB="${NSYNC_TARGET}" + if [ $? -ne 0 ] + then + echo "armv7 compilation failed." + exit 1 + fi + package_tf_library "armv7" + ;; + armv7s) + make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ + TARGET=IOS IOS_ARCH=ARMV7S LIB_NAME=${LIB_PREFIX}-armv7s.a \ + OPTFLAGS="${BUILD_OPT}" HOST_NSYNC_LIB="${NSYNC_HOST}" \ + TARGET_NSYNC_LIB="${NSYNC_TARGET}" -make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ -TARGET=IOS IOS_ARCH=I386 LIB_NAME=${LIB_PREFIX}-i386.a OPTFLAGS="$1" -if [ $? -ne 0 ] -then - echo "i386 compilation failed." - exit 1 -fi + if [ $? -ne 0 ] + then + echo "arm7vs compilation failed." + exit 1 + fi + package_tf_library "armv7s" + ;; + arm64) + make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ + TARGET=IOS IOS_ARCH=ARM64 LIB_NAME=${LIB_PREFIX}-arm64.a \ + OPTFLAGS="${BUILD_OPT}" HOST_NSYNC_LIB="${NSYNC_HOST}" \ + TARGET_NSYNC_LIB="${NSYNC_TARGET}" + if [ $? -ne 0 ] + then + echo "arm64 compilation failed." + exit 1 + fi + package_tf_library "arm64" + ;; + i386) + make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ + TARGET=IOS IOS_ARCH=I386 LIB_NAME=${LIB_PREFIX}-i386.a \ + OPTFLAGS="${BUILD_OPT}" HOST_NSYNC_LIB="${NSYNC_HOST}" \ + TARGET_NSYNC_LIB="${NSYNC_TARGET}" + if [ $? -ne 0 ] + then + echo "i386 compilation failed." + exit 1 + fi + package_tf_library "i386" + ;; + x86_64) + make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ + TARGET=IOS IOS_ARCH=X86_64 LIB_NAME=${LIB_PREFIX}-x86_64.a \ + OPTFLAGS="${BUILD_OPT}" HOST_NSYNC_LIB="${NSYNC_HOST}" \ + TARGET_NSYNC_LIB="${NSYNC_TARGET}" + if [ $? -ne 0 ] + then + echo "x86_64 compilation failed." + exit 1 + fi + package_tf_library "x86_64" + ;; + *) + echo "Unknown ARCH" + exit 1 +esac +} -make -j"${JOB_COUNT}" -f tensorflow/contrib/makefile/Makefile \ -TARGET=IOS IOS_ARCH=X86_64 LIB_NAME=${LIB_PREFIX}-x86_64.a OPTFLAGS="$1" -if [ $? -ne 0 ] -then - echo "x86_64 compilation failed." - exit 1 -fi +for build_tf_element in "${build_targets[@]}" +do + echo "$build_tf_element" + build_tf_target "$build_tf_element" +done -lipo \ -${LIBDIR}/ios_ARMV7/${LIB_PREFIX}-armv7.a \ -${LIBDIR}/ios_ARMV7S/${LIB_PREFIX}-armv7s.a \ -${LIBDIR}/ios_ARM64/${LIB_PREFIX}-arm64.a \ -${LIBDIR}/ios_I386/${LIB_PREFIX}-i386.a \ -${LIBDIR}/ios_X86_64/${LIB_PREFIX}-x86_64.a \ --create \ --output ${LIBDIR}/${LIB_PREFIX}.a +echo "Done building and packaging TF" +file ${LIBDIR}/${LIB_PREFIX}.a |