Difference between revisions of "Compiling ScummVM/iPhone"

Jump to navigation Jump to search
Removes information now contained in the new docs, and adds a link to the new docs.
(→‎Unofficial SDK: Update cross-compilation instructions.)
(Removes information now contained in the new docs, and adds a link to the new docs.)
 
(17 intermediate revisions by 4 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]] for [[iOS]] based devices (iPhone/iPad). See also [[Compiling ScummVM/macOS]].  


= 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. For more information, see the [https://docs.scummvm.org/en/latest/other_platforms/ios.html iOS page] in the [https://docs.scummvm.org/ user documentation].
 
== 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.
<syntaxhighlight 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
</syntaxhighlight>
 
Now, in order to compile ScummVM, execute the following commands:
<syntaxhighlight 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
</syntaxhighlight>
 
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 34: Line 130:


* For ''iphone'' use:
* For ''iphone'' use:
<source lang="bash">
<syntaxhighlight lang="bash">
export TARGET=arm-apple-darwin9
export TARGET=arm-apple-darwin9
</source>
</syntaxhighlight>


* For ''ios7'' use:
* For ''ios7'' use:
<source lang="bash">
<syntaxhighlight lang="bash">
export TARGET=arm-apple-darwin11
export TARGET=arm-apple-darwin11
</source>
</syntaxhighlight>


==== Setting up the Environment ====
==== Setting up the Environment ====


<source lang="bash">
<syntaxhighlight lang="bash">
export PATH="$IOS_TOOLCHAIN_BASE/bin:$IOS_TOOLCHAIN_BASE/$TARGET/bin:$IOS_TOOLCHAIN_BASE/$TARGET/usr/bin:$PATH"
export PATH="$IOS_TOOLCHAIN_BASE/bin:$IOS_TOOLCHAIN_BASE/$TARGET/bin:$IOS_TOOLCHAIN_BASE/$TARGET/usr/bin:$PATH"
export CPPFLAGS="-isystem $IOS_TOOLCHAIN_BASE/$TARGET/usr/include"
export CPPFLAGS="-isystem $IOS_TOOLCHAIN_BASE/$TARGET/usr/include"
export LDFLAGS="-L$IOS_TOOLCHAIN_BASE/$TARGET/usr/lib"
export LDFLAGS="-L$IOS_TOOLCHAIN_BASE/$TARGET/usr/lib"
</source>
</syntaxhighlight>
Where ''IOS_TOOLCHAIN_BASE'' contains the directory where you installed the toolchain. And ''TRAGET'' has been setup from the previous step.
Where ''IOS_TOOLCHAIN_BASE'' contains the directory where you installed the toolchain. And ''TRAGET'' has been setup from the previous step.


Line 60: Line 156:
First, navigate to a path where you want your build files to be located (this can be the ScummVM root directory but does not have to be).
First, navigate to a path where you want your build files to be located (this can be the ScummVM root directory but does not have to be).
Then run the following:
Then run the following:
<source lang="bash">
<syntaxhighlight lang="bash">
./path/to/scummvm/configure --host=ios7 --with-staticlib-prefix=$IOS_TOOLCHAIN_BASE/$TARGET/usr
./path/to/scummvm/configure --host=ios7 --with-staticlib-prefix=$IOS_TOOLCHAIN_BASE/$TARGET/usr
</source>
</syntaxhighlight>
Replace ''ios7'' with ''iphone'' if you want to build the older version of our iOS backend.
Replace ''ios7'' with ''iphone'' if you want to build the older version of our iOS backend.


=== Compilation ===
=== Compilation ===


You can simple compile ScummVM with running make:
You can compile ScummVM with running make:
<source lang="bash">
<syntaxhighlight lang="bash">
make iphone
make iphone
</source>
</syntaxhighlight>
If you simply want to test whether changes you made compile but do not plan to use the binary for deployment you can also simply run ''make''.
If you simply want to test whether changes you made compile but do not plan to use the binary for deployment you can also simply run ''make''.


Please note that if you want to deploy ScummVM on your iOS device you will need to generate a bundle file. For this run either:
Please note that if you want to deploy ScummVM on your iOS device you will need to generate a bundle file. For this run either:
<source lang="bash">
<syntaxhighlight lang="bash">
make ios7bundle
make ios7bundle
</source>
</syntaxhighlight>
for the ''ios7'' backend. Or
for the ''ios7'' backend. Or
<source lang="bash">
<syntaxhighlight lang="bash">
make iphonebundle
make iphonebundle
</source>
</syntaxhighlight>
for the ''iphone'' backend.
for the ''iphone'' backend.


Then simply upload the whole ScummVM.app directory to your device under the /Applications folder, and you're done!
Then simply upload the whole ScummVM.app directory to your device under the /Applications folder, and you're done!
442

edits

Navigation menu