Skip to content
Snippets Groups Projects
Commit 2b113127 authored by Maxime Graulich's avatar Maxime Graulich
Browse files

Android: update build script

parent 4dca7467
No related branches found
No related tags found
No related merge requests found
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.geuz.onelab" package="org.geuz.onelab"
android:versionCode="1" android:versionCode="3"
android:versionName="1.0" android:versionName="1.0.2"
android:installLocation="auto" android:installLocation="auto"
> >
<uses-sdk <uses-sdk
android:targetSdkVersion="17" android:minSdkVersion="14"
android:minSdkVersion="14" /> android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>
<uses-feature android:glEsVersion="0x00010000" android:required="true" /> <uses-feature android:glEsVersion="0x00010000" android:required="true" />
...@@ -34,8 +34,7 @@ ...@@ -34,8 +34,7 @@
android:label="@string/title_activity_about" /> android:label="@string/title_activity_about" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:label="@string/title_activity_main" android:label="@string/title_activity_main" >
>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
...@@ -46,12 +45,10 @@ ...@@ -46,12 +45,10 @@
</activity> </activity>
<activity <activity
android:name=".PostProcessingActivity" android:name=".PostProcessingActivity"
android:label="@string/title_activity_main" android:label="@string/title_activity_main" />
/>
<activity <activity
android:name=".OptionsActivity" android:name=".OptionsActivity"
android:label="@string/title_activity_options" android:label="@string/title_activity_options" />
/>
</application> </application>
</manifest> </manifest>
...@@ -162,6 +162,7 @@ if(ENABLE_BUILD_ANDROID) ...@@ -162,6 +162,7 @@ if(ENABLE_BUILD_ANDROID)
if(PETSC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) if(PETSC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB)
add_custom_target(androidProject add_custom_target(androidProject
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/Onelab/ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/Onelab/
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/models/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Android/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Android/ ${CMAKE_CURRENT_BINARY_DIR}/Onelab/
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/
COMMAND ${CMAKE_COMMAND} -E copy ${GMSH_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ COMMAND ${CMAKE_COMMAND} -E copy ${GMSH_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/
...@@ -177,7 +178,7 @@ if(ENABLE_BUILD_ANDROID) ...@@ -177,7 +178,7 @@ if(ENABLE_BUILD_ANDROID)
${DIR} ${CMAKE_CURRENT_BINARY_DIR}/models/${DIRNAME}) ${DIR} ${CMAKE_CURRENT_BINARY_DIR}/models/${DIRNAME})
endforeach(DIR) endforeach(DIR)
find_program(ZIP_COMMAND zip) find_program(ZIP_COMMAND zip)
add_custom_command(TARGET androidProject POST_BUILD COMMAND pushd ${CMAKE_CURRENT_BINARY_DIR}/models/ && ${ZIP_COMMAND} -r add_custom_command(TARGET androidProject POST_BUILD COMMAND pushd ${CMAKE_CURRENT_BINARY_DIR}/models/ && zip -r
${CMAKE_CURRENT_BINARY_DIR}/Onelab/res/raw/models.zip * && popd) ${CMAKE_CURRENT_BINARY_DIR}/Onelab/res/raw/models.zip * && popd)
message(STATUS "") message(STATUS "")
......
#ifndef NDEBUG
#include <android/log.h> #include <android/log.h>
#include <dlfcn.h>
#define LOG_TAG "Gmsh" #define LOG_TAG "Gmsh"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
#endif
#include <dlfcn.h>
#include <gmsh/Gmsh.h> #include <gmsh/Gmsh.h>
#include <gmsh/GmshConfig.h> #include <gmsh/GmshConfig.h>
...@@ -36,7 +38,9 @@ public: ...@@ -36,7 +38,9 @@ public:
void operator()(std::string level, std::string message) void operator()(std::string level, std::string message)
{ {
if(level == "Error"){ if(level == "Error"){
#ifndef NDEBUG
LOGE("Error:\t%s", message.c_str()); LOGE("Error:\t%s", message.c_str());
#endif
JNIEnv *env; JNIEnv *env;
if(gJavaVM->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK || if(gJavaVM->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK ||
!gCallbackObject || (gJavaVM->AttachCurrentThread(&env, NULL)) < 0) return; !gCallbackObject || (gJavaVM->AttachCurrentThread(&env, NULL)) < 0) return;
...@@ -72,7 +76,9 @@ public: ...@@ -72,7 +76,9 @@ public:
requestRender(); requestRender();
return; return;
} }
#ifndef NDEBUG
LOGI("%s:\t%s", level.c_str(), message.c_str()); LOGI("%s:\t%s", level.c_str(), message.c_str());
#endif
} }
}; };
......
This diff is collapsed.
#!/usr/bin/python2
if __name__ == '__main__':
import sys
import os
sys.path.insert(0, os.path.abspath('config'))
import configure
configure_options = [
'--AR=/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-ar',
'--CC=/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc',
'--CFLAGS=--sysroot=/opt/android-ndk/platforms/android-8/arch-arm',
'--CPP=/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-cpp',
'--CPPFLAGS=--sysroot=/opt/android-ndk/platforms/android-8/arch-arm',
'--CXX=/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-g++',
'--CXXFLAGS=--sysroot=/opt/android-ndk/platforms/android-8/arch-arm -fsigned-char -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fdata-sections -ffunction-sections -fPIC -Wno-psabi -frtti -fexceptions -mthumb -O3 -fomit-frame-pointer -DNDEBUG -fPIC -isystem /opt/android-ndk/platforms/android-8/arch-arm/usr/include -isystem /opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.6/include -isystem /opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include -lstdc++',
'--LDFLAGS= -L/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/user/libs/armeabi-v7a -L/home/maxime/Stage/_gmsh/CMakeFiles/ndklibs/armeabi-v7a -L/home/maxime/Stage/petsc-3.3-p6/armv7-unknown-linux/lib',
'--LD_SHARED=/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-ld',
'--download-blacs=0',
'--download-mumps=0',
'--download-parmetis=0',
'--download-scalapack=0',
'--download-umfpack=0',
'--known-bits-per-byte=8',
'--known-endian=little',
'--known-level1-dcache-assoc=1',
'--known-level1-dcache-linesize=16',
'--known-level1-dcache-size=4000',
'--known-memcmp-ok=1',
'--known-sizeof-char=1',
'--known-sizeof-double=8',
'--known-sizeof-float=4',
'--known-sizeof-int=4',
'--known-sizeof-long-long=8',
'--known-sizeof-long=8',
'--known-sizeof-short=2',
'--known-sizeof-size_t=8',
'--known-sizeof-void-p=8',
'--with-blas-lib=/home/maxime/Stage/petsc-3.3-p6/externalpackages/f2cblaslapack-3.1.1.q/libf2cblas.so',
'--with-clanguage=cxx',
'--with-cmake=1',
'--with-debugging=0',
'--with-fc=0',
'--with-lapack-lib=/home/maxime/Stage/petsc-3.3-p6/externalpackages/f2clapacklapack-3.1.1.q/libf2clapack.so',
'--with-mpi=0',
'--with-shared-libraries=1',
'--with-x=0',
'-I/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/include/',
'-I/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/include/backward',
'-I/opt/android-ndk/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include',
'-lstdc++',
'-with-batch=1',
'PETSC_ARCH=armv7-android-linux',
]
configure.petsc_configure(configure_options)
#!/usr/bin/env bash
function checkError {
if [ $# == 2 ]; then
if [ $1 == 0 ]; then return; fi
echo -e "\033[31m[-] $2 \033[0m"
exit $1
fi
}
if [ -z "$ANDROID_NDK" ]; then
echo "ERROR: You must specify android NDK path: export ANDROID_NDK=/path/to/android-ndk/"
exit 1
fi
if [ -z "$ANDROID_SDK" ]; then
echo "ERROR: You must specify android SDK path: export ANDROID_SDK=/path/to/android-sdk/"
exit 1
fi
if [ -z "$ANDROID_TOOLCHAIN" ] || [ ! -f "$ANDROID_TOOLCHAIN" ]; then
echo "ERROR: You must specify a valid android toolchain: export ANDROID_TOOLCHAIN=/path/to/android.toolchain.cmake"
exit 1
fi
echo -e "\033[1m[+] Take the last version of Gmsh and GetDP from svn\033[0m"
if [ ! -d "gmsh" ]; then svn --username gmsh --password gmsh co https://geuz.org/svn/gmsh/trunk gmsh; else svn up gmsh; fi
if [ ! -d "getdp" ]; then svn --username gmsh --password gmsh co https://geuz.org/svn/getdp/trunk getdp; else svn up getdp; fi
if [ ! -d "gmsh.android" ]; then mkdir gmsh.android; fi
if [ ! -d "getdp.android" ]; then mkdir getdp.android; fi
if [ ! -d "onelab.android" ]; then mkdir onelab.android; fi
if [ ! -f "petsc.android/libpetsc.so" ] || [ ! -f "petsc.android/libf2clapack.so" ] || [ ! -f "petsc.android/libf2cblas.so" ] || [ ! -d "petsc.android/include/" ]; then
echo "ERROR: petsc.android do not exist or is incomplete (need blas, lapack and petsc)"
exit 1
fi
cd gmsh.android
echo -e "\033[1m[+] Make Gmsh library\033[0m"
cmake -DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_ANDROID=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DCMAKE_BUILD_TYPE=Release -DBLAS_LIB=../petsc.android/libf2cblas.so -DLAPACK_LIB=../petsc.android/libf2clapack.so ../gmsh
checkError $? "CMake fail (Gmsh)"
make androidGmsh -j3
checkError $? "make fail (Gmsh)"
make getHeaders
checkError $? "make getHeaders fail (Gmsh)"
cd ../getdp.android
echo -e "\033[1m[+] Make GetDP library\033[0m"
cmake -DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_FORTRAN=0 -DENABLE_BUILD_ANDROID=1 -DENABLE_GMSH=1 -DENABLE_LEGACY=1 -DENABLE_PETSC=1 -DCMAKE_BUILD_TYPE=Release -DGMSH_INC=..//gmsh.android/Headers -DGMSH_LIB=../gmsh.android/libs/libGmsh.so -DPETSC_INC=../petsc.android/include/ -DPETSC_LIBS=../petsc.android/libpetsc.so ../getdp
checkError $? "CMake fail (GetDP)"
make androidGetdp -j3
checkError $? "make fail (GetDP)"
make getHeaders
checkError $? "make getHeaders fail (GetDP)"
cd ../onelab.android
echo -e "\033[1m[+] Make Onelab interface library\033[0m"
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_BUILD_ANDROID=1 -DGETDP_LIB=../getdp.android/libs/libGetDP.so -DGETDP_INC=../getdp.android/Headers/ -DGMSH_LIB=../gmsh.android/libs/libGmsh.so -DGMSH_INC=../gmsh.android/Headers/ -DPETSC_LIB=../petsc.android/libpetsc.so -DBLAS_LIB=../petsc.android/libf2cblas.so -DLAPACK_LIB=../petsc.android/libf2clapack.so ../gmsh/contrib/mobile/
checkError $? "CMake fail (Onelab)"
make androidOnelab -j3
checkError $? "make fail (Onelab)"
make androidProject
checkError $? "make Android project fail (Onelab)"
echo -e "\033[1m[+] Build Android application (java)\033[0m"
cd Onelab/
if [ ! -d "libs/armeabi-v7a/" ]; then mkdir -p libs/armeabi-v7a/; fi
target=1
count=0
while read line; do
read line # Name
target_name=$(echo $line | awk '{print $2}')
target_version=$(echo $line | awk '{print $3}')
read line # Type
read line # API level
target_api=$(echo $line | awk '{print $3}')
read line # Revision
read line # Skins
if [ $target_api -ge 14 ]; then
echo -e "\n\nBuild $target_name $target_version (target id: $target)"
$ANDROID_SDK/tools/android update project --name Onelab --path . --target $target
ant -quiet release
checkError $? "ant fail ($(echo $target_name $target_version))"
cp bin/Onelab-release.apk ../../../../Onelab-$(echo $target_name)_$(echo $target_version).apk
if [ $? -ne 0 ]; then
cp bin/Onelab-release-unsigned.apk ../../../../Onelab-unsigned-$(echo $target_name)_$(echo $target_version).apk
fi
count=$(($count+1))
break # build only for the first target
fi
read line # HACK
target=$(($target+1))
done < <($ANDROID_SDK/tools/android list target | grep -A 5 "id:")
echo -e "\033[1m[V] Build $count apk(s)\033[0m"
exit 0
#!/usr/bin/env bash
#android_ndk="/opt/android-ndk/"
android_sdk="/opt/android-sdk/"
gmsh_svn="/home/maxime/Stage/gmsh"
getdp_svn="/home/maxime/Stage/getdp"
petsc_lib="/home/maxime/Stage/petsc"
cmake_default="-DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$gmsh_svn/contrib/mobile/utils/Android.cmake -DENABLE_BUILD_ANDROID=1 -DCMAKE_BUILD_TYPE=Release"
cmake_thread=6
function check {
return_code=$?
if [ $return_code != 0 ]; then
echo "last command failed (return $return_code)"
exit $return_cod
fi
}
# PETSc and BLAS/LAPACK
if [ ! -f "$petsc_lib/libpetsc.so" ] || [ ! -f "$petsc_lib/libf2clapack.so" ] || [ ! -f "$petsc_lib/libf2cblas.so" ] || [ ! -d "$petsc_lib/Headers/" ]; then
echo "ERROR: Need BLAS (f2c), LAPACK (f2c) and PETSc\n check android_petsc_reconfigure-armv7-android-linux.py for compile options\n"
exit 1
fi
# Gmsh
if [ ! -d "$gmsh_svn/build_android" ] || [ ! -f "$gmsh_svn/build_android/CMakeCache.txt" ]; then
mkdir $gmsh_svn/build_android
cd $gmsh_svn/build_android
cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_SHARED=1 -DENABLE_MATHEX=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_TETGEN=1 -DBLAS_LIB="$petsc_lib/libf2cblas.so" -DLAPACK_LIB="$petsc_lib/libf2clapack.so" ..
check
fi
cd $gmsh_svn/build_android
make androidGmsh -j$cmake_thread
check
make getHeaders
check
# GetDP
if [ ! -d "$getdp_svn/build_android" ] || [ ! -f "$getdp_svn/build_android/CMakeCache.txt" ]; then
mkdir $getdp_svn/build_android
cd $getdp_svn/build_android
cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_SHARED=1 -DENABLE_GMSH=1 -DENABLE_LEGACY=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_lib/Headers;$petsc_lib/Headers/mpiuni" -DPETSC_LIBS="$petsc_lib/libpetsc.so" -DGMSH_INC="$gmsh_svn/build_android/Headers/" -DGMSH_LIB="$gmsh_svn/build_android/libs/libGmsh.so" -DBLAS_LIB="$petsc_lib/libf2cblas.so" -DLAPACK_LIB="$petsc_lib/libf2clapack.so" ..
check
fi
cd $getdp_svn/build_android
make androidGetdp -j$cmake_thread
check
make getHeaders
check
# Onelab/Mobile interface
if [ ! -d "$gmsh_svn/contrib/mobile/build_android" ] || [ ! -f "$gmsh_svn/contrib/mobile/build_android/CMakeCache.txt" ]; then
mkdir $gmsh_svn/contrib/mobile/build_android
cd $gmsh_svn/contrib/mobile/build_android
cmake $cmake_default \
-DCMAKE_INCLUDE_PATH="$getdp_svn/" \
-DBLAS_LIB="$petsc_lib/libf2cblas.so" -DLAPACK_LIB="$petsc_lib/libf2clapack.so" \
-DPETSC_LIB="$petsc_lib/libpetsc.so" \
-DGMSH_INC="$gmsh_svn/build_android/Headers" -DGMSH_LIB="$gmsh_svn/build_android/libs/libGmsh.so" \
-DBENCHMARKSDIR="$getdp_svn/" \
-DGETDP_INC="$getdp_svn/build_android/Headers" -DGETDP_LIB="$getdp_svn/build_android/libs/libGetDP.so" ..
fi
cd $gmsh_svn/contrib/mobile/build_android
make androidOnelab -j$cmake_thread
check
make androidProject
check
# Onelab/Mobile package
cd Onelab
if [ ! -d "libs/armeabi-v7a/" ]; then mkdir -p libs/armeabi-v7a/; fi
target=1
while read line; do
read line # Name
target_name=$(echo $line | awk '{print $2}')
target_version=$(echo $line | awk '{print $3}')
read line # Type
read line # API level
target_api=$(echo $line | awk '{print $3}')
read line # Revision
read line # Skins
if [ $target_api -gt 14 ]; then
$android_sdk/tools/android update project --name Onelab --path . --target $target
check
ant release
check
break
fi
read line # HACK
target=$(($target+1))
done < <($android_sdk/tools/android list target | grep -A 5 "id:")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment