From 1eee3a9d287bfbddd192935f85eb835634b05a4a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 29 Oct 2016 20:50:22 +0000
Subject: [PATCH] umfpack for mobile app

---
 CMakeLists.txt                                |  2 +-
 contrib/mobile/iOS/Onelab/Onelab-Info.plist   |  4 ++--
 contrib/mobile/utils/android_build.sh         |  2 +-
 contrib/mobile/utils/ios_build.sh             |  2 +-
 contrib/mobile/utils/iossimulator_build.sh    |  2 +-
 contrib/mobile/utils/merge_static_libs.sh     | 20 +++++++++++++++++++
 .../utils/petsc_reconfigure_android_real.py   |  6 ++++--
 .../utils/petsc_reconfigure_ios_real.py       |  5 +++--
 .../petsc_reconfigure_iossimulator_real.py    |  7 +++++--
 doc/VERSIONS.txt                              |  3 +++
 10 files changed, 41 insertions(+), 12 deletions(-)
 create mode 100755 contrib/mobile/utils/merge_static_libs.sh

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ff32b8cf38..cf4113702d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,7 +94,7 @@ opt(ZIPPER "Enable Zip file compression/decompression" OFF)
 
 set(GMSH_MAJOR_VERSION 2)
 set(GMSH_MINOR_VERSION 14)
-set(GMSH_PATCH_VERSION 0)
+set(GMSH_PATCH_VERSION 1)
 set(GMSH_EXTRA_VERSION "" CACHE STRING "Gmsh extra version string")
 
 set(GMSH_VERSION "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}")
diff --git a/contrib/mobile/iOS/Onelab/Onelab-Info.plist b/contrib/mobile/iOS/Onelab/Onelab-Info.plist
index b050340511..6a95df7054 100644
--- a/contrib/mobile/iOS/Onelab/Onelab-Info.plist
+++ b/contrib/mobile/iOS/Onelab/Onelab-Info.plist
@@ -35,11 +35,11 @@
     <key>CFBundlePackageType</key>
     <string>APPL</string>
     <key>CFBundleShortVersionString</key>
-    <string>1.4.2</string>
+    <string>1.5.0</string>
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleVersion</key>
-    <string>1.4.2.0</string>
+    <string>1.5.0.0</string>
     <key>LSRequiresIPhoneOS</key>
     <true/>
     <key>UIFileSharingEnabled</key>
