Difference between revisions of "Compiling ScummVM/iPhone"

Jump to navigation Jump to search
Update build instructions based on the content of the backends/platform/ios7/README.md file
(→‎Unofficial SDK: Update cross-compilation instructions.)
(Update build instructions based on the content of the backends/platform/ios7/README.md file)
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page explains how to compile your own version of [[ScummVM]] using the [[iPhone]] backend.
This page explains how to compile your own version of [[ScummVM]] using the [[iPhone]] or [[[iOS7]] backend.


= Using XCode =
= Using Xcode =


'''TODO:''' Describe how to use XCode and create_project to compile for iOS using the official Apple toolchain.
You can compile ScummVM with the official tools from Apple. This is the recommended way to compile ScummVM, and the only one which makes it possible to run ScummVM on a non-jailbroken iPhone or iPad devices!
 
== Requirements ==
You will need:
* a macOS computer
* Xcode (you can get it for free from the Mac App Store)
* A developer account. You can create one for free using your Apple ID (the same one used for iCloud or the Mac App Store) on the [https://developer.apple.com/membercenter/ Apple Developer Member Center].
* iOS libraries used by ScummVM. There is a link to a convenient package below in the build instruction.
 
''Note:'' with a free developer account iOS App that you build will only be valid for 7 days and you will thus need to recompile and reinstall them each week.
 
== Creating the Xcode project ==
Clone the ScummVM repository from GitHub to get the source code:
<source lang="bash">
git clone https://github.com/scummvm/scummvm.git
</source>
 
Generate the create_project tool:
<source lang="bash">
cd scummvm/devtools/create_project/xcode
xcodebuild
</source>
''Note:'' you may need to run xcodebuild with sudo the first time ('sudo xcodebuild') if the Xcode command line tools are not yet installed. Command line tools can also be installed from Xcode or using 'sudo xcode-select --install'
 
Create a build directory, extract the [https://www.scummvm.org/frs/build/scummvm-ios7-libs.zip iOS libraries package] and generate the Xcode project
<source lang="bash">
cd ../../../..
mkdir build
cd build
</source>
 
Download the [https://www.scummvm.org/frs/build/scummvm-ios7-libs.zip iOS libraries package] and extract them in the build directory:
<source lang="bash">
unzip ~/Downloads/ScummVM-iOS-libraries.zip
</source>
 
Generate Xcode project and open it:
<source lang="bash">
../scummvm/devtools/create_project/xcode/build/Release/create_project ../scummvm --xcode --enable-fluidsynth --disable-bink --disable-mt32emu --disable-nasm --disable-opengl --disable-theora --disable-taskbar --disable-libcurl --disable-sdlnet
</source>
 
At this point your build directory should contain:
* a generated '''engines''' directory
* a generated '''scummvm.xcodeproj''' project
* an '''include''' directory
* a '''lib''' directory
 
You are now ready to compile ScummVM. First open the project in Xcode:
<source lang="bash">
open scummvm.xcodeproj
</source>
''Note:'' you can also double-click on the ''scummvm.xcodeproj'' file in the Finder to open it with Xcode.
 
== Compile and Deploy ==
In Xcode you need to configure the scummvm project:
* Connect your iPhone or iPad to your Mac.
* Select your iOS device (iPhone or iPad) at the top of the window (in the title bar).
* In the project ''General'' settings you need to specify a unique ''Bundle Identifier'' (for example ''org.yourname.scummvm'').
* You need to configure the ``Signing`` settings. Add an account by using your Apple ID if needed and then select it.
 
Then click on the Play button in the top left of the window to start the build. The App will be automatically installed on your device at the end of the build.
 
 
'''TODO:''' Add a bit more details.
 
 
There are some outdated instructions on [http://blog.pmlabs-apps.com/scummvm-on-ios-without-jailbreak/ this blog] that may still be useful as it is illustrated and has more details.
 
= Using the command line =
 
For jailbroken devices, it is also possible to compile the project from command line. You'll need a working toolchain, and some tools, like '''ldid''', to fake the code signature.
 
Here is a script to download, and compile all the required tools. This script has been wrote for Debian 8.2, and should be run as root.
<source lang="bash">
#!/bin/bash
 
if [ $UID -ne 0 ]; then
echo "This script should be run by the root user"
exit 1
fi
 
# Install the Clang compiler
apt-get install -y clang-3.4 libclang-3.4-dev llvm-3.4 libtool bison flex automake subversion git pkg-config wget libssl-dev uuid-dev libxml2-dev || exit 1
 
# Add LLVM to the linker library path
echo /usr/lib/llvm-3.4/lib > /etc/ld.so.conf.d/libllvm-3.4.conf
ldconfig
 
# Add symlinks for the LLVM headers
ln -s /usr/lib/llvm-3.4/bin/llvm-config /usr/bin/llvm-config || exit 1
ln -s /usr/include/llvm-3.4/llvm /usr/include/llvm || exit 1
ln -s /usr/include/llvm-c-3.4/llvm-c /usr/include/llvm-c || exit 1
ln -s /usr/bin/clang-3.4 /usr/bin/clang || exit 1
ln -s /usr/bin/clang++-3.4 /usr/bin/clang++ || exit 1
 
# Build the linker
svn checkout http://ios-toolchain-based-on-clang-for-linux.googlecode.com/svn/trunk/cctools-porting || exit 1
cd cctools-porting
sed -i'' 's/proz -k=20  --no-curses/wget/g' cctools-ld64.sh
./cctools-ld64.sh || exit 1
 
cd cctools-855-ld64-236.3
./autogen.sh || exit 1
./configure --prefix=/usr/local --target=arm-apple-darwin11 || exit 1
make || exit 1
make install || exit 1
cd ../..
 
# Install ios-tools
wget https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iphonesdk-utils-2.0.tar.gz || exit 1
tar xzf iphonesdk-utils-2.0.tar.gz
cd iphonesdk-utils-2.0
patch -p0 <<_EOF
*** genLocalization2/getLocalizedStringFromFile.cpp    2015-04-02 04:45:39.309837816 +0530
--- genLocalization2/getLocalizedStringFromFile.cpp    2015-04-02 04:45:11.525700021 +0530
***************
*** 113,115 ****
      clang::HeaderSearch headerSearch(headerSearchOptions,
-                                      fileManager,
                                      *pDiagnosticsEngine,
--- 113,115 ----
      clang::HeaderSearch headerSearch(headerSearchOptions,
+                                      sourceManager,
                                      *pDiagnosticsEngine,
***************
*** 129,134 ****
                  false);
-    clang::HeaderSearch headerSearch(fileManager,
                                      *pDiagnosticsEngine,
                                      languageOptions,
-                                      pTargetInfo);
      ApplyHeaderSearchOptions(headerSearch, headerSearchOptions, languageOptions, pTargetInfo->getTriple());
--- 129,134 ----
                  false);
+    clang::HeaderSearch headerSearch(fileManager);/*,
                                      *pDiagnosticsEngine,
                                      languageOptions,
+                                      pTargetInfo);*/
      ApplyHeaderSearchOptions(headerSearch, headerSearchOptions, languageOptio
_EOF
 
./autogen.sh || exit 1
CC=clang CXX=clang++ ./configure --prefix=/usr/local || exit 1
make || exit 1
make install || exit 1
 
# Install the iOS SDK 8.1
mkdir -p /usr/share/ios-sdk
cd /usr/share/ios-sdk
wget http://iphone.howett.net/sdks/dl/iPhoneOS8.1.sdk.tbz2 || exit 1
tar xjf iPhoneOS8.1.sdk.tbz2
rm iPhoneOS8.1.sdk.tbz2
</source>
 
Now, in order to compile ScummVM, execute the following commands:
<source lang="bash">
export SDKROOT=/usr/share/ios-sdk/iPhoneOS8.1.sdk
export CC=ios-clang
export CXX=ios-clang++
./configure --host=ios7 --disable-mt32emu --enable-release
make ios7bundle
</source>
 
At the end of the compilation, you'll find a '''ScummVM.app''' application: copy it over SSH, and reboot your device.


= Cross-Compilation =
= Cross-Compilation =
Line 67: Line 230:
=== Compilation ===
=== Compilation ===


You can simple compile ScummVM with running make:
You can compile ScummVM with running make:
<source lang="bash">
<source lang="bash">
make iphone
make iphone
TrustedUser
2,147

edits

Navigation menu