diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 5ad83fea769b..5c888602390a 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -432,18 +432,7 @@ static void frontend_darwin_get_env(int *argc, char *argv[], fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], application_data, "shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER])); fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], application_data, "thumbnails", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS])); -#if TARGET_OS_IOS - { - int major, minor; - get_ios_version(&major, &minor); - if (major > 8) - strlcpy(g_defaults.path_buildbot_server_url, - "http://buildbot.libretro.com/nightly/apple/ios9/latest/", - sizeof(g_defaults.path_buildbot_server_url)); - } -#endif - -#if TARGET_OS_IOS +#if TARGET_OS_IPHONE fill_pathname_join_special(assets_zip_path, bundle_path_buf, "assets.zip", sizeof(assets_zip_path)); #else diff --git a/pkg/apple/RetroArch_iOS13.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS13.xcodeproj/project.pbxproj index e3dfe40c8211..656f1c3f3e5f 100644 --- a/pkg/apple/RetroArch_iOS13.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS13.xcodeproj/project.pbxproj @@ -6,6 +6,20 @@ objectVersion = 46; objects = { +/* Begin PBXAggregateTarget section */ + 0795205D2B839A99000698BB /* Rebuild assets.zip */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 079520602B839A99000698BB /* Build configuration list for PBXAggregateTarget "Rebuild assets.zip" */; + buildPhases = ( + 079520612B839AB0000698BB /* ShellScript */, + ); + dependencies = ( + ); + name = "Rebuild assets.zip"; + productName = "Rebuild assets.zip"; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ 070A88432A4E7AA9003161C0 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 070A88422A4E7AA9003161C0 /* OpenAL.framework */; }; 0714E7152983A5E500E6B45B /* libMoltenVK.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = 0714E7132983A5AC00E6B45B /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; @@ -1360,6 +1374,7 @@ 9204BE091D319EF300BD49DB /* RetroArchiOS */, 926C77D621FD1E6500103EDE /* RetroArchTV */, 9292D6E028F549D000E47A75 /* RetroArchWidgetExtensionExtension */, + 0795205D2B839A99000698BB /* Rebuild assets.zip */, ); }; /* End PBXProject section */ @@ -1443,6 +1458,26 @@ shellScript = "cd \"$SRCBASE\"\nif [ -f \".git_version.h\" ] ; then\n cp .git_version.h \"${DERIVED_FILE_DIR}\"/git_version.h\nelse\n echo '#define GIT_VERSION ' $(git rev-parse --short HEAD) > \"${DERIVED_FILE_DIR}\"/git_version.h\nfi\n"; showEnvVarsInLog = 0; }; + 079520612B839AB0000698BB /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + "$(SRCROOT)/assets.zip", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "$SRCROOT/rebuild-assets.sh -o\n"; + showEnvVarsInLog = 0; + }; 9204BE271D319EF300BD49DB /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -1581,6 +1616,25 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 0732B0982B83D5CD00CA82CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = "Rebuild assets.zip"; + }; + name = Debug; + }; + 0732B0992B83D5CD00CA82CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + PRODUCT_NAME = "Rebuild assets.zip"; + }; + name = Release; + }; 9204BE291D319EF300BD49DB /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2304,6 +2358,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 079520602B839A99000698BB /* Build configuration list for PBXAggregateTarget "Rebuild assets.zip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0732B0982B83D5CD00CA82CD /* Debug */, + 0732B0992B83D5CD00CA82CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 9204BE281D319EF300BD49DB /* Build configuration list for PBXNativeTarget "RetroArchiOS" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/pkg/apple/rebuild-assets.sh b/pkg/apple/rebuild-assets.sh new file mode 100755 index 000000000000..6c5bf4f8f407 --- /dev/null +++ b/pkg/apple/rebuild-assets.sh @@ -0,0 +1,117 @@ +#!/bin/bash + +WD=$(realpath $(dirname $0)) + +include_cheats="" +include_overlays="" +include_shaders="" +assets_zip="$WD/assets.zip" + +args=`getopt achmos $*` +set -- $args +while :; do + case "$1" in + -a) + include_cheats=1 + include_overlays=1 + include_shaders=1 + shift + ;; + -c) + include_cheats=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 " -c Include cheats" + echo " -o Include overlays" + echo " -s Include shaders" + echo " -a Include cheats, overlays, and shaders" + echo " -m Build for macOS (places in OSX directory" + exit 0 + ;; + -m) + assets_zip="$WD/OSX/assets.zip" + shift + ;; + -o) + include_overlays=1 + shift + ;; + -s) + include_shaders=1 + shift + ;; + --) + shift + break + ;; + esac +done + +function fetch_zip() +{ + echo "Fetching $1..." + curl -s -o tmp.zip "https://git.libretro.com/api/v4/projects/libretro-assets%2F$1/jobs/artifacts/master/download?job=libretro-package-any" + echo " Unzipping..." + unzip -q tmp.zip + rm -f tmp.zip +} + +pushd "$WD" &>/dev/null + +rm -rf .media +fetch_zip retroarch-assets +fetch_zip retroarch-joypad-autoconfig +fetch_zip libretro-database +fetch_zip libretro-super +if [ -n "$include_overlays" ] ; then + fetch_zip common-overlays +fi +if [ -n "$include_shaders" ] ; then + fetch_zip glsl-shaders + fetch_zip slang-shaders +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 +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_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 + +echo "Packaging info" +mv libretro-super/info info ; rmdir libretro-super + +if [ -n "$include_overlays" ] ; then + echo "Packaging overlays" + mv common-overlays overlays + rm -rf overlays/{ctr,wii} +fi + +if [ -n "$include_shaders" ] ; then + echo "Packaging shaders" + mkdir shaders ; mv glsl-shaders shaders/shaders_glsl ; mv slang-shaders shaders/shaders_slang +fi + +rm -f ../assets.zip +echo "Zipping final assets bundle..." +zip -qr ../assets.zip * + +popd &>/dev/null + +rm -rf .media + +echo "Done!" diff --git a/ui/drivers/cocoa/cocoa_common.m b/ui/drivers/cocoa/cocoa_common.m index 8c306209af65..ee0b445a2bea 100644 --- a/ui/drivers/cocoa/cocoa_common.m +++ b/ui/drivers/cocoa/cocoa_common.m @@ -879,6 +879,10 @@ bool cocoa_get_metrics( char *str = strdup(backup.UTF8String); conf = config_file_new_from_string(str, path_get(RARCH_PATH_CONFIG)); free(str); + /* If we are falling back to the NSUserDefaults backup of the config file, + * it's likely because the OS has deleted all of our cache, including our + * extracted assets. This will cause re-extraction */ + config_set_int(conf, "bundle_assets_extract_last_version", 0); } return conf; }