author | richarddeurtje@gmail.com |
Sat, 24 Mar 2012 15:21:33 +0000 | |
changeset 210 | 3709bd70d27c |
parent 208 | 225b2b73ce41 |
child 211 | 2aebd9de1a5e |
permissions | -rw-r--r-- |
119 | 1 |
#summary Instructions for building Hedgewars for Android |
2 |
= Hedgewars for Android = |
|
3 |
== Introduction == |
|
4 |
||
5 |
This guide will take you through the steps needed to succesfully compile Hedgewars for Android |
|
6 |
||
7 |
==Download== |
|
8 |
||
199 | 9 |
We need to download these packages: |
119 | 10 |
|
11 |
* [http://code.google.com/p/hedgewars/ Hedgewars Source]<br> |
|
12 |
* [http://developer.android.com/sdk/index.html Android SDK] (Latest version will do)<br> |
|
13 |
* [http://developer.android.com/sdk/ndk/index.html Android NDK] (current version is r5b but anything up will probably work)<br> |
|
14 |
* [http://freepascal.org/down/source/sources.var FreePascal] (Latest (stable) version will do)<br> |
|
160 | 15 |
* [http://ant.apache.org/ Ant] (Linux distro should just use their package manager to get it, version isn't really important)<br> |
158
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
16 |
* Java compiler, make sure you get JDK (not JRE) version 6 and up |
119 | 17 |
|
18 |
==Hedgewars Source== |
|
19 |
||
20 |
Using mercurial you can pull the hedgeroid branch using |
|
21 |
{{{ |
|
22 |
hg clone https://hedgewars.googlecode.com/hg/ hedgewars |
|
23 |
}}} |
|
24 |
||
25 |
==Android SDK== |
|
26 |
||
27 |
Download the latest version using the link above. And unzip it at a place you can remember, I’ll refer to the location with `<`SDK`>`. Once you’ve unzipped/extracted the tar navigate to `<`SDK`>`/tools and execute ‘android’. This should bring up a GUI select ‘Available packages’, then ‘Android Repository’ and check atleast SDK Platform Android 1.6 / 2.1 / 2.2. I would recommend checking all of them, but it’s up to you. Next select ‘Install Selected’ press ‘Next’ a couple of times and you should have the SDK installed. |
|
28 |
||
158
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
29 |
Optionally you could permanently add `<`SDK`>`/platform-tools to your $PATH, this makes it easier to use ‘adb’. Adb is the main program to communicate with Android, think logging/pushing and pulling files/shell. |
119 | 30 |
|
31 |
If you do not have a real android device you can create an emulator if you do I’d skip this and continue at Android NDK |
|
32 |
||
33 |
You can use either the GUI, run android and follow the signs or from cli |
|
34 |
||
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
35 |
{{{ |
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
36 |
android create avd -n <name> -t 4 |
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
37 |
}}} |
119 | 38 |
-n is a name of your choice -t stands for the target ID |
39 |
||
40 |
See this for more information |
|
41 |
||
42 |
To run the emulator navigate to `<`SDK`>`/tools and run |
|
43 |
||
44 |
{{{emulator -avd <name>}}} |
|
45 |
where `<`name`>` is the same name as when you created it with the line above. |
|
46 |
||
47 |
==Android NDK== |
|
48 |
||
49 |
Download and untar it, ill refer to the ndk as `<`NDK`>`. That’s it :) |
|
50 |
||
122
8a5eb06794eb
Edited wiki page HedgeroidGuide through web user interface.
richarddeurtje@gmail.com
parents:
121
diff
changeset
|
51 |
==!FreePascal == |
119 | 52 |
|
53 |
We need to download the sources from the Freepascal website and compile the crosscompiler. I have grabbed the latest stable release 2.4.4 , though any version will work. Once downloaded, extract the tar/zip and place the files in a known directory. I will refer to the directory with `<`fpc`>` from now on. Next navigate to the `<`fpc`>` directory and compile it, for this various tools are needed, ‘make’ for instance. But also a fpc compiler for your system. Some apt-get/aptitude magic will solve these problems, make a comment if you run in to problems. Use this to compile the crosscompiler: |
|
54 |
||
55 |
{{{ |
|
207
f46af5897066
not sure why....but on windows this prevent error like: selected processor does not support `wfs r0'
richarddeurtje@gmail.com
parents:
201
diff
changeset
|
56 |
make crossinstall CPU_TARGET=arm OS_TARGET=linux CROSSBINDIR=<ndk>/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin OPT=-dFPC_ARMEL BINUTILSPREFIX=arm-linux-androideabi- INSTALL_PREFIX=<fpc>/fpc_install |
119 | 57 |
}}} |
58 |
||
210 | 59 |
Note: The flag CROSSBINDDIR points to the ndk/toolchain/../prebuilt/linux-x86/bin dir, change linux-x86 to your host machine, so for windows it would be 'windows' instead of linux-x86 |
60 |
||
119 | 61 |
==Final== |
62 |
||
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
63 |
We will generate the Makefile.android, which is needed to compile hedgewars, download SDL and you’ll need to make sure cmake knows where all the compilers are |
119 | 64 |
|
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
65 |
1.<br> |
159 | 66 |
Add `<`NDK`>`:`<`SDK`>`/platform-tools:`<`FPC`>`/compiler to your path, on debian based system I would do it as follows: |
119 | 67 |
|
158
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
68 |
{{{ |
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
69 |
export PATH=$PATH:/home/xeli/SoftDev/android/ndk |
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
70 |
export PATH=$PATH:/home/xeli/SoftDev/android/sdk/platform-tools |
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
71 |
export PATH=$PATH:/home/xeli/SoftDev/android/fpc-2.4.4/compiler |
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
72 |
}}} |
119 | 73 |
|
158
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
74 |
(Check google on how to do it for your specific OS if you don't know how) |
119 | 75 |
|
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
76 |
2.<br> |
199 | 77 |
Now we're gonna download sdl and a couple of its libraries, if you're on linux there's a script you can use |
78 |
{{{ |
|
79 |
cd <hedgewars-root>/project_files/Android-build |
|
80 |
chmod +x download_libs.sh (might not be needed) |
|
81 |
./download_libs.sh |
|
82 |
}}} |
|
83 |
This will download and unzip sdl to the expected folders |
|
84 |
||
85 |
TODO: make script for windows and verify if it works for osx |
|
86 |
||
87 |
||
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
88 |
3.<br> |
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
89 |
Finally you can use cmake to create the scripts |
119 | 90 |
|
91 |
{{{ |
|
92 |
cd <hedgewars-root> |
|
210 | 93 |
cmake . -DANDROID=1 |
119 | 94 |
}}} |
95 |
And that’s it. To compile: |
|
96 |
||
97 |
{{{ |
|
98 |
cd <hedgewars-root>/project_files/Android-build/ |
|
158
3c2429fd0b51
updated to the current build process
richarddeurtje@gmail.com
parents:
122
diff
changeset
|
99 |
make -f Makefile.android |
119 | 100 |
}}} |
101 |
and it should be installed on your emulator/device if it was connected. |
|
102 |
||
201
cac9c3805597
made the "Final" part a bit more readable
richarddeurtje@gmail.com
parents:
200
diff
changeset
|
103 |
On the device/emulator you can start the application up :) |
119 | 104 |
|
105 |
||
120
230afa501524
Edited wiki page HedgeroidGuide through web user interface.
richarddeurtje@gmail.com
parents:
119
diff
changeset
|
106 |
|
230afa501524
Edited wiki page HedgeroidGuide through web user interface.
richarddeurtje@gmail.com
parents:
119
diff
changeset
|
107 |
|
119 | 108 |
TODO verify that it works on Windows and OS X add dependency list of utilities (ant, fpc compiler for host, make etcetc) |