diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake
index bc0522c38f8fdcd91533e4fa3f6c64d0796f39f9..0d94802781bd5460ce45ecc7ea93c950ba4af676 100644
--- a/cmake/modules/RootBuildOptions.cmake
+++ b/cmake/modules/RootBuildOptions.cmake
@@ -67,14 +67,14 @@ ROOT_BUILD_OPTION(asimage ON "Image processing support, requires libAfterImage")
 ROOT_BUILD_OPTION(arrow OFF "Apache Arrow in memory columnar storage support")
 ROOT_BUILD_OPTION(astiff ON "Include tiff support in image processing")
 ROOT_BUILD_OPTION(bonjour OFF "Bonjour support, requires libdns_sd and/or Avahi")
-ROOT_BUILD_OPTION(builtin_afterimage OFF "Build included libAfterImage, or use system libAfterImage")
+ROOT_BUILD_OPTION(builtin_afterimage ON "Build included libAfterImage, or use system libAfterImage")
 ROOT_BUILD_OPTION(builtin_cfitsio OFF "Build the FITSIO library internally (downloading tarfile from the Web)")
 ROOT_BUILD_OPTION(builtin_davix OFF "Build the Davix library internally (downloading tarfile from the Web)")
 ROOT_BUILD_OPTION(builtin_fftw3 OFF "Build the FFTW3 library internally (downloading tarfile from the Web)")
 ROOT_BUILD_OPTION(builtin_freetype OFF "Build included libfreetype, or use system libfreetype")
-ROOT_BUILD_OPTION(builtin_ftgl OFF "Build included libFTGL, or use system libftgl")
+ROOT_BUILD_OPTION(builtin_ftgl ON "Build included libFTGL, or use system libftgl")
 ROOT_BUILD_OPTION(builtin_gl2ps OFF "Build included libgl2ps, or use system libgl2ps")
-ROOT_BUILD_OPTION(builtin_glew OFF "Build included libGLEW, or use system libGLEW")
+ROOT_BUILD_OPTION(builtin_glew ON "Build included libGLEW, or use system libGLEW")
 ROOT_BUILD_OPTION(builtin_gsl OFF "Build the GSL library internally (downloading tarfile from the Web)")
 ROOT_BUILD_OPTION(builtin_llvm ON "Build llvm internally")
 ROOT_BUILD_OPTION(builtin_clang ON "Build clang internally")
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
index 9d9d9c269cf87ff83f8e0a1a58b7b76b793058ab..7658d704d9bca93457e11569bd3cd0b3d7b852a4 100644
--- a/cmake/modules/SearchInstalledSoftware.cmake
+++ b/cmake/modules/SearchInstalledSoftware.cmake
@@ -52,36 +52,26 @@ if(builtin_zlib)
 endif()
 
 #---Check for Unuran ------------------------------------------------------------------
-if(unuran AND NOT builtin_unuran)
+if(NOT builtin_unuran)
   message(STATUS "Looking for Unuran")
-  if(fail-on-missing)
-    find_package(Unuran REQUIRED)
-  else()
-    find_package(Unuran)
-    if(NOT UNURAN_FOUND)
-      message(STATUS "Unuran not found. Switching on builtin_unuran option")
-      set(builtin_unuran ON CACHE BOOL "" FORCE)
-    endif()
+  find_Package(Unuran)
+  if(NOT UNURAN_FOUND)
+    message(STATUS "Unuran not found. Switching on builtin_unuran option")
+    set(builtin_unuran ON CACHE BOOL "" FORCE)
   endif()
 endif()
 
 #---Check for Freetype---------------------------------------------------------------
 if(NOT builtin_freetype)
   message(STATUS "Looking for Freetype")
-  if(fail-on-missing)
-    find_package(Freetype REQUIRED)
-  else()
-    find_package(Freetype)
-    if(NOT FREETYPE_FOUND)
-      message(STATUS "FreeType not found. Switching on builtin_freetype option")
-      set(builtin_freetype ON CACHE BOOL "" FORCE)
-    endif()
-  endif()
+  find_package(Freetype)
   if(FREETYPE_FOUND)
     set(FREETYPE_INCLUDE_DIR ${FREETYPE_INCLUDE_DIR_freetype2})
+  else()
+    message(STATUS "FreeType not found. Switching on builtin_freetype option")
+    set(builtin_freetype ON CACHE BOOL "" FORCE)
   endif()
 endif()
