mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
iOS: Add script to copy symbols into the latest archive (ugh, hacky)
This commit is contained in:
1 parent
b2fc0eee48
commit
66a9f65715
2 files changed
+74
-4
No files matched your search
+14
-4
@@ -2998,6 +2998,8 @@ if(IOS AND NOT LIBRETRO)
|
||||
# Should find a different way to do both these things.
|
||||
add_custom_command(TARGET ${TargetBin} POST_BUILD
|
||||
COMMAND echo "Creating ${APP_DIR_NAME} for app store build"
|
||||
COMMAND echo "CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}"
|
||||
COMMAND echo "BINARY_DIR: ${CMAKE_BINARY_DIR}"
|
||||
COMMAND mkdir -p \"${APP_DIR_NAME}\"
|
||||
# This tar command seems to be responsible for copying assets. I thought we had another step that did that..
|
||||
# Prepend -v to the extracting command to see the files copied.
|
||||
@@ -3011,6 +3013,12 @@ if(IOS AND NOT LIBRETRO)
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/ios/MoltenVK/MoltenVK.xcframework/ios-arm64/libMoltenVK.a"
|
||||
)
|
||||
# https://stackoverflow.com/questions/40664125/cmake-and-code-signing-in-xcode-8-for-ios-projects
|
||||
target_compile_options(${TargetBin} PRIVATE
|
||||
$<$<CONFIG:Release>:-g -gline-tables-only>
|
||||
)
|
||||
target_compile_options(${TargetBin} PRIVATE
|
||||
$<$<CONFIG:RelWithDebInfo>:-g>
|
||||
)
|
||||
set_target_properties(${TargetBin} PROPERTIES
|
||||
XCODE_GENERATE_SCHEME YES # Avoid the scheme bloat in XCode by only setting it to YES for this target.
|
||||
RESOURCE "ios/Launch Screen.storyboard"
|
||||
@@ -3035,13 +3043,14 @@ if(IOS AND NOT LIBRETRO)
|
||||
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic"
|
||||
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
|
||||
|
||||
# The following one was hallucinated by ChatGPT
|
||||
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS "YES"
|
||||
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
|
||||
XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] "YES"
|
||||
XCODE_ATTRIBUTE_STRIP_INSTALLED_PRODUCT[variant=Release] "YES"
|
||||
|
||||
#XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${BUNDLE_ENTITLEMENTS}
|
||||
XCODE_ATTRIBUTE_SKIP_INSTALL NO
|
||||
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
|
||||
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
|
||||
)
|
||||
else()
|
||||
# This is for injecting the version into the plist.
|
||||
@@ -3051,6 +3060,7 @@ if(IOS AND NOT LIBRETRO)
|
||||
COMMAND tar -c -C ${CMAKE_CURRENT_BINARY_DIR} --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"${APP_DIR_NAME}\"
|
||||
COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/macbundle.sh" \"${APP_DIR_NAME}\"
|
||||
)
|
||||
|
||||
set_target_properties(${TargetBin} PROPERTIES
|
||||
MACOSX_BUNDLE_INFO_PLIST ${BUNDLE_PLIST}
|
||||
XCODE_GENERATE_SCHEME YES
|
||||
|
||||
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# === CONFIGURATION ===
|
||||
|
||||
APP_NAME="PPSSPP" # Name of your app bundle (no .app extension)
|
||||
DSYM_PATH="build-ios/Release-iphoneos/${APP_NAME}.app.dSYM"
|
||||
|
||||
# === Find latest .xcarchive ===
|
||||
|
||||
ARCHIVE_DIR_BASE=~/Library/Developer/Xcode/Archives
|
||||
LATEST_ARCHIVE=$(find "$ARCHIVE_DIR_BASE" -type d -name "*.xcarchive" -print0 | xargs -0 ls -td | head -n 1)
|
||||
|
||||
if [ ! -d "$LATEST_ARCHIVE" ]; then
|
||||
echo "❌ Could not find .xcarchive in $ARCHIVE_DIR_BASE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📦 Found archive: $LATEST_ARCHIVE"
|
||||
|
||||
# === Extract binary UUID from .app inside archive ===
|
||||
|
||||
ARCHIVE_APP="$LATEST_ARCHIVE/Products/Applications/${APP_NAME}.app/${APP_NAME}"
|
||||
if [ ! -f "$ARCHIVE_APP" ]; then
|
||||
echo "❌ App binary not found in archive: $ARCHIVE_APP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARCHIVE_UUIDS=$(dwarfdump --uuid "$ARCHIVE_APP" | awk '{ print $2 }' | sort)
|
||||
|
||||
# === Extract UUID from your .dSYM ===
|
||||
|
||||
DSYM_BINARY="$DSYM_PATH/Contents/Resources/DWARF/${APP_NAME}"
|
||||
if [ ! -f "$DSYM_BINARY" ]; then
|
||||
echo "❌ .dSYM binary not found: $DSYM_BINARY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DSYM_UUIDS=$(dwarfdump --uuid "$DSYM_BINARY" | awk '{ print $2 }' | sort)
|
||||
|
||||
# === Compare UUIDs ===
|
||||
|
||||
if [ "$ARCHIVE_UUIDS" != "$DSYM_UUIDS" ]; then
|
||||
echo "❌ UUID mismatch:"
|
||||
echo "Archive binary UUIDs: $ARCHIVE_UUIDS"
|
||||
echo "Your dSYM UUIDs: $DSYM_UUIDS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ UUIDs match!"
|
||||
|
||||
# === Copy dSYM into archive ===
|
||||
|
||||
DEST="$LATEST_ARCHIVE/dSYMs/$(basename "$DSYM_PATH")"
|
||||
|
||||
echo "📁 Copying dSYM to archive: $DEST"
|
||||
cp -R "$DSYM_PATH" "$DEST"
|
||||
|
||||
echo "✅ dSYM successfully copied to archive."
|
||||
Reference in new issue
Block a user