mirror of
https://github.com/libretro/RetroArch
synced 2025-03-17 10:21:26 +00:00
iOS/tvOS: some updates for packaging for app store (#16508)
This commit is contained in:
parent
79fc73f0de
commit
a2a7c666fb
@ -1552,6 +1552,15 @@ static bool core_info_get_file_id(const char *core_filename,
|
||||
/* > Remove extension */
|
||||
strlcpy(core_file_id, core_filename, len);
|
||||
path_remove_extension(core_file_id);
|
||||
#if IOS
|
||||
/* iOS framework names, to quote Apple:
|
||||
* "must contain only alphanumerics, dots, hyphens and must not end with a dot."
|
||||
*
|
||||
* Since core names include underscore, which is not allowed, but not dot,
|
||||
* which is, we change underscore to dot. Here, we need to change it back.
|
||||
*/
|
||||
string_replace_all_chars(core_file_id, '.', '_');
|
||||
#endif
|
||||
|
||||
/* > Remove suffix */
|
||||
last_underscore = (char*)strrchr(core_file_id, '_');
|
||||
|
@ -9,16 +9,18 @@
|
||||
<key>INIntentDefinitionNamespace</key>
|
||||
<string>88xZPY</string>
|
||||
<key>INIntentDefinitionSystemVersion</key>
|
||||
<string>20A294</string>
|
||||
<string>23E224</string>
|
||||
<key>INIntentDefinitionToolsBuildVersion</key>
|
||||
<string>12A6144</string>
|
||||
<string>15E204a</string>
|
||||
<key>INIntentDefinitionToolsVersion</key>
|
||||
<string>12.0</string>
|
||||
<string>15.3</string>
|
||||
<key>INIntents</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>INIntentCategory</key>
|
||||
<string>information</string>
|
||||
<key>INIntentDescription</key>
|
||||
<string>RetroArch Launch Widget</string>
|
||||
<key>INIntentDescriptionID</key>
|
||||
<string>tVvJ9c</string>
|
||||
<key>INIntentEligibleForWidgets</key>
|
||||
|
@ -120,7 +120,6 @@
|
||||
92CC05B921FE3C1700FF79F0 /* GCDWebServerDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CC059B21FE3C1700FF79F0 /* GCDWebServerDataRequest.m */; };
|
||||
92CC05BA21FE3C1700FF79F0 /* GCDWebServerFileRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CC059C21FE3C1700FF79F0 /* GCDWebServerFileRequest.m */; };
|
||||
92CC05BB21FE3C1700FF79F0 /* GCDWebServerFileRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CC059C21FE3C1700FF79F0 /* GCDWebServerFileRequest.m */; };
|
||||
92CC05BC21FE3C1700FF79F0 /* GCDWebUploader.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 92CC059F21FE3C1700FF79F0 /* GCDWebUploader.bundle */; };
|
||||
92CC05BD21FE3C1700FF79F0 /* GCDWebUploader.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 92CC059F21FE3C1700FF79F0 /* GCDWebUploader.bundle */; };
|
||||
92CC05BE21FE3C1700FF79F0 /* GCDWebUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CC05A121FE3C1700FF79F0 /* GCDWebUploader.m */; };
|
||||
92CC05BF21FE3C1700FF79F0 /* GCDWebUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 92CC05A121FE3C1700FF79F0 /* GCDWebUploader.m */; };
|
||||
@ -1467,7 +1466,6 @@
|
||||
07F7FB022A2DA8B800037C04 /* filters in Resources */,
|
||||
9222F2092315DAD50097C0FD /* Launch Screen.storyboard in Resources */,
|
||||
9204BE231D319EF300BD49DB /* InfoPlist.strings in Resources */,
|
||||
92CC05BC21FE3C1700FF79F0 /* GCDWebUploader.bundle in Resources */,
|
||||
9222F20B2315DD3D0097C0FD /* retroarch_logo.png in Resources */,
|
||||
929784502200EEE400989A60 /* iOS/Resources/Icons.xcassets in Resources */,
|
||||
9222F1FF2314BA7C0097C0FD /* assets.zip in Resources */,
|
||||
@ -1755,7 +1753,9 @@
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = RetroArchTopShelfExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = RetroArchTopShelfExtension;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 RetroArch. All rights reserved.";
|
||||
INFOPLIST_KEY_UIRequiredDeviceCapabilities = arm64;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
@ -1822,7 +1822,9 @@
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = RetroArchTopShelfExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = RetroArchTopShelfExtension;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 RetroArch. All rights reserved.";
|
||||
INFOPLIST_KEY_UIRequiredDeviceCapabilities = arm64;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
@ -2377,7 +2377,7 @@ input[type="button"].btn-block {
|
||||
font-family: 'Glyphicons Halflings';
|
||||
|
||||
src: url('../fonts/glyphicons-halflings-regular.eot');
|
||||
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
|
||||
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
|
||||
}
|
||||
.glyphicon {
|
||||
position: relative;
|
||||
|
Binary file not shown.
@ -15,6 +15,8 @@
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>ROM</string>
|
||||
<key>LSHandlerRank</key>
|
||||
<string>Owner</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>com.libretro.rom</string>
|
||||
@ -23,6 +25,8 @@
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>All Files</string>
|
||||
<key>LSHandlerRank</key>
|
||||
<string>Alternate</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>public.data</string>
|
||||
@ -48,6 +52,25 @@
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>GCSupportedGameControllers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>ExtendedGamepad</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>DirectionalGamepad</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>MicroGamepad</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GCSupportsControllerUserInteraction</key>
|
||||
<true/>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.games</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
@ -61,8 +84,10 @@
|
||||
</array>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>RetroArch uses the local network to find local Netplay participants.</string>
|
||||
<key>UIApplicationExitsOnSuspend</key>
|
||||
<false/>
|
||||
<key>NSUserActivityTypes</key>
|
||||
<array>
|
||||
<string>ConfigurationIntent</string>
|
||||
</array>
|
||||
<key>UIFileSharingEnabled</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
@ -91,23 +116,6 @@
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>GCSupportedGameControllers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>ExtendedGamepad</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>DirectionalGamepad</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>ProfileName</key>
|
||||
<string>MicroGamepad</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GCSupportsControllerUserInteraction</key>
|
||||
<true/>
|
||||
<key>UTImportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>%CORE%</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>%CORE%</string>
|
||||
<string>%BUNDLE%</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>%IDENTIFIER%</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
@ -13,7 +13,7 @@
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>1.0</string>
|
||||
<string>14.2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
|
@ -29,15 +29,14 @@ mkdir -p "$OUTDIR"
|
||||
for dylib in $(find "$BASE_DIR"/modules -maxdepth 1 -type f -regex '.*libretro.*\.dylib$') ; do
|
||||
intermediate=$(basename "$dylib")
|
||||
intermediate="${intermediate/%.dylib/}"
|
||||
identifier="${intermediate/%$SUFFIX/}"
|
||||
intermediate="${identifier/%_libretro/}"
|
||||
fwName="${intermediate}_libretro"
|
||||
intermediate="${intermediate/%$SUFFIX/}"
|
||||
fwName="${intermediate//_/.}"
|
||||
echo Making framework $fwName from $dylib
|
||||
|
||||
fwDir="${OUTDIR}/${fwName}.framework"
|
||||
mkdir -p "$fwDir"
|
||||
lipo -create "$dylib" -output "$fwDir/$fwName"
|
||||
sed -e "s,%CORE%,$fwName," -e "s,%IDENTIFIER%,$identifier," iOS/fw.tmpl > "$fwDir/Info.plist"
|
||||
sed -e "s,%CORE%,$fwName," -e "s,%BUNDLE%,$fwName," -e "s,%IDENTIFIER%,$fwName," iOS/fw.tmpl > "$fwDir/Info.plist"
|
||||
echo "signing $fwName"
|
||||
codesign --force --verbose --sign "${CODE_SIGN_IDENTITY_FOR_ITEMS}" --timestamp=none --preserve-metadata=identifier,entitlements,flags --generate-entitlement-der "$fwDir"
|
||||
codesign --force --verbose --sign "${CODE_SIGN_IDENTITY_FOR_ITEMS}" "$fwDir"
|
||||
done
|
||||
|
@ -2,36 +2,53 @@
|
||||
|
||||
WD=$(realpath $(dirname $0))
|
||||
|
||||
include_autoconfig=""
|
||||
include_cheats=""
|
||||
include_databases=""
|
||||
include_overlays=""
|
||||
include_shaders=""
|
||||
include_xmb=""
|
||||
assets_zip="$WD/assets.zip"
|
||||
|
||||
args=`getopt achmos $*`
|
||||
args=`getopt acdhimosx $*`
|
||||
set -- $args
|
||||
while :; do
|
||||
case "$1" in
|
||||
-a)
|
||||
include_autoconfig=1
|
||||
include_cheats=1
|
||||
include_databases=1
|
||||
include_overlays=1
|
||||
include_shaders=1
|
||||
include_xmb=1
|
||||
shift
|
||||
;;
|
||||
-c)
|
||||
include_cheats=1
|
||||
shift
|
||||
;;
|
||||
-d)
|
||||
include_databases=1
|
||||
shift
|
||||
;;
|
||||
-h)
|
||||
echo "$(basename $0) -- Rebuild assets.zip"
|
||||
echo "Meant to be used when building RetroArch yourself. The buildbot does not use this."
|
||||
echo
|
||||
echo " -a Include all assets, cheats, databases, input autoconfig, overlays, and shaders"
|
||||
echo " -c Include cheats"
|
||||
echo " -d Include databases"
|
||||
echo " -i Include input autoconfig"
|
||||
echo " -o Include overlays"
|
||||
echo " -s Include shaders"
|
||||
echo " -a Include cheats, overlays, and shaders"
|
||||
echo " -m Build for macOS (places in OSX directory"
|
||||
echo " -x Include XMB assets"
|
||||
echo " -m Build for macOS (places in OSX directory)"
|
||||
exit 0
|
||||
;;
|
||||
-i)
|
||||
include_autoconfig=1
|
||||
shift
|
||||
;;
|
||||
-m)
|
||||
assets_zip="$WD/OSX/assets.zip"
|
||||
shift
|
||||
@ -44,6 +61,10 @@ while :; do
|
||||
include_shaders=1
|
||||
shift
|
||||
;;
|
||||
-x)
|
||||
include_xmb=1
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
@ -64,8 +85,12 @@ pushd "$WD" &>/dev/null
|
||||
|
||||
rm -rf .media
|
||||
fetch_zip retroarch-assets
|
||||
fetch_zip retroarch-joypad-autoconfig
|
||||
fetch_zip libretro-database
|
||||
if [ -n "$include_autoconfig" ] ; then
|
||||
fetch_zip retroarch-joypad-autoconfig
|
||||
fi
|
||||
if [ -n "$include_cheats" -o -n "$include_databases" ] ; then
|
||||
fetch_zip libretro-database
|
||||
fi
|
||||
fetch_zip libretro-super
|
||||
if [ -n "$include_overlays" ] ; then
|
||||
fetch_zip common-overlays
|
||||
@ -78,19 +103,28 @@ fi
|
||||
pushd .media &>/dev/null
|
||||
|
||||
echo "Packaging assets"
|
||||
mkdir assets ; mv retroarch-assets/{COPYING,glui,menu_widgets,ozone,pkg,rgui,sounds,xmb} assets ; rm -rf retroarch-assets
|
||||
mkdir assets ; mv retroarch-assets/{COPYING,glui,menu_widgets,ozone,pkg,rgui,sounds} assets
|
||||
if [ -n "$include_xmb" ] ; then
|
||||
mv retroarch-assets/xmb assets
|
||||
fi
|
||||
rm -rf retroarch-assets
|
||||
rm -rf assets/pkg/wiiu
|
||||
|
||||
echo "Packaging autoconfig"
|
||||
mv retroarch-joypad-autoconfig autoconfig
|
||||
rm -rf autoconfig/{android,dinput,linuxraw,parport,qnx,sdl2,udev,x,xinput}
|
||||
if [ -n "$include_autoconfig" ] ; then
|
||||
echo "Packaging autoconfig"
|
||||
mv retroarch-joypad-autoconfig autoconfig
|
||||
rm -rf autoconfig/{android,dinput,linuxraw,parport,qnx,sdl2,udev,x,xinput}
|
||||
fi
|
||||
|
||||
if [ -n "$include_cheats" ] ; then
|
||||
echo "Packaging cheats"
|
||||
mv libretro-database/cht cht
|
||||
fi
|
||||
echo "Packaging database"
|
||||
mkdir database ; mv libretro-database/{cursors,rdb} database ; rm -rf libretro-database
|
||||
if [ -n "$include_databases" ] ; then
|
||||
echo "Packaging database"
|
||||
mkdir database ; mv libretro-database/{cursors,rdb} database
|
||||
fi
|
||||
rm -rf libretro-database
|
||||
|
||||
echo "Packaging info"
|
||||
mv libretro-super/info info ; rmdir libretro-super
|
||||
@ -106,9 +140,9 @@ if [ -n "$include_shaders" ] ; then
|
||||
mkdir shaders ; mv glsl-shaders shaders/shaders_glsl ; mv slang-shaders shaders/shaders_slang
|
||||
fi
|
||||
|
||||
rm -f ../assets.zip
|
||||
rm -f $assets_zip
|
||||
echo "Zipping final assets bundle..."
|
||||
zip -qr ../assets.zip *
|
||||
zip -qr $assets_zip *
|
||||
|
||||
popd &>/dev/null
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "retroarch_logo_back-1.png",
|
||||
"idiom" : "tv"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 215 B |
@ -1,11 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "retroarch_logo_front-1.png",
|
||||
"idiom" : "tv"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@ -1,11 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "retroarch_logo_middle-1.png",
|
||||
"idiom" : "tv"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -2,17 +2,6 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>RetroArch URL</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>retroarch</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>ALTBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>ALTDeviceID</key>
|
||||
@ -21,6 +10,30 @@
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>RetroArch</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>ROM</string>
|
||||
<key>LSHandlerRank</key>
|
||||
<string>Owner</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>com.libretro.rom</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>All Files</string>
|
||||
<key>LSHandlerRank</key>
|
||||
<string>Alternate</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>public.data</string>
|
||||
<string>public.content</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@ -33,16 +46,19 @@
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>RetroArch URL</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>retroarch</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.games</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
</array>
|
||||
<key>GCSupportedGameControllers</key>
|
||||
<array>
|
||||
<dict>
|
||||
@ -60,25 +76,15 @@
|
||||
</array>
|
||||
<key>GCSupportsControllerUserInteraction</key>
|
||||
<true/>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.games</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>ROM</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>com.libretro.rom</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>All Files</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>public.data</string>
|
||||
<string>public.content</string>
|
||||
</array>
|
||||
</dict>
|
||||
<string>arm64</string>
|
||||
</array>
|
||||
<key>UTImportedTypeDeclarations</key>
|
||||
<array>
|
||||
|
@ -154,7 +154,7 @@ else
|
||||
race
|
||||
quicknes
|
||||
smsplus
|
||||
blastem
|
||||
#blastem
|
||||
vice_x128
|
||||
vice_x64
|
||||
vice_x64sc
|
||||
@ -202,7 +202,8 @@ else
|
||||
virtualxt
|
||||
geolith
|
||||
vircon32
|
||||
melondsds
|
||||
#melondsds
|
||||
2048
|
||||
)
|
||||
for dylib in "${exports[@]}" ; do
|
||||
find_dylib $dylib
|
||||
|
12
playlist.c
12
playlist.c
@ -1131,11 +1131,23 @@ void playlist_resolve_path(enum playlist_file_mode mode,
|
||||
string_starts_with(path, ":/modules/") &&
|
||||
string_ends_with(path, ".dylib"))
|
||||
{
|
||||
/* iOS cores used to be packaged as .dylib files in the modules
|
||||
* directory; App Store rules require turning them into Frameworks and
|
||||
* putting them in the Frameworks directory. Because some playlists
|
||||
* include the old core path, we'll translate it here.
|
||||
*/
|
||||
path[string_index_last_occurance(path, '.')] = '\0';
|
||||
if (string_ends_with(path, "_ios"))
|
||||
path[string_index_last_occurance(path, '_')] = '\0';
|
||||
strlcpy(tmp, ":/Frameworks/", STRLEN_CONST(":/Frameworks/") + 1);
|
||||
strlcpy(tmp + STRLEN_CONST(":/Frameworks/"), path + STRLEN_CONST(":/modules/"), sizeof(tmp) - STRLEN_CONST(":/Frameworks/"));
|
||||
/* iOS framework names, to quote Apple:
|
||||
* "must contain only alphanumerics, dots, hyphens and must not end with a dot."
|
||||
*
|
||||
* Since core names include underscore, which is not allowed, but not dot,
|
||||
* which is, we change underscore to dot.
|
||||
*/
|
||||
string_replace_all_chars(tmp, '_', '.');
|
||||
strlcat(tmp, ".framework", sizeof(tmp));
|
||||
fill_pathname_expand_special(path, tmp, len);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user