diff options
Diffstat (limited to 'tensorflow/contrib/makefile/compile_ios_protobuf.sh')
-rwxr-xr-x | tensorflow/contrib/makefile/compile_ios_protobuf.sh | 369 |
1 files changed, 213 insertions, 156 deletions
diff --git a/tensorflow/contrib/makefile/compile_ios_protobuf.sh b/tensorflow/contrib/makefile/compile_ios_protobuf.sh index 4056db18a7..43e5809dd2 100755 --- a/tensorflow/contrib/makefile/compile_ios_protobuf.sh +++ b/tensorflow/contrib/makefile/compile_ios_protobuf.sh @@ -21,10 +21,28 @@ if [[ -n MACOSX_DEPLOYMENT_TARGET ]]; then export MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion) fi -SCRIPT_DIR=$(dirname $0) +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 arch i386, x86_64, armv7, armv7s, arm64" + exit 1 +} + +BUILD_TARGET="i386 x86_64 armv7 armv7s arm64" +while getopts "a:" opt_name; do + case "$opt_name" in + a) BUILD_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" -cd tensorflow/contrib/makefile +cd ${SCRIPT_DIR} HOST_GENDIR="$(pwd)/gen/protobuf-host" mkdir -p "${HOST_GENDIR}" @@ -64,6 +82,10 @@ else echo "protoc found. Skip building host tools." fi +# Remove old libs +rm -f ${LIBDIR}/libprotobuf.a +rm -f ${LIBDIR}/libprotobuf-lite.a + ./autogen.sh if [ $? -ne 0 ] then @@ -71,157 +93,192 @@ then exit 1 fi -make distclean -./configure \ ---host=i386-apple-${OSX_VERSION} \ ---disable-shared \ ---enable-cross-compile \ ---with-protoc="${PROTOC_PATH}" \ ---prefix=${LIBDIR}/iossim_386 \ ---exec-prefix=${LIBDIR}/iossim_386 \ -"CFLAGS=${CFLAGS} \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ --arch i386 \ --fembed-bitcode \ --isysroot ${IPHONESIMULATOR_SYSROOT}" \ -"CXX=${CXX}" \ -"CXXFLAGS=${CXXFLAGS} \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ --arch i386 \ --fembed-bitcode \ --isysroot \ -${IPHONESIMULATOR_SYSROOT}" \ -LDFLAGS="-arch i386 \ --fembed-bitcode \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ -${LDFLAGS} \ --L${IPHONESIMULATOR_SYSROOT}/usr/lib/ \ --L${IPHONESIMULATOR_SYSROOT}/usr/lib/system" \ -"LIBS=${LIBS}" -make -j"${JOB_COUNT}" -make install - -make distclean -./configure \ ---host=x86_64-apple-${OSX_VERSION} \ ---disable-shared \ ---enable-cross-compile \ ---with-protoc="${PROTOC_PATH}" \ ---prefix=${LIBDIR}/iossim_x86_64 \ ---exec-prefix=${LIBDIR}/iossim_x86_64 \ -"CFLAGS=${CFLAGS} \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ --arch x86_64 \ --fembed-bitcode \ --isysroot ${IPHONESIMULATOR_SYSROOT}" \ -"CXX=${CXX}" \ -"CXXFLAGS=${CXXFLAGS} \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ --arch x86_64 \ --fembed-bitcode \ --isysroot \ -${IPHONESIMULATOR_SYSROOT}" \ -LDFLAGS="-arch x86_64 \ --fembed-bitcode \ --mios-simulator-version-min=${MIN_SDK_VERSION} \ -${LDFLAGS} \ --L${IPHONESIMULATOR_SYSROOT}/usr/lib/ \ --L${IPHONESIMULATOR_SYSROOT}/usr/lib/system" \ -"LIBS=${LIBS}" -make -j"${JOB_COUNT}" -make install - -make distclean -./configure \ ---host=armv7-apple-${OSX_VERSION} \ ---with-protoc="${PROTOC_PATH}" \ ---disable-shared \ ---prefix=${LIBDIR}/ios_arm7 \ ---exec-prefix=${LIBDIR}/ios_arm7 \ -"CFLAGS=${CFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch armv7 \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -"CXX=${CXX}" \ -"CXXFLAGS=${CXXFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch armv7 \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -LDFLAGS="-arch armv7 \ --fembed-bitcode \ --miphoneos-version-min=${MIN_SDK_VERSION} \ -${LDFLAGS}" \ -"LIBS=${LIBS}" -make -j"${JOB_COUNT}" -make install - -make distclean -./configure \ ---host=armv7s-apple-${OSX_VERSION} \ ---with-protoc="${PROTOC_PATH}" \ ---disable-shared \ ---prefix=${LIBDIR}/ios_arm7s \ ---exec-prefix=${LIBDIR}/ios_arm7s \ -"CFLAGS=${CFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch armv7s \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -"CXX=${CXX}" \ -"CXXFLAGS=${CXXFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch armv7s \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -LDFLAGS="-arch armv7s \ --fembed-bitcode \ --miphoneos-version-min=${MIN_SDK_VERSION} \ -${LDFLAGS}" \ -"LIBS=${LIBS}" -make -j"${JOB_COUNT}" -make install - -make distclean -./configure \ ---host=arm \ ---with-protoc="${PROTOC_PATH}" \ ---disable-shared \ ---prefix=${LIBDIR}/ios_arm64 \ ---exec-prefix=${LIBDIR}/ios_arm64 \ -"CFLAGS=${CFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch arm64 \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -"CXXFLAGS=${CXXFLAGS} \ --miphoneos-version-min=${MIN_SDK_VERSION} \ --arch arm64 \ --fembed-bitcode \ --isysroot ${IPHONEOS_SYSROOT}" \ -LDFLAGS="-arch arm64 \ --fembed-bitcode \ --miphoneos-version-min=${MIN_SDK_VERSION} \ -${LDFLAGS}" \ -"LIBS=${LIBS}" -make -j"${JOB_COUNT}" -make install - -lipo \ -${LIBDIR}/iossim_386/lib/libprotobuf.a \ -${LIBDIR}/iossim_x86_64/lib/libprotobuf.a \ -${LIBDIR}/ios_arm7/lib/libprotobuf.a \ -${LIBDIR}/ios_arm7s/lib/libprotobuf.a \ -${LIBDIR}/ios_arm64/lib/libprotobuf.a \ --create \ --output ${LIBDIR}/libprotobuf.a - -lipo \ -${LIBDIR}/iossim_386/lib/libprotobuf-lite.a \ -${LIBDIR}/iossim_x86_64/lib/libprotobuf-lite.a \ -${LIBDIR}/ios_arm7/lib/libprotobuf-lite.a \ -${LIBDIR}/ios_arm7s/lib/libprotobuf-lite.a \ -${LIBDIR}/ios_arm64/lib/libprotobuf-lite.a \ --create \ --output ${LIBDIR}/libprotobuf-lite.a +package_pb_library() { + pb_libs="${LIBDIR}/${1}/lib/libprotobuf.a" + if [ -f "${LIBDIR}/libprotobuf.a" ]; then + pb_libs="$pb_libs ${LIBDIR}/libprotobuf.a" + fi + lipo \ + $pb_libs \ + -create \ + -output ${LIBDIR}/libprotobuf.a + + pblite_libs="${LIBDIR}/${1}/lib/libprotobuf-lite.a" + if [ -f "${LIBDIR}/libprotobuf-lite.a" ]; then + pblite_libs="$pblite_libs ${LIBDIR}/libprotobuf-lite.a" + fi + lipo \ + $pblite_libs \ + -create \ + -output ${LIBDIR}/libprotobuf-lite.a +} + +build_target() { +case "$1" in + i386) make distclean + ./configure \ + --host=i386-apple-${OSX_VERSION} \ + --disable-shared \ + --enable-cross-compile \ + --with-protoc="${PROTOC_PATH}" \ + --prefix=${LIBDIR}/iossim_386 \ + --exec-prefix=${LIBDIR}/iossim_386 \ + "CFLAGS=${CFLAGS} \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + -arch i386 \ + -fembed-bitcode \ + -isysroot ${IPHONESIMULATOR_SYSROOT}" \ + "CXX=${CXX}" \ + "CXXFLAGS=${CXXFLAGS} \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + -arch i386 \ + -fembed-bitcode \ + -isysroot \ + ${IPHONESIMULATOR_SYSROOT}" \ + LDFLAGS="-arch i386 \ + -fembed-bitcode \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + ${LDFLAGS} \ + -L${IPHONESIMULATOR_SYSROOT}/usr/lib/ \ + -L${IPHONESIMULATOR_SYSROOT}/usr/lib/system" \ + "LIBS=${LIBS}" + make -j"${JOB_COUNT}" + make install + + package_pb_library "iossim_386" + ;; + + x86_64) make distclean + ./configure \ + --host=x86_64-apple-${OSX_VERSION} \ + --disable-shared \ + --enable-cross-compile \ + --with-protoc="${PROTOC_PATH}" \ + --prefix=${LIBDIR}/iossim_x86_64 \ + --exec-prefix=${LIBDIR}/iossim_x86_64 \ + "CFLAGS=${CFLAGS} \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + -arch x86_64 \ + -fembed-bitcode \ + -isysroot ${IPHONESIMULATOR_SYSROOT}" \ + "CXX=${CXX}" \ + "CXXFLAGS=${CXXFLAGS} \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + -arch x86_64 \ + -fembed-bitcode \ + -isysroot \ + ${IPHONESIMULATOR_SYSROOT}" \ + LDFLAGS="-arch x86_64 \ + -fembed-bitcode \ + -mios-simulator-version-min=${MIN_SDK_VERSION} \ + ${LDFLAGS} \ + -L${IPHONESIMULATOR_SYSROOT}/usr/lib/ \ + -L${IPHONESIMULATOR_SYSROOT}/usr/lib/system" \ + "LIBS=${LIBS}" + make -j"${JOB_COUNT}" + make install + + package_pb_library "iossim_x86_64" + ;; + + armv7) make distclean + ./configure \ + --host=armv7-apple-${OSX_VERSION} \ + --with-protoc="${PROTOC_PATH}" \ + --disable-shared \ + --prefix=${LIBDIR}/ios_arm7 \ + --exec-prefix=${LIBDIR}/ios_arm7 \ + "CFLAGS=${CFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch armv7 \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + "CXX=${CXX}" \ + "CXXFLAGS=${CXXFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch armv7 \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + LDFLAGS="-arch armv7 \ + -fembed-bitcode \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + ${LDFLAGS}" \ + "LIBS=${LIBS}" + make -j"${JOB_COUNT}" + make install + + package_pb_library "ios_arm7" + ;; + + armv7s) make distclean + ./configure \ + --host=armv7s-apple-${OSX_VERSION} \ + --with-protoc="${PROTOC_PATH}" \ + --disable-shared \ + --prefix=${LIBDIR}/ios_arm7s \ + --exec-prefix=${LIBDIR}/ios_arm7s \ + "CFLAGS=${CFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch armv7s \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + "CXX=${CXX}" \ + "CXXFLAGS=${CXXFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch armv7s \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + LDFLAGS="-arch armv7s \ + -fembed-bitcode \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + ${LDFLAGS}" \ + "LIBS=${LIBS}" + make -j"${JOB_COUNT}" + make install + + package_pb_library "ios_arm7s" + ;; + + arm64) make distclean + ./configure \ + --host=arm \ + --with-protoc="${PROTOC_PATH}" \ + --disable-shared \ + --prefix=${LIBDIR}/ios_arm64 \ + --exec-prefix=${LIBDIR}/ios_arm64 \ + "CFLAGS=${CFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch arm64 \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + "CXXFLAGS=${CXXFLAGS} \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + -arch arm64 \ + -fembed-bitcode \ + -isysroot ${IPHONEOS_SYSROOT}" \ + LDFLAGS="-arch arm64 \ + -fembed-bitcode \ + -miphoneos-version-min=${MIN_SDK_VERSION} \ + ${LDFLAGS}" \ + "LIBS=${LIBS}" + make -j"${JOB_COUNT}" + make install + + package_pb_library "ios_arm64" + ;; + *) + echo "Unknown ARCH" + exit 1 + ;; +esac +} + +for build_element in "${build_targets[@]}" +do + echo "$build_element" + build_target "$build_element" +done + +file ${LIBDIR}/libprotobuf.a +file ${LIBDIR}/libprotobuf-lite.a +echo "Done building and packaging the libraries" |