TrustedUser
2,147
edits
(Add some instructions to build with Xcode) |
(Update build instructions based on the content of the backends/platform/ios7/README.md file) |
||
Line 1: | Line 1: | ||
This page explains how to compile your own version of [[ScummVM]] using the [[iPhone]] or [[[iOS7]] backend. | This page explains how to compile your own version of [[ScummVM]] using the [[iPhone]] or [[[iOS7]] backend. | ||
= Using | = Using Xcode = | ||
You can compile ScummVM with the official tools from Apple and | 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 == | == Requirements == | ||
Line 12: | Line 12: | ||
* iOS libraries used by ScummVM. There is a link to a convenient package below in the build instruction. | * 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. | ''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 == | == Creating the Xcode project == | ||
Line 25: | Line 25: | ||
xcodebuild | xcodebuild | ||
</source> | </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 | Create a build directory, extract the [https://www.scummvm.org/frs/build/scummvm-ios7-libs.zip iOS libraries package] and generate the Xcode project | ||
Line 41: | Line 42: | ||
<source lang="bash"> | <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 | ../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 | open scummvm.xcodeproj | ||
</source> | </source> | ||
''Note:'' you can also double-click on the ''scummvm.xcodeproj'' file in the Finder to open it with Xcode. | |||
== Compile and Deploy == | == Compile and Deploy == | ||
Line 59: | Line 71: | ||
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. | 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 = |