46 lines
1.5 KiB
Bash
Executable File
46 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script gets executed from Xcode to fixup the embedded frameworks and
|
|
# bundle the necessary architectures.
|
|
|
|
|
|
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
|
|
|
|
# This script loops through the frameworks embedded in the application and
|
|
# removes unused architectures.
|
|
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
|
|
do
|
|
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
|
|
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
|
|
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
|
|
|
|
EXTRACTED_ARCHS=()
|
|
|
|
for ARCH in $ARCHS
|
|
do
|
|
if lipo -info "$FRAMEWORK_EXECUTABLE_PATH" | grep -q -v "^Non-fat"
|
|
then
|
|
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
|
|
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
|
|
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
|
|
fi
|
|
done
|
|
|
|
if [ -n "$EXTRACTED_ARCHS" ]
|
|
then
|
|
echo "Merging extracted architectures: ${ARCHS}"
|
|
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
|
|
rm "${EXTRACTED_ARCHS[@]}"
|
|
|
|
echo "Replacing original executable with thinned version"
|
|
rm "$FRAMEWORK_EXECUTABLE_PATH"
|
|
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
|
|
fi
|
|
|
|
echo "Code signing framework"
|
|
codesign \
|
|
--force --sign $EXPANDED_CODE_SIGN_IDENTITY \
|
|
--preserve-metadata=identifier,entitlements \
|
|
$FRAMEWORK
|
|
done
|