-
 if(builtin_freetype)
   set(freetype_version 2.6.1)
   message(STATUS "Building freetype version ${freetype_version} included in ROOT itself")
@@ -128,17 +118,13 @@ endif()
 #---Check for PCRE-------------------------------------------------------------------
 if(NOT builtin_pcre)
   message(STATUS "Looking for PCRE")
-  if(fail-on-missing)
-    find_package(PCRE REQUIRED)
+  find_package(PCRE)
+  if(PCRE_FOUND)
   else()
-    find_package(PCRE)
-    if(NOT PCRE_FOUND)
-      message(STATUS "PCRE not found. Switching on builtin_pcre option")
-      set(builtin_pcre ON CACHE BOOL "" FORCE)
-    endif()
+    message(STATUS "PCRE not found. Switching on builtin_pcre option")
+    set(builtin_pcre ON CACHE BOOL "" FORCE)
   endif()
 endif()
-
 if(builtin_pcre)
   set(pcre_version 8.37)
   message(STATUS "Building pcre version ${pcre_version} included in ROOT itself")
@@ -187,17 +173,12 @@ endif()
 #---Check for LZMA-------------------------------------------------------------------
 if(NOT builtin_lzma)
   message(STATUS "Looking for LZMA")
-  if(fail-on-missing)
-    find_package(LZMA REQUIRED)
-  else()
-    find_package(LZMA)
-    if(NOT LZMA_FOUND)
-      message(STATUS "LZMA not found. Switching on builtin_lzma option")
-      set(builtin_lzma ON CACHE BOOL "" FORCE)
-    endif()
+  find_package(LZMA)
+  if(NOT LZMA_FOUND)
+    message(STATUS "LZMA not found. Switching on builtin_lzma option")
+    set(builtin_lzma ON CACHE BOOL "" FORCE)
   endif()
 endif()
-
 if(builtin_lzma)
   set(lzma_version 5.2.1)
   set(LZMA_TARGET LZMA)
@@ -242,14 +223,10 @@ endif()
 #---Check for xxHash-----------------------------------------------------------------
 if(NOT builtin_xxhash)
   message(STATUS "Looking for xxHash")
-  if(fail-on-missing)
-    find_package(xxHash REQUIRED)
-  else()
-    find_package(xxHash)
-    if(NOT xxHash_FOUND)
-      message(STATUS "xxHash not found. Switching on builtin_xxhash option")
-      set(builtin_xxhash ON CACHE BOOL "" FORCE)
-    endif()
+  find_package(xxHash)
+  if(NOT xxHash_FOUND)
+    message(STATUS "xxHash not found. Switching on builtin_xxhash option")
+    set(builtin_xxhash ON CACHE BOOL "" FORCE)
   endif()
 endif()
 
@@ -261,14 +238,10 @@ endif()
 #---Check for LZ4--------------------------------------------------------------------
 if(NOT builtin_lz4)
   message(STATUS "Looking for LZ4")
-  if(fail-on-missing)
-    find_package(LZ4 REQUIRED)
-  else()
-    find_package(LZ4)
-    if(NOT LZ4_FOUND)
-      message(STATUS "LZ4 not found. Switching on builtin_lz4 option")
-      set(builtin_lz4 ON CACHE BOOL "" FORCE)
-    endif()
+  find_package(LZ4)
+  if(NOT LZ4_FOUND)
+    message(STATUS "LZ4 not found. Switching on builtin_lz4 option")
+    set(builtin_lz4 ON CACHE BOOL "" FORCE)
   endif()
 endif()
 
@@ -354,17 +327,12 @@ endif()
 #---Check for AfterImage---------------------------------------------------------------
 if(asimage AND NOT builtin_afterimage)
   message(STATUS "Looking for AfterImage")
-  if(fail-on-missing)
-    find_package(AfterImage REQUIRED)
-  else()
-    find_package(AfterImage)
-    if(NOT AFTERIMAGE_FOUND)
-      message(STATUS "AfterImage not found. Switching on builtin_afterimage option")
-      set(builtin_afterimage ON CACHE BOOL "" FORCE)
-    endif()
+  find_package(AfterImage)
+  if(NOT AFTERIMAGE_FOUND)
+    message(STATUS "AfterImage not found. Switching on builtin_afterimage option")
+    set(builtin_afterimage ON CACHE BOOL "" FORCE)
   endif()
 endif()