diff --git a/contrib/mobile/utils/android_build.sh b/contrib/mobile/utils/android_build.sh
index aad1059061..1477b11909 100755
--- a/contrib/mobile/utils/android_build.sh
+++ b/contrib/mobile/utils/android_build.sh
@@ -56,7 +56,7 @@ if [ ! -d "$getdp_svn/build_android" ] || [ ! -f "$getdp_svn/build_android/CMake
   mkdir $getdp_svn/build_android
 fi
 cd $getdp_svn/build_android
-PETSC_DIR= PETSC_ARCH= SLEPC_DIR= 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" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_lib/Headers/" -DSLEPC_LIB="$slepc_lib/libslepc.so" -DGMSH_INC="$gmsh_svn/build_android/Headers/" -DGMSH_LIB="$gmsh_svn/build_android/libs/libGmsh.so" -DBLAS_LAPACK_LIBRARIES="$petsc_lib/libf2cblas.so;$petsc_lib/libf2clapack.so" ..
+PETSC_DIR= PETSC_ARCH= SLEPC_DIR= cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_SHARED=1 -DENABLE_GMSH=1 -DENABLE_KERNEL=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_lib/Headers;$petsc_lib/Headers/mpiuni" -DPETSC_LIBS="$petsc_lib/libpetsc.so" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_lib/Headers/" -DSLEPC_LIB="$slepc_lib/libslepc.so" -DGMSH_INC="$gmsh_svn/build_android/Headers/" -DGMSH_LIB="$gmsh_svn/build_android/libs/libGmsh.so" -DBLAS_LAPACK_LIBRARIES="$petsc_lib/libf2cblas.so;$petsc_lib/libf2clapack.so" ..
 check
 make androidGetdp -j$cmake_thread
 check
diff --git a/contrib/mobile/utils/ios_build.sh b/contrib/mobile/utils/ios_build.sh
index 9830e41f6e..237223d6ff 100755
--- a/contrib/mobile/utils/ios_build.sh
+++ b/contrib/mobile/utils/ios_build.sh
@@ -54,7 +54,7 @@ ln -s . gmsh
 cd $getdp_svn && svn up
 mkdir -p $getdp_svn/build_ios
 cd $getdp_svn/build_ios
-PETSC_DIR= PETSC_ARCH= SLEPC_DIR= cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_GMSH=1 -DENABLE_LEGACY=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_framework/Headers/" -DPETSC_LIBS="$petsc_framework/petsc" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_framework/Headers/" -DSLEPC_LIB="$slepc_framework/slepc" -DGMSH_INC="$gmsh_framework/Headers/" -DGMSH_LIB="$gmsh_framework/Gmsh" ..
+PETSC_DIR= PETSC_ARCH= SLEPC_DIR= cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_GMSH=1 -DENABLE_KERNEL=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_framework/Headers/" -DPETSC_LIBS="$petsc_framework/petsc" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_framework/Headers/" -DSLEPC_LIB="$slepc_framework/slepc" -DGMSH_INC="$gmsh_framework/Headers/" -DGMSH_LIB="$gmsh_framework/Gmsh" ..
 check
 $build_cmd OTHER_CFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode" OTHER_CPLUSPLUSFLAGS="-miphoneos-version-min=8.0 -fembed-bitcode"
 check
diff --git a/contrib/mobile/utils/iossimulator_build.sh b/contrib/mobile/utils/iossimulator_build.sh
index 7a861c5a45..3e582a812c 100755
--- a/contrib/mobile/utils/iossimulator_build.sh
+++ b/contrib/mobile/utils/iossimulator_build.sh
@@ -54,7 +54,7 @@ ln -s . gmsh
 cd $getdp_svn && svn up
 mkdir -p $getdp_svn/build_iossimulator
 cd $getdp_svn/build_iossimulator
-PETSC_DIR= PETSC_ARCH= SLEPC_DIR= cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_GMSH=1 -DENABLE_LEGACY=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_framework/Headers/" -DPETSC_LIBS="$petsc_framework/petsc" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_framework/Headers/" -DSLEPC_LIB="$slepc_framework/slepc" -DGMSH_INC="$gmsh_framework/Headers/" -DGMSH_LIB="$gmsh_framework/Gmsh" ..
+PETSC_DIR= PETSC_ARCH= SLEPC_DIR= cmake $cmake_default -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_GMSH=1 -DENABLE_KERNEL=1 -DENABLE_PETSC=1 -DPETSC_INC="$petsc_framework/Headers/" -DPETSC_LIBS="$petsc_framework/petsc" -DENABLE_SLEPC=1 -DSLEPC_INC="$slepc_framework/Headers/" -DSLEPC_LIB="$slepc_framework/slepc" -DGMSH_INC="$gmsh_framework/Headers/" -DGMSH_LIB="$gmsh_framework/Gmsh" ..
 check
 $build_cmd OTHER_CFLAGS="-mios-simulator-version-min=8.0" OTHER_CPLUSPLUSFLAGS="-mios-simulator-version-min=8.0"
 check
diff --git a/contrib/mobile/utils/merge_static_libs.sh b/contrib/mobile/utils/merge_static_libs.sh
new file mode 100755
index 0000000000..839ee7d6b1
--- /dev/null
+++ b/contrib/mobile/utils/merge_static_libs.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+archs="i386 x86_64"
+#archs="armv7 armv7s arm64"
+
+mkdir -p tmplib
+for arch in $archs; do
+  mkdir -p $arch
+  for i in $*; do
+    lipo $i -thin $arch -o ${i}_${arch}
+    cd $arch
+    ar x ../${i}_${arch}
+    cd ..
+    rm ${i}_${arch}
+  done
+  ar r tmplib/${arch}.a ${arch}/*.o
+  rm -rf ${arch}
+done
+lipo -create tmplib/*.a -output merged_petsc_lib.a
+rm -rf tmplib
diff --git a/contrib/mobile/utils/petsc_reconfigure_android_real.py b/contrib/mobile/utils/petsc_reconfigure_android_real.py
index e444157327..3d5c6d9210 100755
--- a/contrib/mobile/utils/petsc_reconfigure_android_real.py
+++ b/contrib/mobile/utils/petsc_reconfigure_android_real.py
@@ -6,8 +6,9 @@
 ########   edit src/system/err.c to remove the exception throwing code
 ########   edit android_real/lib/petsc/conf/petscvariables:
 ########         remove the dylib stuff
-########         edit SL_LINKER_FUNCTION
-########         add "-Wl,--unresolved-symbols=ignore-all" to the linker flags to
+########         edit SL_LINKER_FUNCTION: SL_LINKER_FUNCTION = -shared
+########         edit SONAME_FUNCTION: SONAME_FUNCTION=$(1).$(2).so
+########         add "-Wl,--unresolved-symbols=ignore-all" to the PCC_LINKER_FLAGS to
 ########           fix undefined ref to 'main'
 
 if __name__ == '__main__':
@@ -53,6 +54,7 @@ if __name__ == '__main__':
     '--with-fc=0',
     '--with-lapack-lib=' + externallibs + 'libf2clapack.so',
     '--with-mpi=0',
+    '--download-suitesparse=yes',
     '--with-shared-libraries=1',
     '--with-x=0',
     '-I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include/',
diff --git a/contrib/mobile/utils/petsc_reconfigure_ios_real.py b/contrib/mobile/utils/petsc_reconfigure_ios_real.py
index 55c1ef349b..0931ffacaa 100755
--- a/contrib/mobile/utils/petsc_reconfigure_ios_real.py
+++ b/contrib/mobile/utils/petsc_reconfigure_ios_real.py
@@ -5,8 +5,9 @@ if __name__ == '__main__':
   sys.path.insert(0, os.path.abspath('config'))
   import configure
   configure_options = [
-    '--CFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=7.0 -arch armv7 -arch armv7s -arch arm64 -fembed-bitcode -DPETSC_BLASLAPACK_UNDERSCORE',
-    '--CXXFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=7.0 -arch armv7 -arch armv7s -arch arm64 -fembed-bitcode -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--CFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=8.0 -arch armv7 -arch armv7s -arch arm64 -fembed-bitcode -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--CXXFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=8.0 -arch armv7 -arch armv7s -arch arm64 -fembed-bitcode -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--download-suitesparse=yes',
     '--known-bits-per-byte=8',
     '--known-endian=little',
     '--known-level1-dcache-assoc=1',
diff --git a/contrib/mobile/utils/petsc_reconfigure_iossimulator_real.py b/contrib/mobile/utils/petsc_reconfigure_iossimulator_real.py
index 62ba1496dd..a784c1e5b3 100755
--- a/contrib/mobile/utils/petsc_reconfigure_iossimulator_real.py
+++ b/contrib/mobile/utils/petsc_reconfigure_iossimulator_real.py
@@ -5,10 +5,13 @@ if __name__ == '__main__':
   sys.path.insert(0, os.path.abspath('config'))
   import configure
   configure_options = [
-    '--CFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=7.0 -arch i386 -arch x86_64 -DPETSC_BLASLAPACK_UNDERSCORE',
-    '--CXXFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=7.0 -arch i386 -arch x86_64 -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--CFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=8.0 -arch i386 -arch x86_64 -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--CXXFLAGS=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=8.0 -arch i386 -arch x86_64 -DPETSC_BLASLAPACK_UNDERSCORE',
+    '--download-suitesparse=yes',
+    '--with-batch=1',
     '--with-blas-lib=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib',
     '--with-clanguage=cxx',
+    '--with-cmake=1',
     '--with-debugging=0',
     '--with-fc=0',
     '--with-ios=1',
diff --git a/doc/VERSIONS.txt b/doc/VERSIONS.txt
index 27a9b8dbad..5025bed631 100644
--- a/doc/VERSIONS.txt
+++ b/doc/VERSIONS.txt
@@ -1,3 +1,6 @@
+2.14.1 (October 29, 2016): fixed regression in periodic meshes; small bug fixes
+and code cleanups.
+
 2.14.0 (October 9, 2016): new Tochnog file format export; added ability to
 remove last command in scripts generated interactively; ONELAB 1.3 with
 usability and performance improvements; faster "Coherence Mesh".
-- 
GitLab