aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib/makefile/compile_ios_tensorflow.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/contrib/makefile/compile_ios_tensorflow.sh')
-rwxr-xr-xtensorflow/contrib/makefile/compile_ios_tensorflow.sh155
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