diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97b9e3b0ec634458b5f8646d7c39a09ed938a3b5..b4b01bdf2af890a977bafc39a94399f84ae38b93 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,9 @@ opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices" ON)
 opt(OCC "Enable Open CASCADE geometrical models" ${DEFAULT})
 opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT})
 opt(ONELAB2 "Enable experimental ONELAB-Cloud solver interface" OFF)
+if(ENABLE_ONELAB2)
+  opt(UDT "Enable UDT library for ONELAB-Cloud" ON)
+endif(ENABLE_ONELAB2)
 opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT})
 opt(OPENMP "Enable OpenMP (experimental)" OFF)
 opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT})
@@ -513,6 +516,26 @@ if(ENABLE_NATIVE_FILE_CHOOSER)
   set_config_option(HAVE_NATIVE_FILE_CHOOSER "NativeFileChooser")
 endif(ENABLE_NATIVE_FILE_CHOOSER)
 
+if(ENABLE_ONELAB2)
+  if(ENABLE_UDT)
+    set_config_option(HAVE_UDT "UDT")
+    find_package(Threads REQUIRED)
+    find_path(UDT_INCLUDE_DIR NAMES udt.h PATH_SUFFIXES udt/)
+    find_library(UDT_LIBRARY NAMES udt)
+    if(UDT_INCLUDE_DIR AND UDT_LIBRARY AND CMAKE_THREAD_LIBS_INIT)
+      list(APPEND EXTERNAL_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+      list(APPEND EXTERNAL_LIBRARIES ${UDT_LIBRARY})
+      list(APPEND EXTERNAL_INCLUDES ${UDT_INCLUDE_DIR})
+    else(UDT_INCLUDE_DIR AND UDT_LIBRARY AND CMAKE_THREAD_LIBS_INIT)
+      message(FATAL_ERROR "Unable to find UDT library")
+    endif(UDT_INCLUDE_DIR AND UDT_LIBRARY AND CMAKE_THREAD_LIBS_INIT)
+  endif(ENABLE_UDT)
+  set_config_option(HAVE_ONELAB2 "ONELAB2")
+  set(GMSH_SRC ${GMSH_SRC};Fltk/onelab2Group.cpp;Fltk/onelab2Group.h)
+  add_subdirectory(contrib/onelab2)
+  include_directories(contrib/onelab2)
+endif(ENABLE_ONELAB2)
+
 if(ENABLE_ONELAB)
   set_config_option(HAVE_ONELAB "ONELAB")
   if(ENABLE_ONELAB_METAMODEL)
@@ -524,10 +547,6 @@ if(ENABLE_ONELAB)
             DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
 endif(ENABLE_ONELAB)
 
-if(ENABLE_ONELAB2)
-  set_config_option(HAVE_ONELAB2 "ONELAB2")
-endif(ENABLE_ONELAB2)
-
 if(ENABLE_BUILD_IOS)
   find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
   if(NOT CMAKE_TOOLCHAIN_FILE)