Partially update the installation docs

1. Update dependencies
2. Mention submodules

Change-Id: I2f238c92a3a1eeee3277e3ec6f973fc2d50fe008
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index 4feb1a4..3446ddb 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -4,18 +4,6 @@
 Installation
 ============
 
-Getting the source code
-=======================
-.. _section-source:
-
-You can start with the `latest stable release
-<http://ceres-solver.org/ceres-solver-2.2.0.tar.gz>`_ . Or if you want
-the latest version, you can clone the git repository
-
-.. code-block:: bash
-
-       git clone https://ceres-solver.googlesource.com/ceres-solver
-
 .. _section-dependencies:
 
 Dependencies
@@ -23,16 +11,17 @@
 
  .. note ::
 
-    Ceres Solver 2.2 requires a **fully C++17-compliant** compiler.
+    Starting with version 2.2, Ceres Solver requires a **fully
+    C++17-compliant** compiler.
 
 Ceres relies on a number of open source libraries, some of which are
 optional. For details on customizing the build process, see
 :ref:`section-customizing` .
 
-- `CMake <http://www.cmake.org>`_ 3.16 or later **required**.
+- `CMake <http://www.cmake.org>`_ (**required**) 3.16 or later.
 
 - `Eigen <http://eigen.tuxfamily.org/index.php?title=Main_Page>`_
-  3.3 or later **required**.
+  (**Required**) 3.3 or later.
 
   .. NOTE ::
 
@@ -40,37 +29,14 @@
     library. Please see the documentation for ``EIGENSPARSE`` for
     more details.
 
-- `glog <https://github.com/google/glog>`_ 0.3.5 or
-  later. **Recommended**
+- `Abseil <https://abseil.io/>`_ (**Required**) 20240116 or later.
 
-  ``glog`` is used extensively throughout Ceres for logging detailed
-  information about memory allocations and time consumed in various
-  parts of the solve, internal error conditions etc. The Ceres
-  developers use it extensively to observe and analyze Ceres's
-  performance. `glog <https://github.com/google/glog>`_ allows you to
-  control its behaviour from the command line. Starting with
-  ``-logtostderr`` you can add ``-v=N`` for increasing values of ``N``
-  to get more and more verbose and detailed information about Ceres
-  internals.
-
-  Ceres also ships with a minimal replacement of ``glog`` called
-  ``miniglog`` that can be enabled with the ``MINIGLOG`` build option.
-  ``miniglog`` is supplied for platforms which do not support the full
-  version of ``glog``.
-
-  In an attempt to reduce dependencies, it may be tempting to use
-  ``miniglog`` on platforms which already support ``glog``. While
-  there is nothing preventing the user from doing so, we strongly
-  recommend against it. ``miniglog`` has worse performance than
-  ``glog`` and is much harder to control and use.
-
-- `gflags <https://github.com/gflags/gflags>`_. Needed to build
-  examples and tests and usually a dependency for glog.
+- `GoogleTest <https://github.com/google/googletest>`_ (**Optional**;
+  Required if you wish to build and run tests) 1.14.0 or later.
 
 - `SuiteSparse <http://faculty.cse.tamu.edu/davis/suitesparse.html>`_
-  4.5.6 or later. Needed for solving large sparse linear
-  systems. **Optional; strongly recommended for large scale bundle
-  adjustment**
+  (**Optional; strongly recommended for large problems**) 4.5.6 or
+  later. Needed for solving large sparse linear systems.
 
   .. NOTE ::
 
@@ -80,17 +46,15 @@
      found TBB version. You can customize the searched TBB location
      with the ``TBB_ROOT`` variable.
 
-  A CMake native version of SuiteSparse that can be compiled on a variety of
-  platforms (e.g., using Visual Studio, Xcode, MinGW, etc.) is maintained by the
-  `CMake support for SuiteSparse <https://github.com/sergiud/SuiteSparse>`_
-  project.
+- `Apple's Accelerate sparse solvers
+  <https://developer.apple.com/documentation/accelerate/sparse_solvers>`_. (**Optional**)
 
-- `Apple's Accelerate sparse solvers <https://developer.apple.com/documentation/accelerate/sparse_solvers>`_.
   As of Xcode 9.0, Apple's Accelerate framework includes support for
-  solving sparse linear systems across macOS, iOS et al. **Optional**
+  solving sparse linear systems across macOS, iOS et al.
 
 - `BLAS <http://www.netlib.org/blas/>`_ and `LAPACK
-  <http://www.netlib.org/lapack/>`_ routines are needed by
+  <http://www.netlib.org/lapack/>`_ (**Optional but required for**
+  ``SuiteSparse``) ``LAPACK`` and ``BLAS`` routines are needed by
   ``SuiteSparse``, and optionally used by Ceres directly for some
   operations.
 
@@ -112,18 +76,50 @@
 
   For Windows things are much more complicated. `LAPACK For
   Windows <http://icl.cs.utk.edu/lapack-for-windows/lapack/>`_
-  has detailed instructions..
+  has detailed instructions.
 
-  **Optional but required for** ``SuiteSparse``.
 
-- `CUDA <https://developer.nvidia.com/cuda-toolkit>`_ If you have an
-  NVIDIA GPU then Ceres Solver can use it accelerate the solution of
-  the Gauss-Newton linear systems using the CMake flag ``USE_CUDA``.
-  Currently this support is limited to using the dense linear solvers that ship
-  with ``CUDA``. As a result GPU acceleration can be used to speed up
-  ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and
-  ``DENSE_SCHUR``. This also enables ``CUDA`` mixed precision solves
-  for ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``.  **Optional**.
+- `CUDA <https://developer.nvidia.com/cuda-toolkit>`_ and `cuDSS
+  <https://developer.nvidia.com/cudss>`_ (**Optional**)
+
+  If you have an NVIDIA GPU then Ceres Solver can use it accelerate
+  the solution of the Gauss-Newton linear systems using the CMake flag
+  ``USE_CUDA``.
+
+  This support depends on two libraries from NVIDIA `CUDA` and `cuDSS`.
+
+  If ``CUDA`` is available, Ceres Solver is able to use
+  GPU acceleration to speed up ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY``
+  and ``DENSE_SCHUR`` and ``CGNR``.  This also enables ``CUDA`` based
+  mixed precision solves for ``DENSE_NORMAL_CHOLESKY`` and
+  ``DENSE_SCHUR``.
+
+  Additionally if ``cuDSS`` is also available then GPU acceleration can
+  be used for ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR``.
+
+.. _section-source:
+
+Getting the source code
+=======================
+
+
+You can start with the `latest stable release
+<http://ceres-solver.org/ceres-solver-2.2.0.tar.gz>`_ . Or if you want
+the latest version, you can clone the git repository
+
+.. code-block:: bash
+
+   git clone https://ceres-solver.googlesource.com/ceres-solver
+
+If your system does not have recent enough versions of `Abseil
+<https://abseil.io/>`_ and/or `GoogleTest
+<https://github.com/google/googletest>`_, then you can use the
+versions included with Ceres Solver as submodules by using the command
+
+.. code-block:: bash
+
+   git clone --recurse-submodules https://github.com/ceres-solver/ceres-solver
+
 
 .. _section-linux:
 
@@ -136,7 +132,7 @@
 .. NOTE::
 
    Ceres Solver always supports the previous and current Ubuntu LTS
-   releases, currently 18.04 and 20.04, using the default Ubuntu
+   releases, currently 22.04 and 24.04 using the default Ubuntu
    repositories and compiler toolchain. Support for earlier versions
    is not guaranteed or maintained.