The following instructions will only work if building from OS X, using latest XCode with fake signing enabled. To build RetroArch: Open $(root)/ios/RetroArch.xcodeproj, change build type to iOSDevice then choose Product->Build For->Archiving. After compilation finishes goto Window->Organizer->Projects->RetroArch then click the small arrow beside the Derived Data field, this will open a finder window with the projects build files directory highlighted. The app bundle can be found at Build/Products/* in that folder. Use scp to copy the .app bundle to the appropriate place on your device. To build libretro cores: In general, to build for iOS devices, copy the configuration for OSX, then at the end add the lines: sysroot = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/ CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7 $(sysroot) CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -arch armv7 $(sysroot) Here is how it would look in Makefile.libretro for vba-next: ... else ifeq ($(platform), osx) TARGET := vba_next_libretro.dylib fpic := -fPIC SHARED := -dynamiclib else ifeq ($(platform), ios) TARGET := vba_next_libretro.dylib fpic := -fPIC SHARED := -dynamiclib sysroot = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/ CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7 $(sysroot) CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -arch armv7 $(sysroot) else ifeq ($(platform), ps3) ... Other arm specific flags can be added if needed. Finally issue the make command for the module adding 'platform=ios' at the of the command. (e.g. 'make -f Makefile.libretro platform=ios'). Then copy the resulting .dylib file into a sub-directory of the app bundle named modules. (e.g. RetroArch.app/modules/vba_next_libretro.dylib). Paths: /var/mobile/Library/RetroArch: Will be created to store both saved games and the retroarch.cfg. /var/mobile/RetroArchGames: If this exists and is a directory it will be used as the root for game browsing. /var/mobile: If RetroArchGames does not exist this will be used as the root for game browsing, if another browser root is desired make RetroArchGames a symlink to the preferred path. RetroArch.app/shaders: Contains .shader format shaders, sub-directories are supported. RetroArch.app/overlays: Contains input overlay definitions, sub-directories are supported. RetroArch.app/modules: Contains .dylib files for the libretro modules. The only constraint on the file name is that it must end in .dylib, sub-directories are not supported. Simulator: To test in iOS Simulator you will need to create the '/var/mobile' directory on you computer, and give yourself full access to it.