2016-02-24 16:56:39 +01:00

186 lines
5.9 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright 2010-present Facebook.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This script builds the FacebookSDK.framework that is distributed at
# https://github.com/facebook/facebook-ios-sdk/downloads/FacebookSDK.framework.tgz
. ${FB_SDK_SCRIPT:-$(dirname $0)}/common.sh
# process options, valid arguments -c [Debug|Release] -n
BUILDCONFIGURATION=Debug
NOEXTRAS=1
while getopts ":ntc:" OPTNAME
do
case "$OPTNAME" in
"c")
BUILDCONFIGURATION=$OPTARG
;;
"n")
NOEXTRAS=1
;;
"t")
NOEXTRAS=0
;;
"?")
echo "$0 -c [Debug|Release] -n"
echo " -c sets configuration (default=Debug)"
echo " -n no test run (default)"
echo " -t test run"
die
;;
":")
echo "Missing argument value for option $OPTARG"
die
;;
*)
# Should not occur
echo "Unknown error while processing options"
die
;;
esac
done
test -x "$XCODEBUILD" || die 'Could not find xcodebuild in $PATH'
test -x "$LIPO" || die 'Could not find lipo in $PATH'
FB_SDK_UNIVERSAL_BINARY=$FB_SDK_BUILD/${BUILDCONFIGURATION}-universal/$FB_SDK_BINARY_NAME
# -----------------------------------------------------------------------------
progress_message Building Framework.
# -----------------------------------------------------------------------------
# Compile binaries
#
test -d $FB_SDK_BUILD \
|| mkdir -p $FB_SDK_BUILD \
|| die "Could not create directory $FB_SDK_BUILD"
cd $FB_SDK_SRC
function xcode_build_target() {
echo "Compiling for platform: ${1}."
$XCODEBUILD \
RUN_CLANG_STATIC_ANALYZER=NO \
-target "facebook-ios-sdk" \
-sdk $1 \
-configuration "${2}" \
SYMROOT=$FB_SDK_BUILD \
CURRENT_PROJECT_VERSION=$FB_SDK_VERSION_FULL \
clean build \
|| die "XCode build failed for platform: ${1}."
}
xcode_build_target "iphonesimulator" "${BUILDCONFIGURATION}"
xcode_build_target "iphoneos" "${BUILDCONFIGURATION}"
xcode_build_target "iphonesimulator" "${BUILDCONFIGURATION}64"
xcode_build_target "iphoneos" "${BUILDCONFIGURATION}64"
# -----------------------------------------------------------------------------
# Merge lib files for different platforms into universal binary
#
progress_message "Building $FB_SDK_BINARY_NAME library using lipo."
mkdir -p $(dirname $FB_SDK_UNIVERSAL_BINARY)
$LIPO \
-create \
$FB_SDK_BUILD/${BUILDCONFIGURATION}-iphonesimulator/libfacebook_ios_sdk.a \
$FB_SDK_BUILD/${BUILDCONFIGURATION}-iphoneos/libfacebook_ios_sdk.a \
$FB_SDK_BUILD/${BUILDCONFIGURATION}64-iphonesimulator/libfacebook_ios_sdk.a \
$FB_SDK_BUILD/${BUILDCONFIGURATION}64-iphoneos/libfacebook_ios_sdk.a \
-output $FB_SDK_UNIVERSAL_BINARY \
|| die "lipo failed - could not create universal static library"
# -----------------------------------------------------------------------------
# Build .framework out of binaries
#
progress_message "Building $FB_SDK_FRAMEWORK_NAME."
\rm -rf $FB_SDK_FRAMEWORK
mkdir $FB_SDK_FRAMEWORK \
|| die "Could not create directory $FB_SDK_FRAMEWORK"
mkdir $FB_SDK_FRAMEWORK/Versions
mkdir $FB_SDK_FRAMEWORK/Versions/A
mkdir $FB_SDK_FRAMEWORK/Versions/A/Headers
mkdir $FB_SDK_FRAMEWORK/Versions/A/DeprecatedHeaders
mkdir $FB_SDK_FRAMEWORK/Versions/A/Resources
\cp \
$FB_SDK_BUILD/${BUILDCONFIGURATION}-iphoneos/facebook-ios-sdk/*.h \
$FB_SDK_FRAMEWORK/Versions/A/Headers \
|| die "Error building framework while copying SDK headers"
\cp \
$FB_SDK_BUILD/${BUILDCONFIGURATION}-iphoneos/facebook-ios-sdk/*.h \
$FB_SDK_FRAMEWORK/Versions/A/DeprecatedHeaders \
|| die "Error building framework while copying SDK headers to deprecated folder"
for HEADER in FBConnect.h \
FBDialog.h \
FBFrictionlessRequestSettings.h \
FBLoginDialog.h \
Facebook.h \
FBRequest.h \
FBSessionManualTokenCachingStrategy.h
do
\cp \
$FB_SDK_SRC/$HEADER \
$FB_SDK_FRAMEWORK/Versions/A/DeprecatedHeaders \
|| die "Error building framework while copying deprecated SDK headers"
done
\cp \
$FB_SDK_SRC/Framework/Resources/* \
$FB_SDK_FRAMEWORK/Versions/A/Resources \
|| die "Error building framework while copying Resources"
\cp -r \
$FB_SDK_SRC/*.bundle \
$FB_SDK_FRAMEWORK/Versions/A/Resources \
|| die "Error building framework while copying bundle to Resources"
\cp -r \
$FB_SDK_SRC/*.bundle.README \
$FB_SDK_FRAMEWORK/Versions/A/Resources \
|| die "Error building framework while copying README to Resources"
\cp \
$FB_SDK_UNIVERSAL_BINARY \
$FB_SDK_FRAMEWORK/Versions/A/FacebookSDK \
|| die "Error building framework while copying FacebookSDK"
# Current directory matters to ln.
cd $FB_SDK_FRAMEWORK
ln -s ./Versions/A/Headers ./Headers
ln -s ./Versions/A/Resources ./Resources
ln -s ./Versions/A/FacebookSDK ./FacebookSDK
cd $FB_SDK_FRAMEWORK/Versions
ln -s ./A ./Current
# -----------------------------------------------------------------------------
# Run unit tests
#
if [ ${NOEXTRAS:-0} -eq 1 ];then
progress_message "Skipping unit tests."
else
progress_message "Running unit tests."
cd $FB_SDK_SRC
$FB_SDK_SCRIPT/run_tests.sh -c $BUILDCONFIGURATION facebook-ios-sdk-tests
fi
# -----------------------------------------------------------------------------
# Done
#
progress_message "Framework version info:" `perl -ne 'print "$1 " if (m/FB_IOS_SDK_MIGRATION_BUNDLE @(.+)$/ || m/FB_IOS_SDK_VERSION_STRING @(.+)$/);' $FB_SDK_SRC/FBSDKVersion.h $FB_SDK_SRC/FacebookSDK.h`
common_success