diff --git a/CMakeLists.txt b/CMakeLists.txt index f0fd5bae5e574f703f9ea1373ec7e7cce0965983..796f7b3f8dc7e9b99448fbed164c10f25eb008c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -475,14 +475,14 @@ endif(ENABLE_ONELAB) if(ENABLE_BUILD_IOS) find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake") if(NOT CMAKE_TOOLCHAIN_FILE) - message(SEND_ERROR "Cannot compile Gmsh for iOS without a toolchain") + message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain") endif(NOT CMAKE_TOOLCHAIN_FILE) endif(ENABLE_BUILD_IOS) if(ENABLE_BUILD_ANDROID) find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake") if(NOT CMAKE_TOOLCHAIN_FILE) - message(SEND_ERROR "Cannot compile Gmsh for android without android-cmake") + message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake") endif(NOT CMAKE_TOOLCHAIN_FILE) set(CMAKE_BUILD_TYPE Release) set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/contrib/mobile/CMakeLists.txt b/contrib/mobile/CMakeLists.txt index 6359a8e411fab2419ccf729bc7ce3aed19d78b28..2115bbe21a8e162d6842633261d3754d701fe0fa 100644 --- a/contrib/mobile/CMakeLists.txt +++ b/contrib/mobile/CMakeLists.txt @@ -2,8 +2,6 @@ cmake_minimum_required(VERSION 2.8 FATAL_ERROR) -set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options") - if(APPLE) option(ENABLE_BUILD_IOS "Build XCode project for iOS (ARM)" OFF) option(ENABLE_BUILD_IOS_EMULATOR "Build XCode project for iOS emulator (x86)" ON) @@ -79,8 +77,13 @@ if(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) endif(ENABLE_BUILD_IOS_EMULATOR OR ENABLE_BUILD_IOS) if(ENABLE_BUILD_ANDROID) - append_src(drawGModel.cpp) + append_src(drawContext.cpp) + append_src(movePosition.h) + append_src(Trackball.cpp) append_src(androidGModel.cpp) + append_src(drawString.cpp) + append_src(drawGeom.cpp) + append_src(drawMesh.cpp) # user must specify the android-cmake toolchain find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake") if(NOT CMAKE_TOOLCHAIN_FILE) @@ -116,4 +119,23 @@ if(ENABLE_BUILD_ANDROID) 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) + find_library(BLAS_LIB f2cblas PATH_SUFFIXES lib) + find_library(LAPACK_LIB f2clapack PATH_SUFFIXES lib) + set(ONELAB_LIB ${CMAKE_CURRENT_BINARY_DIR}/libs/libOnelab.so) + if(PETSC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) + add_custom_target(androidProject + COMMAND ${CMAKE_COMMAND} -E make_directory ${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 copy ${GMSH_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${GETDP_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${ONELAB_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${PETSC_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${LAPACK_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + COMMAND ${CMAKE_COMMAND} -E copy ${BLAS_LIB} ${CMAKE_CURRENT_BINARY_DIR}/Onelab/libs/armeabi-v7a/ + ) + else(PETSC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) + message(STATUS "Cannot make Android project without PETSc or without BLAS or without LAPACK or without \"Onelab library\"") + endif(PETSC_LIB AND BLAS_LIB AND LAPACK_LIB AND ONELAB_LIB) endif(ENABLE_BUILD_ANDROID) diff --git a/contrib/mobile/drawContext.h b/contrib/mobile/drawContext.h index 11a1570820d660b35b2fe622cc4f001ca6b15dbf..d3b860d4833ab789e855b5441bb5af45ce872ef6 100644 --- a/contrib/mobile/drawContext.h +++ b/contrib/mobile/drawContext.h @@ -19,6 +19,7 @@ #include "movePosition.h" +void drawArray(VertexArray *va, int type, bool colorArray=false); int onelab_cb(std::string); class drawContext{ diff --git a/contrib/mobile/drawGeom.cpp b/contrib/mobile/drawGeom.cpp index f642a51d9e113c85d45bb9cc86acad49a3c7b0d1..38991bff33be0bdde8ffd2e40552d281844e5980 100644 --- a/contrib/mobile/drawGeom.cpp +++ b/contrib/mobile/drawGeom.cpp @@ -16,6 +16,8 @@ #include <gmsh/Gmsh.h> #include <gmsh/GModel.h> +#include <gmsh/PView.h> +#include <gmsh/Context.h> #endif #include "drawContext.h" diff --git a/contrib/mobile/drawMesh.cpp b/contrib/mobile/drawMesh.cpp index 7257981a099002c86353d04b235dbb62952ab4c7..e9ea34e99f9d6853478a06455f403b346ce257e6 100644 --- a/contrib/mobile/drawMesh.cpp +++ b/contrib/mobile/drawMesh.cpp @@ -24,6 +24,7 @@ #include <gmsh/GFaceCompound.h> #include <gmsh/PView.h> #include <gmsh/PViewData.h> +#include <gmsh/Context.h> #endif #include "drawContext.h" diff --git a/contrib/mobile/utils/onelab_android.sh b/contrib/mobile/utils/onelab_android.sh index 7b242bb3b695eb73627c0bcd492ecef44d3ddf26..5a3684cb7d24f21c82040c52ea4e8d314ea2b6ac 100644 --- a/contrib/mobile/utils/onelab_android.sh +++ b/contrib/mobile/utils/onelab_android.sh @@ -13,10 +13,10 @@ if [ -z "$ANDROID_NDK" ]; then exit 1 fi if [ -z "$ANDROID_SDK" ]; then - echo "ERROR: You must specify android SDK path: export ANDROID_NDK=/path/to/android-sdk/" + 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 +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 @@ -28,7 +28,7 @@ if [ ! -d "getdp" ]; then svn --username gmsh --password gmsh co https://geuz.or 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/inclue/" ]; then +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 @@ -53,22 +53,18 @@ 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/ ../gmsh/contrib/mobile/ +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 ../gmsh/contrib/mobile/Android +cd Onelab/ if [ ! -d "libs/armeabi-v7a/" ]; then mkdir -p libs/armeabi-v7a/; fi cp $ANDROID_SDK/extras/android/support/v4/android-support-v4.jar libs/ checkError $? "Copy android support v4 fail (Android)" -cp ../../../../gmsh.android/libs/libGmsh.so libs/armeabi-v7a/ -cp ../../../../getdp.android/libs/libGetDP.so libs/armeabi-v7a/ -cp ../../../../onelab.android/libs/libOnelab.so libs/armeabi-v7a/ -cp ../../../../petsc.android/libpetsc.so libs/armeabi-v7a/ -cp ../../../../petsc.android/libf2clapack.so libs/armeabi-v7a/ -cp ../../../../petsc.android/libf2cblas.so libs/armeabi-v7a/ target=1 count=0 while read line; do