40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
|
#!/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
|
||
|
done
|