-
 if(builtin_afterimage)
   set(AFTERIMAGE_LIBRARIES ${CMAKE_BINARY_DIR}/lib/libAfterImage${CMAKE_STATIC_LIBRARY_SUFFIX})
   if(WIN32)
@@ -548,14 +516,10 @@ endif()
 #---Check for gl2ps ------------------------------------------------------------------
 if(opengl AND NOT builtin_gl2ps)
   message(STATUS "Looking for gl2ps")
-  if(fail-on-missing)
-    find_Package(gl2ps REQUIRED)
-  else()
-    find_Package(gl2ps)
-    if(NOT GL2PS_FOUND)
-      message(STATUS "gl2ps not found. Switching on builtin_gl2ps option")
-      set(builtin_gl2ps ON CACHE BOOL "" FORCE)
-    endif()
+  find_Package(gl2ps)
+  if(NOT GL2PS_FOUND)
+    message(STATUS "gl2ps not found. Switching on builtin_gl2ps option")
+    set(builtin_gl2ps ON CACHE BOOL "" FORCE)
   endif()
 endif()
 
@@ -635,16 +599,18 @@ if(ssl AND NOT builtin_openssl)
   else()
     find_package(OpenSSL)
     if(NOT OPENSSL_FOUND)
-      message(STATUS "Switching OFF 'ssl' option.")
-      set(ssl OFF CACHE BOOL "" FORCE)
+      if(WIN32) # builtin OpenSSL does not work on Windows
+        message(STATUS "Switching OFF 'ssl' option.")
+        set(ssl OFF CACHE BOOL "" FORCE)
+      else()
+        message(STATUS "OpenSSL not found, switching ON 'builtin_openssl' option.")
+        set(builtin_openssl ON CACHE BOOL "" FORCE)
+      endif()
     endif()
   endif()
 endif()
 
 if(builtin_openssl)
-  if(WIN32)
-    message(FATAL_ERROR "The builtin OpenSSL in ROOT is not supported on Windows.")
-  endif()
   list(APPEND ROOT_BUILTINS OpenSSL)
   add_subdirectory(builtins/openssl)
 endif()
@@ -836,15 +802,11 @@ if(fitsio OR builtin_cfitsio)
     set(CFITSIO_TARGET CFITSIO)
   else()
     message(STATUS "Looking for CFITSIO")
-    if(fail-on-missing)
-      find_package(CFITSIO REQUIRED)
-    else()
-      find_package(CFITSIO)
-      if(NOT CFITSIO_FOUND)
-        message(STATUS "CFITSIO not found. Switching off 'fitsio' option.")
-        message(STATUS "Please enable the option 'builtin_cfitsio' to build the library internally.")
-        set(fitsio OFF CACHE BOOL "" FORCE)
-      endif()
+    find_package(CFITSIO)
+    if(NOT CFITSIO_FOUND)
+      message(STATUS "CFITSIO not found. You can enable the option 'builtin_cfitsio' to build the library internally'")
+      message(STATUS "                   For the time being switching off 'fitsio' option")
+      set(fitsio OFF CACHE BOOL "" FORCE)
     endif()
   endif()
 endif()
@@ -861,15 +823,11 @@ endif()
 
 #---Monalisa support----------------------------------------------------------------
 if(monalisa)
-  if(fail-on-missing)
-    find_package(Monalisa REQUIRED)
-  else()
-    find_package(Monalisa)
-    if(NOT MONALISA_FOUND)
-      message(STATUS "Monalisa not found. Set variable MONALISA_DIR to point to your Monalisa installation")
-      message(STATUS "For the time being switching OFF 'monalisa' option")
-      set(monalisa OFF CACHE BOOL "" FORCE)
-    endif()
+  find_package(Monalisa)
+  if(NOT MONALISA_FOUND)
+    message(STATUS "Monalisa not found. Set variable MONALISA_DIR to point to your Monalisa installation")
+    message(STATUS "For the time being switching OFF 'monalisa' option")
+    set(monalisa OFF CACHE BOOL "" FORCE)
   endif()
 endif()
 
@@ -1139,8 +1097,16 @@ if(davix AND NOT builtin_davix)
   else()
     find_package(Davix 0.6.4)
     if(NOT DAVIX_FOUND)
