Android: unify toolchain and module builds
[freeglut] / README.android
index 4cded4a..ec8b32d 100644 (file)
@@ -4,78 +4,42 @@ Status
 See http://freeglut.sourceforge.net/docs/android.php
 
 
-Create a module compatible with the NDK build-system
-====================================================
+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 \
-    --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/
-  mkdir cross-android-module/
-  cd cross-android-module/
-  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/
-
-
-Compile FreeGLUT for a traditional cross-compiler environment
-=============================================================
-
-- 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 \
+  /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/
-  mkdir cross-android-toolchain/
-  cd cross-android-toolchain/
+  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_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
-  export 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
@@ -84,14 +48,36 @@ If you use CMake, you may want to copy our Android toolchain
 'android_toolchain.cmake':
 
   PATH=/usr/src/ndk-standalone-9/bin:$PATH
-  export 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_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=.