diff --git a/CMakeLists.txt b/CMakeLists.txt
index f29b978c2f287475b0ca02cf027692ef2b554658..a4c0c81754e9ae32c5967b7ee9edb1cfdfb317c7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1933,6 +1933,12 @@ if(ENABLE_PRIVATE_API)
       -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
   endforeach()
+  if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen
+    add_custom_command(TARGET get_headers POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy_directory contrib/eigen/Eigen
+        ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/Eigen
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  endif()
 endif()
 
 find_program(MAKEINFO makeinfo)
@@ -2010,6 +2016,12 @@ if(APPLE AND ENABLE_BUILD_LIB)
           ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
           WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
     endforeach()
+    if(HAVE_CONTRIB_EIGEN) # the private API depends on Eigen
+      add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND}
+          -E copy_directory contrib/eigen/Eigen
+          ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/Eigen
+          WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    endif()
   endif()
 endif()
 
diff --git a/contrib/mobile/Android/build.gradle b/contrib/mobile/Android/build.gradle
index fc82e6802c828bd7928343f5c4552fe11c2a01ab..97a66602a819afb1fee22ecf3fb8a16675b320c5 100644
--- a/contrib/mobile/Android/build.gradle
+++ b/contrib/mobile/Android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
        jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.0.0'
+        classpath 'com.android.tools.build:gradle:7.0.0'
     }
 }
 
diff --git a/contrib/mobile/utils/ios_build.sh b/contrib/mobile/utils/ios_build.sh
index 212c57aa093387feed9f46bc3bf32a14c14a5c27..ebe8b4980d9f4eee72d864ef6cac4cc040b1c49b 100755
--- a/contrib/mobile/utils/ios_build.sh
+++ b/contrib/mobile/utils/ios_build.sh
@@ -99,7 +99,7 @@ $headers_cmd
 mkdir -p $gmsh_framework/Headers
 cp $gmsh_git/build_${ios}/${buildtype}-${iphoneos}/libgmsh.a $gmsh_framework/gmsh
 cd $gmsh_framework/Headers
-cp $gmsh_git/build_${ios}/Headers/*.h $gmsh_git/build_${ios}/Headers/gmsh/* .
+cp -R $gmsh_git/build_${ios}/Headers/*.h $gmsh_git/build_${ios}/Headers/gmsh/* .
 ln -s . gmsh
 
 # build getdp framework