Status
======
-Done:
-- Initialize context with EGL
-- Keyboard support
-- Mouse support
-- Virtual keypad (on touchscreen)
-- Extract assets in cache dir on start-up
-
-TODO:
-- Open new windows (if that's possible)
-- Joystick support (xperia play...)
-- Display translucent keys on virtual keypad
-- API to detect touchscreen presence
-- API to disable assets extract
-- GLES2 support for geometry and menus
- (possibly also GLES1)
-- Generate freeglut_std.h with GLES1 or GLES2 or non-ES headers
-- Make EGL support reusable by Mesa X11
-- ...
-
-
-Create a module compatible with the NDK build-system
-====================================================
-
-- Use your own cross-compiler for Android, or export the one from the
- NDK:
-
- /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \
- --platform=android-9 \
- --install-dir=/usr/src/ndk-standalone-9
-
-- Build FreeGLUT with a '/freeglut' prefix :
-
- PATH=/usr/src/ndk-standalone-9/bin:$PATH
- cd /usr/src/freeglut-3.0.0/
- cmake \
- -D CMAKE_TOOLCHAIN_FILE=android_toolchain.cmake \
- -D CMAKE_INSTALL_PREFIX=/freeglut \
- -D FREEGLUT_GLES2=ON \
- -D FREEGLUT_BUILD_DEMOS=NO \
- .
- make -j4
- make install DESTDIR=$(pwd)
-
-- Copy Android.mk in the new 'freeglut/' directory :
-
- cp android/Android.mk freeglut/
-
-- Reference this module in your jni/Android.mk:
-
- LOCAL_STATIC_LIBRARIES := ... freeglut
- ...
- $(call import-module,freeglut)
-
-- You now can point your NDK_MODULE_PATH to this module!
-
- ndk-build NDK_MODULE_PATH=/usr/src/freeglut-3.0.0/freeglut/
+See http://freeglut.sourceforge.net/docs/android.php
-Compile FreeGLUT for a traditional cross-compiler environment
-=============================================================
+Compile FreeGLUT
+================
- Use your own cross-compiler for Android, or export the one from the
- NDK:
+ Android NDK:
- /usr/src/android-ndk-r7/build/tools/make-standalone-toolchain.sh \
+ /usr/src/android-ndk-r7c/build/tools/make-standalone-toolchain.sh \
--platform=android-9 \
--install-dir=/usr/src/ndk-standalone-9
- Compile FreeGLUT and install it in your Android cross-compiler path:
-
PATH=/usr/src/ndk-standalone-9/bin:$PATH
- cd /usr/src/freeglut-3.0.0/
+ cd /usr/src/freeglut-x.x/
+ mkdir cross-android-gles2/
+ cd cross-android-gles2/
cmake \
- -D CMAKE_TOOLCHAIN_FILE=android_toolchain.cmake \
- -D CMAKE_INSTALL_PREFIX=/usr/src/ndk-standalone-9 \
+ -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
+ -D CMAKE_INSTALL_PREFIX=/usr/src/ndk-standalone-9/sysroot/usr \
+ -D CMAKE_BUILD_TYPE=Debug \
-D FREEGLUT_GLES2=ON \
-D FREEGLUT_BUILD_DEMOS=NO \
- .
+ ..
make -j4
make install
+ # Only static for now:
+ rm -f /usr/src/ndk-standalone-9/sysroot/usr/lib/libfreeglut-gles?.so*
+
-- Compile your own project.
+Compile your own project using common build systems
+===================================================
For instance if you use the autotools:
PATH=/usr/src/ndk-standalone-9/bin:$PATH
- PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/share/pkgconfig
+ export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig
./configure --host=arm-linux-androideabi --prefix=/somewhere
make
make install
'android_toolchain.cmake':
PATH=/usr/src/ndk-standalone-9/bin:$PATH
- PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/share/pkgconfig
- cp .../android_toolchain.cmake .
+ export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig
+ cp .../freeglut-x.x/android_toolchain.cmake .
+ mkdir cross-android/
+ cd cross-android/
cmake \
- -D CMAKE_TOOLCHAIN_FILE=android_toolchain.cmake
+ -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
-D CMAKE_INSTALL_PREFIX=/somewhere \
+ -D CMAKE_BUILD_TYPE=Debug \
-D MY_PROG_OPTION=something ... \
- .
+ ..
make -j4
make install
+
+
+Compile your own project using the NDK build-system
+===================================================
+
+- Create a module hierarchy pointing to FreeGLUT, with our Android.mk:
+
+ mkdir freeglut-gles2/
+ cp .../freeglut-x.x/android/gles2/Android.mk freeglut-gles2/
+ ln -s /usr/src/ndk-standalone-9/sysroot/usr/include freeglut-gles2/include
+ ln -s /usr/src/ndk-standalone-9/sysroot/usr/lib freeglut-gles2/lib
+
+- Reference this module in your jni/Android.mk:
+
+ LOCAL_STATIC_LIBRARIES := ... freeglut-gles2
+ ...
+ $(call import-module,freeglut-gles2)
+
+- You now can point your NDK_MODULE_PATH to the directory containing the module:
+
+ ndk-build NDK_MODULE_PATH=.