aboutsummaryrefslogtreecommitdiff
path: root/objectivec/DevTools
diff options
context:
space:
mode:
authorThomas Van Lenten <thomasvl@google.com>2015-11-04 17:26:03 -0500
committerThomas Van Lenten <thomasvl@google.com>2015-11-05 17:24:55 -0500
commitf1a3c8fe0d1832d9cd21761a101389ce5aa08863 (patch)
tree509de7d91578e1a80fac431407801078bd9274c1 /objectivec/DevTools
parent3a72a1eeafa4cd6747d0039a527caa49924aa265 (diff)
downloadprotobuf-f1a3c8fe0d1832d9cd21761a101389ce5aa08863.tar.gz
protobuf-f1a3c8fe0d1832d9cd21761a101389ce5aa08863.tar.bz2
protobuf-f1a3c8fe0d1832d9cd21761a101389ce5aa08863.zip
Tweaks to the Mac build script
- Support building with Xcode 6.4 or 7.x - Fix an error in usage info. - Add a flag to build the core parts of protobuf only.
Diffstat (limited to 'objectivec/DevTools')
-rwxr-xr-xobjectivec/DevTools/full_mac_build.sh68
1 files changed, 51 insertions, 17 deletions
diff --git a/objectivec/DevTools/full_mac_build.sh b/objectivec/DevTools/full_mac_build.sh
index ba13cf2b..71d3fa45 100755
--- a/objectivec/DevTools/full_mac_build.sh
+++ b/objectivec/DevTools/full_mac_build.sh
@@ -26,10 +26,12 @@ OPTIONS:
Issue a clean before the normal build.
-a, --autogen
Start by rerunning autogen & configure.
- -r, --regenerate-descriptors
+ -r, --regenerate-cpp-descriptors
The descriptor.proto is checked in generated, cause it to regenerate.
-j #, --jobs #
Force the number of parallel jobs (useful for debugging build issues).
+ --core-only
+ Skip some of the core protobuf build/checks to shorten the build time.
--skip-xcode
Skip the invoke of Xcode to test the runtime on both iOS and OS X.
--skip-xcode-ios
@@ -68,6 +70,7 @@ fi
DO_AUTOGEN=no
DO_CLEAN=no
REGEN_CPP_DESCRIPTORS=no
+CORE_ONLY=no
DO_XCODE_IOS_TESTS=yes
DO_XCODE_OSX_TESTS=yes
while [[ $# != 0 ]]; do
@@ -89,6 +92,9 @@ while [[ $# != 0 ]]; do
shift
NUM_MAKE_JOBS="${1}"
;;
+ --core-only )
+ CORE_ONLY=yes
+ ;;
--skip-xcode )
DO_XCODE_IOS_TESTS=no
DO_XCODE_OSX_TESTS=no
@@ -155,15 +161,20 @@ if [[ "${REGEN_CPP_DESCRIPTORS}" == "yes" ]] ; then
./generate_descriptor_proto.sh -j "${NUM_MAKE_JOBS}"
fi
-header "Building"
-# Can't issue these together, when fully parallel, something sometimes chokes
-# at random.
-wrapped_make -j "${NUM_MAKE_JOBS}" all
-wrapped_make -j "${NUM_MAKE_JOBS}" check
-# Fire off the conformance tests also.
-cd conformance
-wrapped_make -j "${NUM_MAKE_JOBS}"
-cd ..
+if [[ "${CORE_ONLY}" == "yes" ]] ; then
+ header "Building core Only"
+ wrapped_make -j "${NUM_MAKE_JOBS}"
+else
+ header "Building"
+ # Can't issue these together, when fully parallel, something sometimes chokes
+ # at random.
+ wrapped_make -j "${NUM_MAKE_JOBS}" all
+ wrapped_make -j "${NUM_MAKE_JOBS}" check
+ # Fire off the conformance tests also.
+ cd conformance
+ wrapped_make -j "${NUM_MAKE_JOBS}"
+ cd ..
+fi
header "Ensuring the ObjC descriptors are current."
# Find the newest input file (protos, compiler, and the generator script).
@@ -203,19 +214,42 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then
xcodebuild
-project objectivec/ProtocolBuffers_iOS.xcodeproj
-scheme ProtocolBuffers
- # Don't need to worry about form factors or retina/non retina;
- # just pick a mix of OS Versions and 32/64 bit.
- -destination "platform=iOS Simulator,name=iPhone 4s,OS=7.1" # 32bit
- -destination "platform=iOS Simulator,name=iPhone 6,OS=8.4" # 64bit
- -destination "platform=iOS Simulator,name=iPad 2,OS=7.1" # 32bit
- -destination "platform=iOS Simulator,name=iPad Air,OS=8.4" # 64bit
)
+ # Don't need to worry about form factors or retina/non retina;
+ # just pick a mix of OS Versions and 32/64 bit.
+ # NOTE: Different Xcode have different simulated hardware/os support.
+ readonly XCODE_VERSION_LINE="$(xcodebuild -version | grep Xcode\ )"
+ readonly XCODE_VERSION="${XCODE_VERSION_LINE/Xcode /}" # drop the prefix.
+ IOS_SIMULATOR_NAME="Simulator"
+ case "${XCODE_VERSION}" in
+ 6.* )
+ XCODEBUILD_TEST_BASE_IOS+=(
+ -destination "platform=iOS Simulator,name=iPhone 4s,OS=7.1" # 32bit
+ -destination "platform=iOS Simulator,name=iPhone 6,OS=8.4" # 64bit
+ -destination "platform=iOS Simulator,name=iPad 2,OS=7.1" # 32bit
+ -destination "platform=iOS Simulator,name=iPad Air,OS=8.4" # 64bit
+ )
+ IOS_SIMULATOR_NAME="iOS Simulator"
+ ;;
+ 7.* )
+ XCODEBUILD_TEST_BASE_IOS+=(
+ -destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
+ -destination "platform=iOS Simulator,name=iPhone 6,OS=9.0" # 64bit
+ -destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit
+ -destination "platform=iOS Simulator,name=iPad Air,OS=9.0" # 64bit
+ )
+ ;;
+ * )
+ echo "Time to update the simulator targets for Xcode ${XCODE_VERSION}"
+ exit 2
+ ;;
+ esac
header "Doing Xcode iOS build/tests - Debug"
"${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Debug test
header "Doing Xcode iOS build/tests - Release"
"${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Release test
# Don't leave the simulator in the developer's face.
- killall "iOS Simulator"
+ killall "${IOS_SIMULATOR_NAME}"
fi
if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then
XCODEBUILD_TEST_BASE_OSX=(