build(cmake): create initial `CMakeLists.txt`
This change adds the initial `CMakeLists.txt` file, which represents
our brand new build system entrypoint.
CMake 3.20 has been chosen as our supported CMake version, as it is
reasonably recent (allowing us to write more expressive CMake list
files) while still being relatively easy to acquire.
Some minor changes to our documentation configuration have also been
made to allow us to effectively document the build system, including
the addition of Intersphinx and the CMake Sphinx domain. Combined,
these allow us to link to the official CMake documentation and to
provide semantic CMake documentation.
Change-Id: I961ec1b51492ce2c77732a3c23cbb2f1de7ff805
Signed-off-by: Chris Kay <chris.kay@arm.com>
Co-authored-by: Balint Dobszay <balint.dobszay@arm.com>
Co-authored-by: Bence Szépkúti <bence.szepkuti@arm.com>
Co-authored-by: Gyorgy Szing <gyorgy.szing@arm.com>
Co-authored-by: Jack Bond-Preston <jack.bond-preston@arm.com>
diff --git a/docs/cmake/manual/variables.rst b/docs/cmake/manual/variables.rst
new file mode 100644
index 0000000..e61ede6
--- /dev/null
+++ b/docs/cmake/manual/variables.rst
@@ -0,0 +1,63 @@
+Variables
+=========
+
+.. default-domain:: cmake
+
+.. contents::
+
+This page documents variables that are provided by the build system, grouped by
+the component that manages them. For general information on variables in CMake,
+see the :ref:`Variables <CMake Language Variables>` section of the
+:manual:`cmake-language(7) <manual:cmake-language(7)>` manual.
+
+Intrinsic Variables
+-------------------
+
+Variables defined by CMake, but which have a value or meaning defined by the
+Trusted Firmware-A build system. For documentation on *all* intrinsic CMake
+variables, see the :manual:`cmake-variables(7) <manual:cmake-variables(7)>`
+manual.
+
+.. toctree::
+ :glob:
+ :maxdepth: 1
+
+Common Variables
+----------------
+
+Variables which are always defined.
+
+.. toctree::
+ :glob:
+ :maxdepth: 1
+
+ variable/common/*
+
+Bootloader Variables
+--------------------
+
+Variables defined by individual bootloader images. These variables may not be
+defined if the bootloader image is not compatible with the platform.
+
+Library Variables
+-----------------
+
+Variables defined by individual libraries and other non-core components. These
+variables may not be defined if the library or component is not being included
+in the build.
+
+Driver Variables
+----------------
+
+Variables defined by individual drivers. These variables may not be defined if
+the driver is not being included in the build.
+
+Platform Variables
+------------------
+
+Variables defined by individual platforms. These variables may not be defined if
+the platform is not being included in the build.
+
+--------------
+
+*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*