Android: unify toolchain and module builds
[freeglut] / README.android
1 Status
2 ======
3
4 See http://freeglut.sourceforge.net/docs/android.php
5
6
7 Compile FreeGLUT
8 ================
9
10 - Use your own cross-compiler for Android, or export the one from the
11   Android NDK:
12
13   /usr/src/android-ndk-r7c/build/tools/make-standalone-toolchain.sh \
14     --platform=android-9 \
15     --install-dir=/usr/src/ndk-standalone-9
16
17 - Compile FreeGLUT and install it in your Android cross-compiler path:
18
19   PATH=/usr/src/ndk-standalone-9/bin:$PATH
20   cd /usr/src/freeglut-x.x/
21   mkdir cross-android-gles2/
22   cd cross-android-gles2/
23   cmake \
24     -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
25     -D CMAKE_INSTALL_PREFIX=/usr/src/ndk-standalone-9/sysroot/usr \
26     -D CMAKE_BUILD_TYPE=Debug \
27     -D FREEGLUT_GLES2=ON \
28     -D FREEGLUT_BUILD_DEMOS=NO \
29     ..
30   make -j4
31   make install
32   # Only static for now:
33   rm -f /usr/src/ndk-standalone-9/sysroot/usr/lib/libfreeglut-gles?.so*
34
35
36 Compile your own project using common build systems
37 ===================================================
38
39 For instance if you use the autotools:
40
41   PATH=/usr/src/ndk-standalone-9/bin:$PATH
42   export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig
43   ./configure --host=arm-linux-androideabi --prefix=/somewhere
44   make
45   make install
46
47 If you use CMake, you may want to copy our Android toolchain
48 'android_toolchain.cmake':
49
50   PATH=/usr/src/ndk-standalone-9/bin:$PATH
51   export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig
52   cp .../freeglut-x.x/android_toolchain.cmake .
53   mkdir cross-android/
54   cd cross-android/
55   cmake \
56     -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
57     -D CMAKE_INSTALL_PREFIX=/somewhere \
58     -D CMAKE_BUILD_TYPE=Debug \
59     -D MY_PROG_OPTION=something ... \
60     ..
61   make -j4
62   make install
63
64
65 Compile your own project using the NDK build-system
66 ===================================================
67
68 - Create a module hierarchy pointing to FreeGLUT, with our Android.mk:
69
70   mkdir freeglut-gles2/
71   cp .../freeglut-x.x/android/gles2/Android.mk freeglut-gles2/
72   ln -s /usr/src/ndk-standalone-9/sysroot/usr/include freeglut-gles2/include
73   ln -s /usr/src/ndk-standalone-9/sysroot/usr/lib freeglut-gles2/lib
74
75 - Reference this module in your jni/Android.mk:
76
77   LOCAL_STATIC_LIBRARIES := ... freeglut-gles2
78   ...
79   $(call import-module,freeglut-gles2)
80
81 - You now can point your NDK_MODULE_PATH to the directory containing the module:
82
83   ndk-build NDK_MODULE_PATH=.