-      message(STATUS "Davix not found, switching OFF 'davix' option.")
-      set(davix OFF CACHE BOOL "" FORCE)
+      find_package(libuuid)
+      find_package(LibXml2)
+      find_package(OpenSSL)
+      if(UUID_FOUND AND LIBXML2_FOUND AND (OPENSSL_FOUND OR builtin_openssl))
+        message(STATUS "Davix not found, switching ON 'builtin_davix' option.")
+        set(builtin_davix ON CACHE BOOL "" FORCE)
+      else()
+        message(STATUS "Davix dependencies not found, switching OFF 'davix' option.")
+        set(davix OFF CACHE BOOL "" FORCE)
+      endif()
     endif()
   endif()
 endif()
@@ -1172,19 +1138,30 @@ if (jemalloc)
 endif()
 
 #---Check for TBB---------------------------------------------------------------------
-if(imt AND NOT builtin_tbb)
-  message(STATUS "Looking for TBB")
-  if(fail-on-missing)
-    find_package(TBB 4.3 REQUIRED)
-  else()
-    find_package(TBB 4.3)
+if(imt)
+  if(NOT builtin_tbb)
+    message(STATUS "Looking for TBB")
+    find_package(TBB)
+    if(TBB_FOUND)
+      if(${TBB_VERSION} VERSION_LESS 4.3)
+        if(fail-on-missing)
+          message(FATAL_ERROR "TBB version < 4.3. You can enable the option 'builtin_tbb' to build the library internally")
+        else()
+          message(STATUS "TBB version < 4.3. Switching on builtin_tbb option")
+          set(builtin_tbb ON CACHE BOOL "" FORCE)
+        endif()
+      endif()
+    endif()  
     if(NOT TBB_FOUND)
-      message(STATUS "TBB not found. Switching of imt option")
-      set(imt OFF CACHE BOOL "" FORCE)
+      if(fail-on-missing)
+        message(FATAL_ERROR "TBB not found. You can enable the option 'builtin_tbb' to build the library internally")
+      else()
+        message(STATUS "TBB not found. Switching on builtin_tbb option")
+        set(builtin_tbb ON CACHE BOOL "" FORCE)
+      endif()
     endif()
   endif()
 endif()  
-
 if(builtin_tbb)
   set(tbb_version 2017_U5)
   if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
@@ -1384,21 +1361,16 @@ elseif(veccore)
   if(vc)
     set(VecCore_COMPONENTS Vc)
   endif()
-  if(fail-on-missing)
-    find_package(VecCore 0.4.2 CONFIG QUIET REQUIRED COMPONENTS ${VecCore_COMPONENTS})
+  find_package(VecCore 0.4.2 CONFIG QUIET COMPONENTS ${VecCore_COMPONENTS})
+  if(NOT VecCore_FOUND)
+    message(STATUS "VecCore not found, switching on 'builtin_veccore' option.")
+    set(builtin_veccore ON CACHE BOOL "" FORCE)
   else()
-    find_package(VecCore 0.4.2 CONFIG QUIET COMPONENTS ${VecCore_COMPONENTS})
-    if(NOT VecCore_FOUND)
-      message(STATUS "VecCore not found, switching OFF 'veccore' option.")
-      set(veccore OFF CACHE BOOL "" FORCE)
-    endif()
-  endif()
-  if(VecCore_FOUND)
     set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES ${VecCore_INCLUDE_DIRS})
   endif()
 endif()
 
-if(builtin_veccore)
+if(veccore AND NOT VecCore_FOUND)
   set(VecCore_VERSION "0.4.2")
   set(VecCore_PROJECT "VecCore-${VecCore_VERSION}")
   set(VecCore_SRC_URI "${lcgpackages}/${VecCore_PROJECT}.tar.gz")
@@ -1547,13 +1519,10 @@ endif()
 
 if(tmva AND imt)
   message(STATUS "Looking for BLAS for optional parts of TMVA")
-  if(fail-on-missing)
-    find_package(BLAS REQUIRED)
-  else()
-    find_package(BLAS)
-  endif()
+  find_package(BLAS)
 endif()
 
+
 #---Download googletest--------------------------------------------------------------
 if (testing)
   # FIXME: Remove our version of gtest in roottest. We can reuse this one.