MLECO-3518: Separates CMakePrests

Separates CMakePresets to respective.
Adds options preset file with log-level and single-input for use-cases.
Adds use-case file with base build preset with all the targets.
Adds a configurable targets to all build presets.
Adds additional config/build preset to show-off options-presets.

Signed-off-by: Maksims Svecovs <maksims.svecovs@arm.com>
Change-Id: Id82ce9c5b8d7cc48b80d784141dc22efa2690222
diff --git a/CMakePresets.json b/CMakePresets.json
index 819dd01..3500329 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -1,195 +1,139 @@
 {
-        "version": 3,
-        "cmakeMinimumRequired": {
-                "major": 3,
-                "minor": 21,
-                "patch": 0
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "scripts/cmake/options-preset.json",
+        "scripts/cmake/platforms/platforms-preset.json",
+        "scripts/cmake/toolchains/toolchain-preset.json",
+        "source/use_case/usecase-preset.json"
+    ],
+    "configurePresets": [
+        {
+            "name": "simple-gcc",
+            "displayName": "simple-gcc",
+            "description": "Target simple platform build with bare-metal gcc toolchain.",
+            "inherits": [
+                "simple-platform",
+                "gcc-toolchain"
+            ]
         },
-        "configurePresets": [
-                {
-                        "name": "base",
-                        "description": "Base configuration, sets build directory.",
-                        "hidden": true,
-                        "generator": "Unix Makefiles"
-                },
-                {
-                        "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"
-                }
-        ]
+        {
+            "name": "simple-clang",
+            "displayName": "simple-armclang",
+            "description": "Target simple platform build with bare-metal armclang toolchain.",
+            "inherits": [
+                "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": [
+                "mps3-300-platform",
+                "gcc-toolchain"
+            ]
+        },
+        {
+            "name": "mps3-300-clang",
+            "displayName": "mps3-300-armclang",
+            "description": "Target mps3 board, SSE-300 subsystem with bare-metal armclang toolchain.",
+            "inherits": [
+                "mps3-300-platform",
+                "armclang-toolchain"
+            ]
+        },
+        {
+            "name": "mps3-310-gcc",
+            "displayName": "mps3-310-gcc",
+            "description": "Target mps3 board, SSE-310 subsystem with bare-metal gcc toolchain.",
+            "inherits": [
+                "mps3-310-platform",
+                "gcc-toolchain"
+            ]
+        },
+        {
+            "name": "mps3-310-clang",
+            "displayName": "mps3-310-armclang",
+            "description": "Target mps3 board, SSE-310 subsystem with bare-metal armclang toolchain.",
+            "inherits": [
+                "mps3-310-platform",
+                "armclang-toolchain"
+            ]
+        },
+        {
+            "name": "native",
+            "displayName": "native",
+            "description": "Target native system.",
+            "inherits": [
+                "native-platform",
+                "native-toolchain"
+            ]
+        },
+        {
+            "name": "mps3-300-gcc-custom",
+            "displayName": "mps3-300-gcc-custom",
+            "description": "mps3-300-gcc with debug enabled, default option for inference.",
+            "inherits": [
+                "mps3-300-gcc",
+                "log-debug",
+                "single-input"
+            ]
+        }
+    ],
+    "buildPresets": [
+        {
+            "name": "native",
+            "configurePreset": "native",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "mps3-300-gcc",
+            "configurePreset": "mps3-300-gcc",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "mps3-300-gcc-custom",
+            "configurePreset": "mps3-300-gcc-custom",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "mps3-300-clang",
+            "configurePreset": "mps3-300-clang",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "mps3-310-gcc",
+            "configurePreset": "mps3-310-gcc",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "mps3-310-clang",
+            "configurePreset": "mps3-310-clang",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "simple-gcc",
+            "configurePreset": "simple-gcc",
+            "inherits": "usecase-targets"
+        },
+        {
+            "name": "simple-clang",
+            "configurePreset": "simple-clang",
+            "inherits": "usecase-targets"
+        }
+    ],
+    "testPresets": [
+        {
+            "name": "native-tests",
+            "description": "native tests",
+            "displayName": "Run native tests.",
+            "configurePreset": "native"
+        }
+    ]
 }
diff --git a/scripts/cmake/options-preset.json b/scripts/cmake/options-preset.json
new file mode 100644
index 0000000..57b7a7d
--- /dev/null
+++ b/scripts/cmake/options-preset.json
@@ -0,0 +1,71 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+            "major": 3,
+            "minor": 23,
+            "patch": 0
+    },
+    "configurePresets": [
+        {
+            "name": "log-trace",
+            "hidden": true,
+            "cacheVariables": {
+                "LOG_LEVEL": {
+                    "type": "STRING",
+                    "value": "LOG_LEVEL_TRACE"
+                }
+            }
+        },
+        {
+            "name": "log-debug",
+            "hidden": true,
+            "cacheVariables": {
+                "LOG_LEVEL": {
+                    "type": "STRING",
+                    "value": "LOG_LEVEL_DEBUG"
+                }
+            }
+        },
+        {
+            "name": "log-info",
+            "hidden": true,
+            "cacheVariables": {
+                "LOG_LEVEL": {
+                    "type": "STRING",
+                    "value": "LOG_LEVEL_INFO"
+                }
+            }
+        },
+        {
+            "name": "log-warning",
+            "hidden": true,
+            "cacheVariables": {
+                "LOG_LEVEL": {
+                    "type": "STRING",
+                    "value": "LOG_LEVEL_WARN"
+                }
+            }
+        },
+        {
+            "name": "log-error",
+            "hidden": true,
+            "cacheVariables": {
+                "LOG_LEVEL": {
+                    "type": "STRING",
+                    "value": "LOG_LEVEL_ERROR"
+                }
+            }
+        },
+        {
+            "name": "single-input",
+            "hidden": true,
+            "description": "Use single default input data for each use case.",
+            "cacheVariables": {
+                "USE_SINGLE_INPUT": {
+                    "type": "BOOL",
+                    "value": "TRUE"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/scripts/cmake/platforms/platforms-preset.json b/scripts/cmake/platforms/platforms-preset.json
new file mode 100644
index 0000000..7a96d7a
--- /dev/null
+++ b/scripts/cmake/platforms/platforms-preset.json
@@ -0,0 +1,62 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+            "major": 3,
+            "minor": 23,
+            "patch": 0
+    },
+    "configurePresets": [
+        {
+            "name": "mps3-300-platform",
+            "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-platform",
+            "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": "native-platform",
+            "description": "Target native platform.",
+            "hidden": true,
+            "cacheVariables": {
+                "TARGET_PLATFORM": {
+                    "type": "STRING",
+                    "value": "native"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/scripts/cmake/toolchains/toolchain-preset.json b/scripts/cmake/toolchains/toolchain-preset.json
new file mode 100644
index 0000000..728547f
--- /dev/null
+++ b/scripts/cmake/toolchains/toolchain-preset.json
@@ -0,0 +1,43 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+            "major": 3,
+            "minor": 23,
+            "patch": 0
+    },
+    "configurePresets": [
+        {
+            "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": "native-toolchain",
+            "description": "Use native toolchain.",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_TOOLCHAIN_FILE": {
+                    "type": "STRING",
+                    "value": "${sourceDir}/scripts/cmake/toolchains/native-gcc.cmake"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/source/use_case/usecase-preset.json b/source/use_case/usecase-preset.json
new file mode 100644
index 0000000..330fc10
--- /dev/null
+++ b/source/use_case/usecase-preset.json
@@ -0,0 +1,27 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+            "major": 3,
+            "minor": 23,
+            "patch": 0
+    },
+    "buildPresets": [
+        {
+            "name": "usecase-targets",
+            "description": "Base preset for specifying use-case targets in build presets.",
+            "hidden": true,
+            "targets": [
+                "all",
+                "ethos-u-ad",
+                "ethos-u-asr",
+                "ethos-u-img_class",
+                "ethos-u-inference_runner",
+                "ethos-u-kws_asr",
+                "ethos-u-kws",
+                "ethos-u-noise_reduction",
+                "ethos-u-object_detection",
+                "ethos-u-vww"
+            ]
+        }
+    ]
+}
\ No newline at end of file