BuildingForIos.wiki
changeset 115 3278ecf295a3
child 118 a854206ba50c
equal deleted inserted replaced
114:e311af715b57 115:3278ecf295a3
       
     1 #summary Instructions for building Hedgewars for iOS on Mac OS X
       
     2 #labels Phase-Implementation,Phase-Deploy,Phase-Support
       
     3 
       
     4 = Prerequisites =
       
     5 
       
     6   * XCode must be installed, and you should have some skills in usig it
       
     7   * We need Mercurial to grab external dependencies
       
     8   * You should be familiar with the BuildingOnMac instructions
       
     9 
       
    10 == Necessary Libraries ==
       
    11 
       
    12 The library are exactly the same as usual, but they don't come in a precompiled version; so we will have to download the latest snapshot and build them on our own.
       
    13 
       
    14 All hard-to-find/hard-to-build libraries are bundled in the source, while SDL and SDL satellites are to be downloaded with HG. For easier handling all libraries come with an Xcode project file so that you just can use the graphical interface to build them; remember to build both Release and Debug for all the Architectures available.
       
    15 
       
    16   * Tremor - misc/libtremor/Xcode - is an ogg variant suited for embedded devices
       
    17   * Freetype - misc/libfreetype/Xcode - is a trimmed down version of the popular font rendering library
       
    18   * Lua - misc/liblua/Xcode - can also be skipped if you specify LUA_DISABLED in hedgewars config.inc file
       
    19 
       
    20 === Compiling SDL for iOS ===
       
    21 
       
    22 Since Hedgewars uses all four satellites besides the main SDL library things are going to get difficult. In fact most of the SDL_* libs don't come with a project file and/or can't be easily compiled (without a lot of hacking, that is).
       
    23 
       
    24 I'll try to explain what I did here to get my setup working, but in case of doubts or problems you should definitely drop by our IRC channel where we can give better help. Also unfortunately SDL has a high record of breaking during different commits (understandable since SDL1.3 is in beta) so what is written here might not be valid for older releases.
       
    25 
       
    26 Let's download the latest snapshot of the SDL family source code.
       
    27 
       
    28 {{{
       
    29 hg clone http://hg.libsdl.org/SDL
       
    30 hg clone http://hg.libsdl.org/SDL_image
       
    31 hg clone http://hg.libsdl.org/SDL_net
       
    32 hg clone http://hg.libsdl.org/SDL_ttf
       
    33 hg clone http://hg.libsdl.org/SDL_mixer
       
    34 }}}
       
    35 
       
    36 We will now go into each of them
       
    37    # SDL - quite easy, comes with a project file in Xcode-iPhoneOS that can be used to generate the library
       
    38    # SDL_image - easy, you need to uncompress a tar file to get the project file but then you can compile the library
       
    39    # SDL_net - surprise! No project file for iOS; i had to take the Mac one and change targets 
       
    40    # SDL_ttf - the above applies here as well
       
    41    # SDL_mixer - here's where the fun begins! Besides changing targets, you need to remove unnecessary decodes from the preprocessor macros; you'll find more details about this [http://projectsymphony.blogspot.com/2009/12/how-to-compile-sdlmixer-for-iphone.html here]
       
    42 
       
    43 == Necessary Tools ==
       
    44 
       
    45 Besides the iOS SDK, you need a special variant of Freepascal to build the engine; luckily the whole process of getting it is well documented here: http://wiki.lazarus.freepascal.org/iPhone/iPod_development
       
    46 
       
    47 = Building process =
       
    48 
       
    49 And now we should be able to finally open the main Hedgewars.xcodeproj file! There are yet two steps before getting a working build. 
       
    50 
       
    51    # select the target UpdateDataFolder and hit 'build' (not 'build and run') so the the resources folder gets filled with data; you should do this periodically or when there is new content in the share/hedgewars/Data folder
       
    52    # set the proper linking path of all the libries maked in red; the bundled ones should have a correct path, while you need to tell Xcode where are SDL static libraries. In order to do that I suggest that you right click on a red library, press "Get Info", in the "Path" line press 'Choose' and locate the correct xcodeproj file. Luckily this step is done only once.
       
    53 
       
    54 You should be done by now! Hit "Build and Run" and the iOS Simulator should run! Note that for a bug in Freepascal Debug works only on the Simulator, while Release only for Device.
       
    55 
       
    56 Enjoy!