MLECO-3232: Add basic cmake presets

Assuming cmake 3.21 adds basic configuration and build presets:
* Target mps3 board with gcc
* Target mps3 board with armclang
* Target simple platform with gcc
* Target simple platform with armclang
* Target native build system
Adds test preset for native build to run default ctests.
Adds respective doc section to building instructions.

Note: hidden configurationPresets are to be moved to respective project
directories once cmake 3.24 is supported in the codebase and preset
include is supported.
Note: it is encouraged to create a personal CMakeUserPresets.json with
personal preferences like specific `LOG_LEVEL` and `jobs` for faster
compilation time.

Usage example:
cmake --preset=mps3-gcc

Signed-off-by: Maksims Svecovs <maksims.svecovs@arm.com>
Change-Id: I07a8861ed91160cc3f5167e16be45a921b60a285
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 0000000..491a245
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,196 @@
+{
+        "version": 3,
+        "cmakeMinimumRequired": {
+                "major": 3,
+                "minor": 21,
+                "patch": 0
+        },
+        "configurePresets": [
+                {
+                        "name": "base",
+                        "description": "Base configuration, sets build directory.",
+                        "hidden": true,
+                        "generator": "Unix Makefiles",
+                        "binaryDir": "${sourceDir}/build-${presetName}"
+                },
+                {
+                        "name": "gcc-toolchain",
+                        "description": "Use gcc toolchain.",
+                        "hidden": true,
+                        "cacheVariables": {
+                                "CMAKE_TOOLCHAIN_FILE": {
+                                        "type": "STRING",
+                                        "value": "${sourceDir}/scripts/cmake/toolchains/bare-metal-gcc.cmake"
+                                }
+                        }
+                },
+                {
+                        "name": "armclang-toolchain",
+                        "description": "Use armclang toolchain.",
+                        "hidden": true,
+                        "cacheVariables": {
+                                "CMAKE_TOOLCHAIN_FILE": {
+                                        "type": "STRING",
+                                        "value": "${sourceDir}/scripts/cmake/toolchains/bare-metal-armclang.cmake"
+                                }
+                        }
+                },
+                {
+                        "name": "mps3-300",
+                        "description": "Target mps3 board, SSE-300 subsystem.",
+                        "hidden": true,
+                        "cacheVariables": {
+                                "TARGET_PLATFORM": {
+                                        "type": "STRING",
+                                        "value": "mps3"
+                                },
+                                "TARGET_SUBSYSTEM": {
+                                        "type": "STRING",
+                                        "value": "sse-300"
+                                }
+                        }
+                },
+                {
+                        "name": "mps3-310",
+                        "description": "Target mps3 board, SSE-310 subsystem.",
+                        "hidden": true,
+                        "cacheVariables": {
+                                "TARGET_PLATFORM": {
+                                        "type": "STRING",
+                                        "value": "mps3"
+                                },
+                                "TARGET_SUBSYSTEM": {
+                                        "type": "STRING",
+                                        "value": "sse-310"
+                                }
+                        }
+                },
+                {
+                        "name": "simple-platform",
+                        "description": "Target simple platform.",
+                        "hidden": true,
+                        "cacheVariables": {
+                                "TARGET_PLATFORM": {
+                                        "type": "STRING",
+                                        "value": "simple_platform"
+                                }
+                        }
+                },
+                {
+                        "name": "simple-gcc",
+                        "displayName": "simple-gcc",
+                        "description": "Target simple platform build with bare-metal gcc toolchain.",
+                        "inherits": [
+                                "base",
+                                "simple-platform",
+                                "gcc-toolchain"
+                        ]
+                },
+                {
+                        "name": "simple-clang",
+                        "displayName": "simple-armclang",
+                        "description": "Target simple platform build with bare-metal armclang toolchain.",
+                        "inherits": [
+                                "base",
+                                "simple-platform",
+                                "armclang-toolchain"
+                        ]
+                },
+                {
+                        "name": "mps3-300-gcc",
+                        "displayName": "mps3-300-gcc",
+                        "description": "Target mps3 board, SSE-300 subsystem with bare-metal gcc toolchain.",
+                        "inherits": [
+                                "base",
+                                "mps3-300",
+                                "gcc-toolchain"
+                        ]
+                },
+                {
+                        "name": "mps3-300-clang",
+                        "displayName": "mps3-300-armclang",
+                        "description": "Target mps3 board, SSE-300 subsystem with bare-metal armclang toolchain.",
+                        "inherits": [
+                                "base",
+                                "mps3-300",
+                                "armclang-toolchain"
+                        ]
+                },
+                {
+                        "name": "mps3-310-gcc",
+                        "displayName": "mps3-310-gcc",
+                        "description": "Target mps3 board, SSE-310 subsystem with bare-metal gcc toolchain.",
+                        "inherits": [
+                                "base",
+                                "mps3-310",
+                                "gcc-toolchain"
+                        ]
+                },
+                {
+                        "name": "mps3-310-clang",
+                        "displayName": "mps3-310-armclang",
+                        "description": "Target mps3 board, SSE-310 subsystem with bare-metal armclang toolchain.",
+                        "inherits": [
+                                "base",
+                                "mps3-310",
+                                "armclang-toolchain"
+                        ]
+                },
+                {
+                        "name": "native",
+                        "inherits": [
+                                "base"
+                        ],
+                        "displayName": "native",
+                        "description": "Target native system.",
+                        "cacheVariables": {
+                                "TARGET_PLATFORM": {
+                                        "type": "STRING",
+                                        "value": "native"
+                                },
+                                "CMAKE_TOOLCHAIN_FILE": {
+                                        "type": "STRING",
+                                        "value": "${sourceDir}/scripts/cmake/toolchains/native-gcc.cmake"
+                                }
+                        }
+                }
+        ],
+        "buildPresets": [
+                {
+                        "name": "native",
+                        "configurePreset": "native"
+                },
+                {
+                        "name": "mps3-300-gcc",
+                        "configurePreset": "mps3-300-gcc"
+                },
+                {
+                        "name": "mps3-300-clang",
+                        "configurePreset": "mps3-300-clang"
+                },
+                {
+                        "name": "mps3-310-gcc",
+                        "configurePreset": "mps3-310-gcc"
+                },
+                {
+                        "name": "mps3-310-clang",
+                        "configurePreset": "mps3-310-clang"
+                },
+                {
+                        "name": "simple-gcc",
+                        "configurePreset": "simple-gcc"
+                },
+                {
+                        "name": "simple-clang",
+                        "configurePreset": "simple-clang"
+                }
+        ],
+        "testPresets": [
+                {
+                        "name": "native-tests",
+                        "description": "native tests",
+                        "displayName": "Run native tests.",
+                        "configurePreset": "native"
+                }
+        ]
+}
\ No newline at end of file