README.android: use separate build dirs + minor fixes
[freeglut] / README.android
1 Status
2 ======
3
4 Done:
5 - Initialize context with EGL
6 - Keyboard support
7 - Mouse support
8 - Virtual keypad (on touchscreen)
9 - Extract assets in cache dir on start-up
10
11 TODO:
12 - Open new windows (if that's possible)
13 - Joystick support (xperia play...)
14 - Display translucent keys on virtual keypad
15 - API to detect touchscreen presence
16 - API to disable assets extract
17 - GLES2 support for geometry and menus
18   (possibly also GLES1)
19 - Generate freeglut_std.h with GLES1 or GLES2 or non-ES headers
20 - Make EGL support reusable by Mesa X11
21 - ...
22
23
24 Create a module compatible with the NDK build-system
25 ====================================================
26
27 - Use your own cross-compiler for Android, or export the one from the
28   NDK:
29
30   /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \
31     --platform=android-9 \
32     --install-dir=/usr/src/ndk-standalone-9
33
34 - Build FreeGLUT with a '/freeglut' prefix :
35
36   PATH=/usr/src/ndk-standalone-9/bin:$PATH
37   cd /usr/src/freeglut-3.0.0/
38   mkdir cross-android-module/
39   cd cross-android-module/
40   cmake \
41     -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
42     -D CMAKE_INSTALL_PREFIX=/freeglut \
43     -D FREEGLUT_GLES2=ON \
44     -D FREEGLUT_BUILD_DEMOS=NO \
45     ..
46   make -j4
47   make install DESTDIR=$(pwd)
48
49 - Copy Android.mk in the new 'freeglut/' directory :
50
51   cp android/Android.mk freeglut/
52
53 - Reference this module in your jni/Android.mk:
54
55   LOCAL_STATIC_LIBRARIES := ... freeglut
56   ...
57   $(call import-module,freeglut)
58
59 - You now can point your NDK_MODULE_PATH to this module!
60
61   ndk-build NDK_MODULE_PATH=/usr/src/freeglut-3.0.0/freeglut/
62
63
64 Compile FreeGLUT for a traditional cross-compiler environment
65 =============================================================
66
67 - Use your own cross-compiler for Android, or export the one from the
68   NDK:
69
70   /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \
71     --platform=android-9 \
72     --install-dir=/usr/src/ndk-standalone-9
73
74 - Compile FreeGLUT and install it in your Android cross-compiler path:
75
76
77   PATH=/usr/src/ndk-standalone-9/bin:$PATH
78   cd /usr/src/freeglut-3.0.0/
79   mkdir cross-android-toolchain/
80   cd cross-android-toolchain/
81   cmake \
82     -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
83     -D CMAKE_INSTALL_PREFIX=/usr/src/ndk-standalone-9 \
84     -D FREEGLUT_GLES2=ON \
85     -D FREEGLUT_BUILD_DEMOS=NO \
86     ..
87   make -j4
88   make install
89
90 - Compile your own project.
91
92 For instance if you use the autotools:
93
94   PATH=/usr/src/ndk-standalone-9/bin:$PATH
95   export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/share/pkgconfig
96   ./configure --host=arm-linux-androideabi --prefix=/somewhere
97   make
98   make install
99
100 If you use CMake, you may want to copy our Android toolchain
101 'android_toolchain.cmake':
102
103   PATH=/usr/src/ndk-standalone-9/bin:$PATH
104   export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/share/pkgconfig
105   cp .../android_toolchain.cmake .
106   mkdir cross-android/
107   cd cross-android/
108   cmake \
109     -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
110     -D CMAKE_INSTALL_PREFIX=/somewhere \
111     -D MY_PROG_OPTION=something ... \
112     ..
113   make -j4
114   make install