diff --git a/contrib/mobile/Android/AndroidManifest.xml b/contrib/mobile/Android/AndroidManifest.xml index a2fb0966bb707bb6aaefe92821786912520b284f..b036a829c47b6e944f6024c62617c59ca99851cc 100644 --- a/contrib/mobile/Android/AndroidManifest.xml +++ b/contrib/mobile/Android/AndroidManifest.xml @@ -15,7 +15,7 @@ android:theme="@style/AppTheme" android:logo="@drawable/ic_launcher" android:allowBackup="true" > - <activity android:name=".SplashScreen" + <activity android:name="org.geuz.onelab.SplashScreen" android:label="@string/title_activity_main" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <intent-filter> @@ -38,15 +38,15 @@ <data android:mimeType="application/zip" /> </intent-filter> </activity> - <activity android:name=".MainActivity" + <activity android:name="org.geuz.onelab.MainActivity" android:label="@string/title_activity_main"/> - <activity android:name=".ModelList" + <activity android:name="org.geuz.onelab.ModelList" android:label="@string/title_activity_main"/> - <activity android:name=".AboutActivity" + <activity android:name="org.geuz.onelab.AboutActivity" android:label="@string/title_activity_about"/> - <activity android:name=".PostProcessingActivity" + <activity android:name="org.geuz.onelab.PostProcessingActivity" android:label="@string/title_activity_main"/> - <activity android:name=".OptionsActivity" + <activity android:name="org.geuz.onelab.OptionsActivity" android:label="@string/title_activity_options"> </activity> </application> diff --git a/contrib/mobile/CMakeLists.txt b/contrib/mobile/CMakeLists.txt index 494066f230c6eb901409c619e292fdb4c1e65828..949b0983a870d2b4be439693945cc78ef023e460 100644 --- a/contrib/mobile/CMakeLists.txt +++ b/contrib/mobile/CMakeLists.txt @@ -33,12 +33,6 @@ foreach(SUBDIR ${BENCHMARKSDIR}) endif() endforeach() -macro(set_config_option VARNAME STRING) - set(${VARNAME} TRUE) - list(APPEND CONFIG_OPTIONS ${STRING}) - message(STATUS "Found " ${STRING}) -endmacro(set_config_option) - macro(append_src FILES) foreach(FILE ${FILES}) list(APPEND LIST ${FILE}) @@ -47,7 +41,7 @@ macro(append_src FILES) endmacro(append_src) if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) - # we need getdp framework + # GetDP framework find_path(GETDP_FRAMEWORK GetDP.framework) if(GETDP_FRAMEWORK) set(GETDP_FRAMEWORK ${GETDP_FRAMEWORK}/GetDP.framework) @@ -55,7 +49,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) else(GETDP_FRAMEWORK) message(SEND_ERROR "Could not find GetDP.framework") endif(GETDP_FRAMEWORK) - # we also need gmsh framework + # Gmsh framework find_path(GMSH_FRAMEWORK Gmsh.framework) if(GMSH_FRAMEWORK) set(GMSH_FRAMEWORK ${GMSH_FRAMEWORK}/Gmsh.framework) @@ -63,7 +57,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) else(GMSH_FRAMEWORK) message(SEND_ERROR "Could not find Gmsh.framework") endif(GMSH_FRAMEWORK) - # and we also need PETSc + # PETSc framework find_path(PETSC_FRAMEWORK petsc.framework) if(PETSC_FRAMEWORK) set(PETSC_FRAMEWORK ${PETSC_FRAMEWORK}/petsc.framework) @@ -71,7 +65,7 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) else(PETSC_FRAMEWORK) message(SEND_ERROR "Could not find petsc.framework") endif(PETSC_FRAMEWORK) - # and we also need SLEPc + # SLEPc framework find_path(SLEPC_FRAMEWORK slepc.framework) if(SLEPC_FRAMEWORK) set(SLEPC_FRAMEWORK ${SLEPC_FRAMEWORK}/slepc.framework) @@ -122,7 +116,6 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) endif() endforeach(IMG) endforeach(DIR) - if("${APPNAME}" STREQUAL "BBEMG") add_custom_command(TARGET xcodeProject POST_BUILD COMMAND sed -e \"s|Onelab|BBEMG|\" -i \"\" "${CMAKE_CURRENT_BINARY_DIR}/BBEMG/BBEMG.xcodeproj/project.pbxproj") @@ -137,13 +130,11 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) add_custom_command(TARGET xcodeProject POST_BUILD COMMAND sed -e \"s|onelab.info|www.bbemg.be|g\" -i \"\" "${CMAKE_CURRENT_BINARY_DIR}/BBEMG/BBEMG/AboutViewController.mm") endif("${APPNAME}" STREQUAL "BBEMG") - message(STATUS "") message(STATUS "${APPNAME} for iOS successfully configured:") - message(STATUS " * Run `make xcodeProject' to create the XCode project") - message(STATUS " * Then run `open ${APPNAME}/${APPNAME}.xcodeproj' to launch XCode") + message(STATUS " * Run 'make xcodeProject' to create the XCode project") + message(STATUS " * Then run 'open ${APPNAME}/${APPNAME}.xcodeproj' to launch XCode") message(STATUS "") - endif(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) if(ENABLE_BUILD_ANDROID) @@ -154,89 +145,93 @@ if(ENABLE_BUILD_ANDROID) append_src(drawString.cpp) append_src(drawGeom.cpp) append_src(drawMesh.cpp) - # user must specify the android-cmake toolchain + # android-cmake toolchain find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake") if(NOT CMAKE_TOOLCHAIN_FILE) - message(SEND_ERROR "Cannot compile onelab for android without android-cmake") + message(SEND_ERROR "Could not find Android CMake toolchain") endif(NOT CMAKE_TOOLCHAIN_FILE) - # we need getdp lib + # GetDP lib find_library(GETDP_LIB Getdp PATH_SUFFIXES lib) find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES include getdp include/getdp) if(GETDP_LIB AND GETDP_INC) list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB}) list(APPEND EXTERNAL_INCLUDES ${GETDP_INC}) - set_config_option(HAVE_GMSH "GetDP") else(GETDP_LIB AND GETDP_INC) - message(SEND_ERROR "Cannot compile onelab for Android without GetDP") + message(SEND_ERROR "Could not find GetDP library") endif(GETDP_LIB AND GETDP_INC) - # we also need gmsh lib + # Gmsh lib find_library(GMSH_LIB Gmsh PATH_SUFFIXES lib) find_path(GMSH_INC "Gmsh.h" PATH_SUFFIXES include gmsh include/gmsh) if(GMSH_LIB AND GMSH_INC) list(APPEND EXTERNAL_LIBRARIES ${GMSH_LIB}) list(APPEND EXTERNAL_INCLUDES ${GMSH_INC}) - set_config_option(HAVE_GMSH "Gmsh") else(GMSH_LIB AND GMSH_INC) - message(SEND_ERROR "Cannot compile onelab for Android without Gmsh") + message(SEND_ERROR "Could not find Gmsh library") endif(GMSH_LIB AND GMSH_INC) - # then we can make our library for Android + # Onelab android lib include_directories(${EXTERNAL_INCLUDES}) set(CMAKE_BUILD_TYPE Release) add_definitions(-DBUILD_ANDROID) set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/) add_library(androidOnelab SHARED ${ONELAB_SRC}) - set( LIBRARY_DEPS GLESv1_CM log) - set_target_properties(androidOnelab PROPERTIES OUTPUT_NAME ${APPNAME}) - target_link_libraries(androidOnelab ${LIBRARY_DEPS} ${EXTERNAL_LIBRARIES}) + set(LIBRARY_DEPS GLESv1_CM log) + set_target_properties(androidOnelab PROPERTIES OUTPUT_NAME Onelab) + target_link_libraries(androidOnelab ${LIBRARY_DEPS} ${EXTERNAL_LIBRARIES}) find_library(PETSC_LIB petsc PATH_SUFFIXES lib) + if(NOT PETSC_LIB) + message(SEND_ERROR "Could not find PETSc library") + endif(NOT PETSC_LIB) find_library(SLEPC_LIB slepc PATH_SUFFIXES lib) + if(NOT SLEPC_LIB) + message(SEND_ERROR "Could not find SLEPc library") + endif(NOT SLEPC_LIB) find_library(BLAS_LIB f2cblas PATH_SUFFIXES lib) + if(NOT BLAS_LIB) + message(SEND_ERROR "Could not find BLAS library") + endif(NOT BLAS_LIB) find_library(LAPACK_LIB f2clapack PATH_SUFFIXES lib) + if(NOT LAPACK_LIB) + message(SEND_ERROR "Could not find LAPACK library") + endif(NOT LAPACK_LIB) set(ONELAB_LIB ${CMAKE_CURRENT_BINARY_DIR}/libs/libOnelab.so) - if(PETSC_LIB AND SLEPC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) - add_custom_target(androidProject - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/ - 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}/${APPNAME}/ - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${GMSH_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${GETDP_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${ONELAB_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${PETSC_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${SLEPC_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${LAPACK_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - COMMAND ${CMAKE_COMMAND} -E copy ${BLAS_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ - ) - add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove_directory - ${CMAKE_CURRENT_BINARY_DIR}/models) - add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove - ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/res/raw/models.zip) - foreach(DIR ${BENCHMARKS}) - get_filename_component(DIRNAME ${DIR} NAME) - add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory + add_custom_target(androidProject + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/ + 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}/${APPNAME}/ + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${GMSH_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${GETDP_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${ONELAB_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${PETSC_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${SLEPC_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${LAPACK_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${BLAS_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/libs/armeabi-v7a/ + ) + add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove_directory + ${CMAKE_CURRENT_BINARY_DIR}/models) + add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove + ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/res/raw/models.zip) + foreach(DIR ${BENCHMARKS}) + get_filename_component(DIRNAME ${DIR} NAME) + add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${DIR} ${CMAKE_CURRENT_BINARY_DIR}/models/${DIRNAME}) - file(GLOB PNG ${DIR}/*.png) - foreach(IMG ${PNG}) - get_filename_component(IMGNAME ${IMG} NAME) - if(NOT (IMGNAME MATCHES ".*_128.png")) - add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove - "${CMAKE_CURRENT_BINARY_DIR}/models/${DIRNAME}/${IMGNAME}") - endif() - endforeach(IMG) - endforeach(DIR) - find_program(ZIP_COMMAND zip) - add_custom_command(TARGET androidProject POST_BUILD COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/models/ && zip -r + file(GLOB PNG ${DIR}/*.png) + foreach(IMG ${PNG}) + get_filename_component(IMGNAME ${IMG} NAME) + if(NOT (IMGNAME MATCHES ".*_128.png")) + add_custom_command(TARGET androidProject POST_BUILD COMMAND ${CMAKE_COMMAND} -E remove + "${CMAKE_CURRENT_BINARY_DIR}/models/${DIRNAME}/${IMGNAME}") + endif() + endforeach(IMG) + endforeach(DIR) + find_program(ZIP_COMMAND zip) + add_custom_command(TARGET androidProject POST_BUILD COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/models/ && zip -r ${CMAKE_CURRENT_BINARY_DIR}/${APPNAME}/res/raw/models.zip * --exclude=*.svn*) - message(STATUS "") message(STATUS "ONELAB for Android successfully configured:") - message(STATUS " * Run `make androidProject' to create the project") + message(STATUS " * Run 'make androidProject' to create the project") message(STATUS " * Then update android project with 'android update project --name ${APPNAME} --path ${APPNAME} --target [id] --subprojects'") - message(STATUS " * Finally you can build the app with ant 'ant debug'") + message(STATUS " * Finally build the app with ant 'ant debug'") message(STATUS "") - - else(PETSC_LIB AND SLEPC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) - message(STATUS "Cannot make Android project without PETSc, SLEPc, BLAS, LAPACK or ONELAB libraries") - endif(PETSC_LIB AND SLEPC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) endif(ENABLE_BUILD_ANDROID) diff --git a/contrib/mobile/utils/android_build.sh b/contrib/mobile/utils/android_build.sh index aefeae693dbdfcf48d76b28ade53fa0ad36092b6..9f4a26977304f7b7b00aa30f9bf26276e462c6a8 100755 --- a/contrib/mobile/utils/android_build.sh +++ b/contrib/mobile/utils/android_build.sh @@ -62,7 +62,7 @@ if [ ! -d "$gmsh_svn/contrib/mobile/build_android_${appname}" ]; then fi cd $gmsh_svn/contrib/mobile/build_android_${appname} -cmake $cmake_default \ +cmake $cmake_default -DAPPNAME:STRING=${appname} \ -DCMAKE_INCLUDE_PATH="$getdp_svn/" \ -DBLAS_LIB="$petsc_lib/libf2cblas.so" -DLAPACK_LIB="$petsc_lib/libf2clapack.so" \ -DPETSC_LIB="$petsc_lib/libpetsc.so" -DSLEPC_LIB="$slepc_lib/libslepc.so" \ @@ -75,42 +75,23 @@ check make androidProject check -# Potentially modify source tree for alternate branding -cd Onelab if [ $# -eq 1 ] ; then - # change package name - mv src/org/geuz/onelab/ src/org/geuz/$appname - mkdir src/org/geuz/onelab - mv src/org/geuz/$appname/Gmsh.java src/org/geuz/onelab - find . -type f -name '*.java' -not -name 'Gmsh.java' -exec sed -i "s/org\.geuz\.onelab/org\.geuz\.$appname/g" {} \; - sed -i "s/org\.geuz\.onelab/org\.geuz\.$appname/g" AndroidManifest.xml - grep -r -m 1 'Gmsh' src | cut -d ':' -f 1 | xargs -n 1 sed -i "s/org\.geuz\.onelab;/org\.geuz\.$appname;\n\nimport org.geuz.onelab.Gmsh;/" - # change app name - sed -i "s/<string name=\"app_name\">Onelab<\/string>/<string name=\"app_name\">$appname<\/string>/" res/values/strings.xml + cd $appname; + # change app name and icons + sed -e "s/package=\"org\.geuz\.onelab/package=\"org\.geuz\.$appname/" -i "" AndroidManifest.xml + sed -e "s/Onelab/$appname/" -i "" res/values/strings.xml + cp $HOME/tex/proposals/bbemg/icons/bbemg-logo-128x128.png res/drawable-hdpi/ic_launcher.png + cp $HOME/tex/proposals/bbemg/icons/bbemg-logo-64x64.png res/drawable-mdpi/ic_launcher.png + cp $HOME/tex/proposals/bbemg/icons/bbemg-logo-48x48.png res/drawable-ldpi/ic_launcher.png + $android_sdk/tools/android update project --name $appname --path . --target 1 +else + cd Onelab + $android_sdk/tools/android update project --name Onelab --path . --target 1 fi -# Onelab/Mobile package -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 -ge 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:") +check +ant release +check # to sign the APK: # cp utils/ant.properties build_android_Onelab/Onelab/ diff --git a/contrib/mobile/utils/make_icon_ios.sh b/contrib/mobile/utils/make_icon_ios.sh index 0be223a3ad5b717517796a5cf4cbebb77b7f31b6..ac4c0b7abbb86aee5f6dde71e9efe17a53c5e140 100755 --- a/contrib/mobile/utils/make_icon_ios.sh +++ b/contrib/mobile/utils/make_icon_ios.sh @@ -5,8 +5,8 @@ launch_source=../../../utils/icons/gmsh_128x128.png launch_source2=../../../utils/icons/gmsh_256x256.png bg=black -#icon_source=$HOME/tex/proposals/bbemg/bbemg-logo-twitter-white.png -#launch_source=$HOME/tex/proposals/bbemg/bbemg-logo-color-rgb.png +#icon_source=$HOME/tex/proposals/bbemg/icons/bbemg-logo-white.png +#launch_source=$HOME/tex/proposals/bbemg/icons/bbemg-logo-text.png #launch_source2=${launch_source} #bg=white