summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rw-r--r--ios/framework/Info.plist2
-rwxr-xr-xplatform/ios/scripts/package.sh229
-rwxr-xr-xplatform/ios/scripts/run.sh14
4 files changed, 155 insertions, 97 deletions
diff --git a/Makefile b/Makefile
index c0d72ed04f..f2d13785c9 100644
--- a/Makefile
+++ b/Makefile
@@ -49,9 +49,10 @@ ibench: export XCODEBUILD_ARGS += -sdk iphoneos ARCHS="arm64"
ibench: ; $(RUN) HOST=ios Xcode/ios-bench
.PHONY: ipackage ipackage-strip ipackage-sim itest
-ipackage: Xcode/ios ; @JOBS=$(JOBS) ./platform/ios/scripts/package.sh
-ipackage-strip: Xcode/ios ; @JOBS=$(JOBS) ./platform/ios/scripts/package.sh strip
-ipackage-sim: Xcode/ios ; @JOBS=$(JOBS) ./platform/ios/scripts/package.sh sim
+ipackage: Xcode/ios ; @JOBS=$(JOBS) BITCODE=$(BITCODE) FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) ./platform/ios/scripts/package.sh
+ipackage-strip: Xcode/ios ; @JOBS=$(JOBS) BITCODE=$(BITCODE) FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=NO ./platform/ios/scripts/package.sh
+ipackage-sim: Xcode/ios ; @JOBS=$(JOBS) BUILDTYPE=Debug BITCODE=$(BITCODE) FORMAT=dynamic BUILD_DEVICE=false SYMBOLS=$(SYMBOLS) ./platform/ios/scripts/package.sh
+iframework: Xcode/ios ; @JOBS=$(JOBS) BITCODE=$(BITCODE) FORMAT=dynamic BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) ./platform/ios/scripts/package.sh
itest: ipackage-sim ; ./platform/ios/scripts/test.sh
.PHONY: xpackage xpackage-strip xctest
diff --git a/ios/framework/Info.plist b/ios/framework/Info.plist
index 7cb6e1dfd3..3bf250da27 100644
--- a/ios/framework/Info.plist
+++ b/ios/framework/Info.plist
@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
- <string>0</string>
+ <string>0.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh
index 0fda64da89..b46fb479bc 100755
--- a/platform/ios/scripts/package.sh
+++ b/platform/ios/scripts/package.sh
@@ -8,18 +8,17 @@ NAME=Mapbox
OUTPUT=build/ios/pkg
LIBUV_VERSION=1.7.5
-if [[ ${#} -eq 0 ]]; then # e.g. "make ipackage"
- BUILDTYPE="Release"
- BUILD_FOR_DEVICE=true
- GCC_GENERATE_DEBUGGING_SYMBOLS="YES"
-elif [[ ${1} == "sim" ]]; then # e.g. "make ipackage-sim"
- BUILDTYPE="Debug"
- BUILD_FOR_DEVICE=false
- GCC_GENERATE_DEBUGGING_SYMBOLS="YES"
-else # e.g. "make ipackage-strip"
- BUILDTYPE="Release"
- BUILD_FOR_DEVICE=true
- GCC_GENERATE_DEBUGGING_SYMBOLS="NO"
+BUILDTYPE=${BUILDTYPE:-Release}
+BUILD_FOR_DEVICE=${BUILD_DEVICE:-true}
+ENABLE_BITCODE=${BITCODE:-YES}
+GCC_GENERATE_DEBUGGING_SYMBOLS=${SYMBOLS:-YES}
+
+BUILD_DYNAMIC=true
+BUILD_STATIC=true
+if [[ ${FORMAT} == "static" ]]; then
+ BUILD_DYNAMIC=false
+elif [[ ${FORMAT} == "dynamic" ]]; then
+ BUILD_STATIC=false
fi
SDK=iphonesimulator
@@ -28,14 +27,20 @@ if [[ ${BUILD_FOR_DEVICE} == true ]]; then
fi
IOS_SDK_VERSION=`xcrun --sdk ${SDK} --show-sdk-version`
+echo "Configuring ${FORMAT:-dynamic and static} ${BUILDTYPE} framework for ${SDK}; symbols: ${GCC_GENERATE_DEBUGGING_SYMBOLS}; Bitcode: ${ENABLE_BITCODE}"
+
function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
function finish { >&2 echo -en "\033[0m"; }
trap finish EXIT
rm -rf ${OUTPUT}
-mkdir -p "${OUTPUT}"/static
-mkdir -p "${OUTPUT}"/dynamic
+if [[ ${BUILD_STATIC} == true ]]; then
+ mkdir -p "${OUTPUT}"/static
+fi
+if [[ ${BUILD_DYNAMIC} == true ]]; then
+ mkdir -p "${OUTPUT}"/dynamic
+fi
step "Recording library version…"
@@ -53,119 +58,157 @@ export BUILDTYPE=${BUILDTYPE:-Release}
export HOST=ios
make Xcode/ios
-PROJ_VERSION=${TRAVIS_JOB_NUMBER:-${BITRISE_BUILD_NUMBER:-0}}
+PROJ_VERSION=$(git rev-list --count HEAD)
if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
- step "Building intermediate static libraries for iOS devices (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
- ARCHS="arm64 armv7 armv7s" \
+ if [[ ${BUILD_STATIC} == true ]]; then
+ step "Building intermediate static libraries for iOS devices (build ${PROJ_VERSION})…"
+ xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
+ ARCHS="arm64 armv7 armv7s" \
+ ONLY_ACTIVE_ARCH=NO \
+ GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
+ ENABLE_BITCODE=${ENABLE_BITCODE} \
+ DEPLOYMENT_POSTPROCESSING=YES \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGN_IDENTITY= \
+ -project ./build/ios-all/gyp/mbgl.xcodeproj \
+ -configuration ${BUILDTYPE} \
+ -target everything \
+ -jobs ${JOBS}
+ fi
+
+ if [[ ${BUILD_DYNAMIC} == true ]]; then
+ step "Building dynamic framework for iOS devices (build ${PROJ_VERSION})…"
+ xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
+ ARCHS="arm64 armv7 armv7s" \
+ ONLY_ACTIVE_ARCH=NO \
+ GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
+ ENABLE_BITCODE=${ENABLE_BITCODE} \
+ DEPLOYMENT_POSTPROCESSING=YES \
+ CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGN_IDENTITY= \
+ -project ./build/ios-all/gyp/ios.xcodeproj \
+ -configuration ${BUILDTYPE} \
+ -target iossdk \
+ -jobs ${JOBS}
+ fi
+fi
+
+if [[ ${BUILD_STATIC} == true ]]; then
+ step "Building intermediate static libraries for iOS Simulator (build ${PROJ_VERSION})…"
+ xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
+ ARCHS="x86_64 i386" \
ONLY_ACTIVE_ARCH=NO \
GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=NO \
- DEPLOYMENT_POSTPROCESSING=YES \
-project ./build/ios-all/gyp/mbgl.xcodeproj \
-configuration ${BUILDTYPE} \
-target everything \
-jobs ${JOBS}
-
- step "Building dynamic framework for iOS devices (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
- ARCHS="arm64 armv7 armv7s" \
+fi
+
+if [[ ${BUILD_DYNAMIC} == true ]]; then
+ step "Building dynamic framework for iOS Simulator (build ${PROJ_VERSION})…"
+ xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
+ ARCHS="x86_64 i386" \
ONLY_ACTIVE_ARCH=NO \
GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=YES \
- DEPLOYMENT_POSTPROCESSING=YES \
+ ENABLE_BITCODE=${ENABLE_BITCODE} \
CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CODE_SIGNING_REQUIRED=NO \
- CODE_SIGN_IDENTITY= \
-project ./build/ios-all/gyp/ios.xcodeproj \
-configuration ${BUILDTYPE} \
-target iossdk \
-jobs ${JOBS}
fi
-step "Building intermediate static libraries for iOS Simulator (build ${PROJ_VERSION})…"
-xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
- ARCHS="x86_64 i386" \
- ONLY_ACTIVE_ARCH=NO \
- GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- -project ./build/ios-all/gyp/mbgl.xcodeproj \
- -configuration ${BUILDTYPE} \
- -target everything \
- -jobs ${JOBS}
-
-step "Building dynamic framework for iOS Simulator (build ${PROJ_VERSION})…"
-xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
- ARCHS="x86_64 i386" \
- ONLY_ACTIVE_ARCH=NO \
- GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=YES \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- -project ./build/ios-all/gyp/ios.xcodeproj \
- -configuration ${BUILDTYPE} \
- -target iossdk \
- -jobs ${JOBS}
-
LIBS=(core.a platform-ios.a asset-fs.a http-nsurl.a)
# https://medium.com/@syshen/create-an-ios-universal-framework-148eb130a46c
if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
- step "Assembling static framework for iOS Simulator and devices…"
- mkdir -p ${OUTPUT}/static/${NAME}.framework
- libtool -static -no_warning_for_no_symbols \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
- -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphoneos/libmbgl-} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
-
- step "Copying dynamic framework into place for iOS devices"
- cp -r \
- gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework \
- ${OUTPUT}/dynamic/
+ if [[ ${BUILD_STATIC} == true ]]; then
+ step "Assembling static framework for iOS Simulator and devices…"
+ mkdir -p ${OUTPUT}/static/${NAME}.framework
+ libtool -static -no_warning_for_no_symbols \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
+ -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
+ ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphoneos/libmbgl-} \
+ ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
+ fi
- step "Merging simulator dynamic library into device dynamic library…"
- lipo \
- gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework/${NAME} \
- gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework/${NAME} \
- -create -output ${OUTPUT}/dynamic/${NAME}.framework/${NAME} | echo
+ if [[ ${BUILD_DYNAMIC} == true ]]; then
+ step "Copying dynamic framework into place for iOS devices"
+ cp -r \
+ gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework \
+ ${OUTPUT}/dynamic/
+
+ step "Merging simulator dynamic library into device dynamic library…"
+ lipo \
+ gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework/${NAME} \
+ gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework/${NAME} \
+ -create -output ${OUTPUT}/dynamic/${NAME}.framework/${NAME} | echo
+ fi
else
- step "Assembling static library for iOS Simulator…"
- mkdir -p ${OUTPUT}/static/${NAME}.framework
- libtool -static -no_warning_for_no_symbols \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
- -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
+ if [[ ${BUILD_STATIC} == true ]]; then
+ step "Assembling static library for iOS Simulator…"
+ mkdir -p ${OUTPUT}/static/${NAME}.framework
+ libtool -static -no_warning_for_no_symbols \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
+ -o ${OUTPUT}/static/${NAME}.framework/${NAME} \
+ ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
+ fi
- step "Copying dynamic framework into place for iOS Simulator…"
- cp -r \
- gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework \
- ${OUTPUT}/dynamic/${NAME}.framework
+ if [[ ${BUILD_DYNAMIC} == true ]]; then
+ step "Copying dynamic framework into place for iOS Simulator…"
+ cp -r \
+ gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework \
+ ${OUTPUT}/dynamic/${NAME}.framework
+ fi
fi
if [[ "${GCC_GENERATE_DEBUGGING_SYMBOLS}" == false ]]; then
step "Stripping binaries…"
- strip -Sx "${OUTPUT}/static/${NAME}.framework/${NAME}"
- strip -Sx "${OUTPUT}/dynamic/${NAME}.framework/${NAME}"
+ if [[ ${BUILD_STATIC} == true ]]; then
+ strip -Sx "${OUTPUT}/static/${NAME}.framework/${NAME}"
+ fi
+ if [[ ${BUILD_DYNAMIC} == true ]]; then
+ strip -Sx "${OUTPUT}/dynamic/${NAME}.framework/${NAME}"
+ fi
fi
-stat "${OUTPUT}/static/${NAME}.framework"
-stat "${OUTPUT}/dynamic/${NAME}.framework"
+if [[ ${BUILD_STATIC} == true ]]; then
+ stat "${OUTPUT}/static/${NAME}.framework"
+fi
+if [[ ${BUILD_DYNAMIC} == true ]]; then
+ stat "${OUTPUT}/dynamic/${NAME}.framework"
+fi
-step "Copying static library headers…"
-mkdir -p "${OUTPUT}/static/${NAME}.framework/Headers"
-cp -pv include/mbgl/{darwin,ios}/*.h "${OUTPUT}/static/${NAME}.framework/Headers"
+if [[ ${BUILD_STATIC} == true ]]; then
+ step "Copying static library headers…"
+ mkdir -p "${OUTPUT}/static/${NAME}.framework/Headers"
+ cp -pv include/mbgl/{darwin,ios}/*.h "${OUTPUT}/static/${NAME}.framework/Headers"
+fi
step "Copying library resources…"
+SHORT_VERSION=$( git tag -l ios-v* | sed 's/^ios-v//' | sort -r | sed -n '1p' )
cp -pv LICENSE.md "${OUTPUT}"
cp -rv ios/app/Settings.bundle "${OUTPUT}"
-cp -pv platform/ios/resources/* "${OUTPUT}/static/${NAME}.framework"
-cp -pv ios/framework/Info.plist "${OUTPUT}/static/${NAME}.framework/Info.plist"
-perl -pi -e "s/(?<=<string>)0(?=<\/string>)/${PROJ_VERSION}/g" "${OUTPUT}/static/${NAME}.framework/Info.plist"
-mkdir "${OUTPUT}/static/${NAME}.framework/Modules"
-cp -pv ios/framework/modulemap "${OUTPUT}/static/${NAME}.framework/Modules/module.modulemap"
-cp -pv ios/framework/strip-frameworks.sh "${OUTPUT}/dynamic/${NAME}.framework/strip-frameworks.sh"
+if [[ ${BUILD_STATIC} == true ]]; then
+ cp -pv platform/ios/resources/* "${OUTPUT}/static/${NAME}.framework"
+ cp -pv ios/framework/Info.plist "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundleExecutable -string ${NAME} "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundleIdentifier -string com.mapbox.sdk.ios "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundleName -string ${NAME} "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundleShortVersionString -string "${SHORT_VERSION}" "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundleVersion -string ${PROJ_VERSION} "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ mkdir "${OUTPUT}/static/${NAME}.framework/Modules"
+ cp -pv ios/framework/modulemap "${OUTPUT}/static/${NAME}.framework/Modules/module.modulemap"
+fi
+if [[ ${BUILD_DYNAMIC} == true ]]; then
+ plutil -replace CFBundleShortVersionString -string "${SHORT_VERSION}" "${OUTPUT}/dynamic/${NAME}.framework/Info.plist"
+ cp -pv ios/framework/strip-frameworks.sh "${OUTPUT}/dynamic/${NAME}.framework/strip-frameworks.sh"
+fi
step "Generating API documentation…"
if [ -z `which jazzy` ]; then
@@ -177,7 +220,7 @@ if [ -z `which jazzy` ]; then
fi
fi
DOCS_OUTPUT="${OUTPUT}/documentation"
-DOCS_VERSION=$( git tag | grep ^ios | sed 's/^ios-//' | sort -r | grep -v '\-rc.' | grep -v '\-pre.' | sed -n '1p' | sed 's/^v//' )
+DOCS_VERSION=$( git tag -l ios-v* | sed 's/^ios-//' | sort -r | grep -v '\-rc.' | grep -v '\-pre.' | sed -n '1p' | sed 's/^v//' )
rm -rf /tmp/mbgl
mkdir -p /tmp/mbgl/
README=/tmp/mbgl/README.md
diff --git a/platform/ios/scripts/run.sh b/platform/ios/scripts/run.sh
index 02699f29b6..44c21e7562 100755
--- a/platform/ios/scripts/run.sh
+++ b/platform/ios/scripts/run.sh
@@ -31,6 +31,20 @@ if [[ ${PUBLISH_PLATFORM} = 'ios' ]]; then
mapbox_time "deploy_ios_stripped"
./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}"
+
+ # dynamic, with debug symbols
+ mapbox_time "package_ios_dynamic" \
+ make iframework
+
+ mapbox_time "deploy_ios_dynamic"
+ ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" symbols-dynamic
+
+ # dynamic, without debug symbols
+ mapbox_time "package_ios_dynamic_stripped" \
+ make iframework SYMBOLS=NO
+
+ mapbox_time "deploy_ios_dynamic_stripped"
+ ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" dynamic
else
# build & test iOS
mapbox_time "run_ios_tests" \