Kaynağa Gözat

Adding CMakePresets support for O3DE. (#9037)

The host platforms of Windows, Linux and MacOS has added support for
configure, build and test presets.
The non-host platforms of iOS and Android has supported for configure
and build presets.

Signed-off-by: lumberyard-employee-dm <[email protected]>

Filled out the CMakePresets configuration, build and test presets for all platforms.

A monolithic and non-monolithic preset has been added to each platform along with a unity/no-unity build preset and presets for the de-facto build generators for each platform.

The host platforms in addition have build presets for the Editor, AssetProcessor and the test suites of smoke and main.
Furthermore a test preset has been addded to run those test.

Signed-off-by: lumberyard-employee-dm <[email protected]>
lumberyard-employee-dm 3 yıl önce
ebeveyn
işleme
442bc3dd61

+ 18 - 0
CMakePresets.json

@@ -0,0 +1,18 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "cmake/Platform/Android/CMakePresets.json",
+        "cmake/Platform/iOS/CMakePresets.json",
+        "cmake/Platform/Linux/CMakePresets.json",
+        "cmake/Platform/Mac/CMakePresets.json",
+        "cmake/Platform/Windows/CMakePresets.json"
+    ],
+    "configurePresets": [],
+    "buildPresets": [],
+    "testPresets": []
+}

+ 1 - 0
Templates/DefaultProject/Template/.gitignore

@@ -3,3 +3,4 @@
 [Uu]ser/
 [Uu]ser_test*/
 _savebackup/
+CMakeUserPresets.json

+ 8 - 0
Templates/DefaultProject/Template/CMakePresets.json

@@ -0,0 +1,8 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    }
+}

+ 1 - 0
Templates/MinimalProject/Template/.gitignore

@@ -2,3 +2,4 @@
 [Cc]ache/
 [Uu]ser/
 _savebackup/
+CMakeUserPresets.json

+ 8 - 0
Templates/MinimalProject/Template/CMakePresets.json

@@ -0,0 +1,8 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    }
+}

+ 256 - 0
cmake/Platform/Android/CMakePresets.json

@@ -0,0 +1,256 @@
+{
+  "version": 4,
+  "cmakeMinimumRequired": {
+    "major": 3,
+    "minor": 23,
+    "patch": 0
+  },
+  "include": [
+    "../Common/CMakePresets.json"
+  ],
+  "configurePresets": [
+    {
+      "name": "android-default",
+      "displayName": "Android",
+      "description": "Android default configuration",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "inherits": [
+        "android-ninja",
+        "android-unity",
+        "android-non-monolithic"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-mono-default",
+      "displayName": "Android Monolithic with Unity and Ninja",
+      "description": "Configures Android to build the Monolithic permutation using Ninja with Unity builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "inherits": [
+        "android-ninja",
+        "android-unity",
+        "android-monolithic"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-unity",
+      "displayName": "Android Unity",
+      "description": "Android build which uses unity files",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android",
+      "inherits": [
+        "unity"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-no-unity",
+      "displayName": "Android without Unity",
+      "description": "Android build which uses unity files",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android_no_unity",
+      "inherits": [
+        "no-unity"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-non-monolithic",
+      "displayName": "Android Non-Monolithic",
+      "description": "Default configuration for non-monolithic builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "inherits": [
+        "non-monolithic"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-monolithic",
+      "displayName": "Android Monolithic",
+      "description": "Default configuration for monolithic builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android_mono",
+      "inherits": [
+        "monolithic"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-ninja",
+      "displayName": "Android Ninja",
+      "description": "Configure Android using with the Ninja generator",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android_ninja",
+      "inherits": [
+        "android-ninja-unity"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-ninja-unity",
+      "displayName": "Android Ninja Unity",
+      "description": "Configure Android with the Ninja generator + Unity Builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android_ninja_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "android-unity"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-ninja-no-unity",
+      "displayName": "Android Ninja without Unity",
+      "description": "Configure Android with the Ninja Generator without unity builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/Android/Toolchain_android.cmake",
+      "binaryDir": "${sourceDir}/build/android_ninja_no_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "android-no-unity"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    }
+  ],
+  "buildPresets": [
+    {
+      "name": "android-default",
+      "displayName": "Android",
+      "description": "Builds all targets for Android",
+      "configurePreset": "android-default",
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-install",
+      "displayName": "Android install",
+      "description": "Builds the \"install\" target for Android, which builds all target and runs the CMake --install step",
+      "configurePreset": "android-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-mono-default",
+      "displayName": "Android Monolithic",
+      "description": "Builds all targets for Android in the monolithic permutation",
+      "configurePreset": "android-mono-default",
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    },
+    {
+      "name": "android-mono-install",
+      "displayName": "Android Monolithic install",
+      "description": "Builds the \"install\" target for android monolithic permutation, which builds all target and runs the CMake --install step",
+      "configurePreset": "android-mono-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "inList",
+        "string": "${hostSystemName}",
+        "list": [
+          "Darwin",
+          "Linux",
+          "Windows"
+        ]
+      }
+    }
+  ],
+  "testPresets": []
+}

+ 199 - 0
cmake/Platform/Common/CMakePresets.json

@@ -0,0 +1,199 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "configurePresets": [
+        {
+            "name": "default",
+            "description": "Placeholder configuration that buildPresets and testPresets can inherit from",
+            "hidden": true
+        },
+        {
+            "name": "debug",
+            "description": "Specifies build type for single-configuration generators: debug",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": {
+                    "type": "STRING",
+                    "value": "debug"
+                }
+            }
+        },
+        {
+            "name": "release",
+            "description": "Specifies build type for single-configuration generators: release",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": {
+                    "type": "STRING",
+                    "value": "release"
+                }
+            }
+        },
+        {
+            "name": "profile",
+            "description": "Specifies build type for single-configuration generators: profile",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": {
+                    "type": "STRING",
+                    "value": "profile"
+                }
+            }
+        },
+        {
+            "name": "no-unity",
+            "description": "unity: off",
+            "hidden": true,
+            "cacheVariables": {
+                "LY_UNITY_BUILD": {
+                    "type": "BOOL",
+                    "value": "OFF"
+                }
+            }
+        },
+        {
+            "name": "unity",
+            "description": "unity: on",
+            "hidden": true,
+            "cacheVariables": {
+                "LY_UNITY_BUILD": {
+                    "type": "BOOL",
+                    "value": "ON"
+                }
+            }
+        },
+        {
+            "name": "non-monolithic",
+            "description": "non-monolithic permutation(Default)",
+            "hidden": true,
+            "cacheVariables": {
+                "LY_MONOLITHIC_GAME": {
+                    "type": "BOOL",
+                    "value": "OFF"
+                }
+            }
+        },
+        {
+            "name": "monolithic",
+            "description": "monolithic permutation(Monolithic)",
+            "hidden": true,
+            "cacheVariables": {
+                "LY_MONOLITHIC_GAME": {
+                    "type": "BOOL",
+                    "value": "ON"
+                }
+            }
+        },
+        {
+            "name": "ninja-multi-config",
+            "displayName": "Ninja Multi-Config",
+            "description": "Default build using Ninja Multi-Config generator",
+            "hidden": true,
+            "generator": "Ninja Multi-Config"
+        }
+    ],
+    "buildPresets": [
+        {
+            "name": "debug",
+            "description": "configuration: debug",
+            "hidden": true,
+            "configurePreset": "default",
+            "configuration": "debug"
+        },
+        {
+            "name": "release",
+            "description": "configuration: release",
+            "hidden": true,
+            "configurePreset": "default",
+            "configuration": "release"
+        },
+        {
+            "name": "profile",
+            "description": "configuration: profile",
+            "hidden": true,
+            "configurePreset": "default",
+            "configuration": "profile"
+        },
+        {
+            "name": "editor",
+            "description": "target: editor",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": [ "profile"],
+            "targets": "Editor"
+        },
+        {
+            "name": "assetprocessor",
+            "description": "target: asset processor",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": [ "profile"],
+            "targets": "AssetProcessor"
+        },
+        {
+            "name": "install",
+            "description": "Builds the dependencies install(Ninja, Make, etc...) or INSTALL(Visual Studio, Xcode) target. Afterwards run the CMake install step to install the build dependencies",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": [ "profile"],
+            "targets": "install"
+        },
+        {
+            "name": "test-default",
+            "description": "Builds the smoke and main test suite dependencies",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": [ "profile"],
+            "targets": ["TEST_SUITE_main", "TEST_SUITE_smoke"]
+        }
+    ],
+    "testPresets": [
+        {
+            "name": "test-default",
+            "description": "CTest preset which runs the smoke and main test suites",
+            "hidden": true,
+            "configurePreset": "default",
+            "output": {
+                "outputOnFailure": true,
+                "outputLogFile": "Ctest-${presetName}.log"
+            },
+            "execution": {
+                "noTestsAction": "error"
+            },
+            "filter": {
+                "include": {
+                    "label": "(SUITE_smoke|SUITE_main)"
+                },
+                "exclude": {
+                    "label": "(REQUIRES_gpu)"
+                }
+            }
+        },
+        {
+            "name": "test-default-debug",
+            "description": "Runs the smoke and main test suites using the debug configuration",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": ["test-default"],
+            "configuration": "debug",
+            "output": {
+                "outputLogFile": "Ctest-${presetName}-debug.log"
+            }
+        },
+        {
+            "name": "test-default-profile",
+            "description": "Runs the smoke and main test suites using the profile configuration",
+            "hidden": true,
+            "configurePreset": "default",
+            "inherits": ["test-default"],
+            "configuration": "profile",
+            "output": {
+                "outputLogFile": "Ctest-${presetName}-profile.log"
+            }
+        }
+    ]
+}

+ 478 - 0
cmake/Platform/Linux/CMakePresets.json

@@ -0,0 +1,478 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "../Common/CMakePresets.json"
+    ],
+    "configurePresets": [
+        {
+            "name": "linux-default",
+            "displayName": "Linux",
+            "description": "Linux default configuration",
+            "inherits": [
+                "linux-ninja",
+                "linux-unity",
+                "linux-non-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-mono-default",
+            "displayName": "Linux Monolithic with Unity and Ninja",
+            "description": "Configures Mac to build the Monolithic permutation using Ninja with Unity builds",
+            "inherits": [
+                "linux-ninja",
+                "linux-unity",
+                "linux-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-clang-default",
+            "displayName": "Linux Clang with Ninja and unity",
+            "description": "Configure Linux using the Ninja generator and clang compiler in non-monolithic",
+            "binaryDir": "${sourceDir}/build/linux_ninja_clang",
+            "inherits": [
+                "linux-ninja",
+                "linux-clang",
+                "linux-non-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-gcc-default",
+            "displayName": "Linux GCC with Ninja and unity",
+            "description": "Configure Linux using the Ninja generator and gcc compiler in non-monolithic",
+            "binaryDir": "${sourceDir}/build/linux_ninja_gcc",
+            "inherits": [
+                "linux-ninja",
+                "linux-gcc",
+                "linux-non-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-unity",
+            "displayName": "Linux Unity",
+            "description": "Linux build which uses unity files",
+            "binaryDir": "${sourceDir}/build/linux",
+            "inherits": [
+                "unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-no-unity",
+            "displayName": "Linux without Unity",
+            "description": "Linux build which uses unity files",
+            "binaryDir": "${sourceDir}/build/linux_no_unity",
+            "inherits": [
+                "no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-non-monolithic",
+            "displayName": "Linux Non-monolithic",
+            "description": "Default configuration for non-monolithic builds",
+            "inherits": [
+                "non-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-monolithic",
+            "displayName": "Linux Monolithic",
+            "description": "Default configuration for monolithic builds",
+            "binaryDir": "${sourceDir}/build/linux_mono",
+            "inherits": [
+                "monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-ninja",
+            "displayName": "Linux Ninja",
+            "description": "Configure Linux using with the Ninja generator",
+            "binaryDir": "${sourceDir}/build/linux_ninja",
+            "inherits": [
+                "ninja-multi-config"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-ninja-unity",
+            "displayName": "Linux Ninja Unity",
+            "description": "Configure Linux with the Ninja generator + Unity Builds",
+            "binaryDir": "${sourceDir}/build/linux_ninja_unity",
+            "inherits": [
+                "ninja-multi-config",
+                "linux-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-ninja-no-unity",
+            "displayName": "Linux Ninja without Unity",
+            "description": "Configure Linux with the Ninja Generator without unity builds",
+            "binaryDir": "${sourceDir}/build/linux_ninja_no_unity",
+            "inherits": [
+                "ninja-multi-config",
+                "linux-no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-makefiles",
+            "displayName": "Linux Unix Makefiles",
+            "description": "Configure Linux using with the Unix Makefiles generator",
+            "binaryDir": "${sourceDir}/build/linux_makefiles",
+            "generator": "Unix Makefiles",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-makefiles-unity",
+            "displayName": "Linux Unix Makefiles Unity",
+            "description": "Configure Linux with the Unix Makefiles generator + Unity Builds",
+            "binaryDir": "${sourceDir}/build/linux_makefiles_unity",
+            "generator": "Unix Makefiles",
+            "inherits": [
+                "linux-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-makefiles-no-unity",
+            "displayName": "Linux Unix Makefiles without Unity",
+            "description": "Configure Linux with the Unix Makefiles Generator without unity builds",
+            "binaryDir": "${sourceDir}/build/linux_makefiles_no_unity",
+            "generator": "Unix Makefiles",
+            "inherits": [
+                "linux-no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-clang",
+            "displayName": "Linux Clang",
+            "description": "Default Linux configuration using the clang compiler",
+            "binaryDir": "${sourceDir}/build/linux_clang",
+            "inherits":[
+                "linux-clang-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-clang-unity",
+            "displayName": "Linux Clang + Unity",
+            "description": "Configure Linux with the clang compiler + Unity Builds",
+            "binaryDir": "${sourceDir}/build/linux_clang_unity",
+            "cacheVariables": {
+                "CMAKE_C_COMPILER": {
+                    "type": "STRING",
+                    "value": "clang"
+                },
+                "CMAKE_CXX_COMPILER": {
+                    "type": "STRING",
+                    "value": "clang++"
+                }
+            },
+            "inherits": [
+                "linux-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-clang-no-unity",
+            "displayName": "Linux Clang without Unity",
+            "description": "Configure Linux with the clang compiler without unity builds",
+            "binaryDir": "${sourceDir}/build/linux_clang_no_unity",
+            "cacheVariables": {
+                "CMAKE_C_COMPILER": {
+                    "type": "STRING",
+                    "value": "clang"
+                },
+                "CMAKE_CXX_COMPILER": {
+                    "type": "STRING",
+                    "value": "clang++"
+                }
+            },
+            "inherits": [
+                "linux-no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-gcc",
+            "displayName": "Linux GCC",
+            "description": "Default Linux configuration using the gcc compiler",
+            "binaryDir": "${sourceDir}/build/linux_gcc",
+            "inherits":[
+                "linux-gcc-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-gcc-unity",
+            "displayName": "Linux GCC + Unity",
+            "description": "Configure Linux with the GCC compiler + Unity Builds",
+            "binaryDir": "${sourceDir}/build/linux_gcc_unity",
+            "cacheVariables": {
+                "CMAKE_C_COMPILER": {
+                    "type": "STRING",
+                    "value": "gcc"
+                },
+                "CMAKE_CXX_COMPILER": {
+                    "type": "STRING",
+                    "value": "g++"
+                }
+            },
+            "inherits": [
+                "linux-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-gcc-no-unity",
+            "displayName": "Linux GCC without Unity",
+            "description": "Configure Linux with the GCC compiler without unity builds",
+            "binaryDir": "${sourceDir}/build/linux_gcc_no_unity",
+            "cacheVariables": {
+                "CMAKE_C_COMPILER": {
+                    "type": "STRING",
+                    "value": "gcc"
+                },
+                "CMAKE_CXX_COMPILER": {
+                    "type": "STRING",
+                    "value": "g++"
+                }
+            },
+            "inherits": [
+                "linux-no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        }
+    ],
+    "buildPresets": [
+        {
+            "name": "linux-default",
+            "displayName": "Linux",
+            "description": "Builds all targets for Linux",
+            "configurePreset": "linux-default",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-install",
+            "displayName": "Linux install",
+            "description": "Builds the \"install\" target for Linux, which builds all target and runs the CMake --install step",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "install"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-mono-default",
+            "displayName": "Linux Monolithic",
+            "description": "Builds all targets for Linux in the monolithic permutation",
+            "configurePreset": "linux-mono-default",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-mono-install",
+            "displayName": "Linux Monolithic install",
+            "description": "Builds the \"install\" target for linux monolithic permutation, which builds all target and runs the CMake --install step",
+            "configurePreset": "linux-mono-default",
+            "inherits": [
+                "install"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-editor",
+            "displayName": "Linux Editor",
+            "description": "Builds the Editor application for Linux",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "editor"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-assetprocessor",
+            "displayName": "Linux AssetProcessor",
+            "description": "Builds the AssetProcessor application for Linux",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "assetprocessor"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-test",
+            "displayName": "Linux CTest",
+            "description": "Builds the TEST_SUITE_smoke/TEST_SUITE_main custom targets for Linux",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "test-default"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        }
+    ],
+    "testPresets": [
+        {
+            "name": "linux-test-default",
+            "displayName": "Linux CTest",
+            "description": "Runs the Smoke + Main Test Suite. Requires the linux-test build preset to have completed successfully",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "test-default"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-test-debug",
+            "displayName": "Linux CTest debug",
+            "description": "Runs the Smoke + Main Test Suite in debug configuration. Requires the linux-test build preset to have completed successfully",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "test-default-debug"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        },
+        {
+            "name": "linux-test-profile",
+            "displayName": "Linux CTest profile",
+            "description": "Runs the Smoke + Main Test Suite in profile configuration. Requires the linux-test build preset to have completed successfully",
+            "configurePreset": "linux-default",
+            "inherits": [
+                "test-default-profile"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Linux"
+            }
+        }
+    ]
+}

+ 322 - 0
cmake/Platform/Mac/CMakePresets.json

@@ -0,0 +1,322 @@
+{
+  "version": 4,
+  "cmakeMinimumRequired": {
+    "major": 3,
+    "minor": 23,
+    "patch": 0
+  },
+  "include": [
+    "../Common/CMakePresets.json"
+  ],
+  "configurePresets": [
+    {
+      "name": "mac-default",
+      "displayName": "Mac",
+      "description": "Mac default configuratoin",
+      "inherits": [
+        "mac-xcode",
+        "mac-unity",
+        "mac-non-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-mono-default",
+      "displayName": "Mac Monolithic with Unity and Xcode",
+      "description": "Configures Mac to build the Monolithic permutation using Xcode with Unity builds",
+      "inherits": [
+        "mac-ninja",
+        "mac-unity",
+        "mac-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-unity",
+      "displayName": "Mac Unity",
+      "description": "Mac build which uses unity files",
+      "binaryDir": "${sourceDir}/build/mac",
+      "inherits": [
+        "unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-no-unity",
+      "displayName": "Mac without Unity",
+      "description": "Mac build which uses unity files",
+      "binaryDir": "${sourceDir}/build/mac_no_unity",
+      "inherits": [
+        "no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-non-monolithic",
+      "displayName": "Mac Non-Monolithic",
+      "description": "Default configuration for non-monolithic builds",
+      "inherits": [
+        "non-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-monolithic",
+      "displayName": "Mac Monolithic",
+      "description": "Default configuration for monolithic builds",
+      "binaryDir": "${sourceDir}/build/mac_mono",
+      "inherits": [
+        "monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-xcode",
+      "displayName": "Mac Xcode",
+      "description": "Configure Mac using with the Xcode generator",
+      "binaryDir": "${sourceDir}/build/mac_xcode",
+      "generator": "Xcode",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-xcode-unity",
+      "displayName": "Mac Xcode Unity",
+      "description": "Configure Mac with the Xcode generator + Unity Builds",
+      "binaryDir": "${sourceDir}/build/mac_xcode_unity",
+      "generator": "Xcode",
+      "inherits": [
+        "mac-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-xcode-no-unity",
+      "displayName": "Mac Xcode without Unity",
+      "description": "Configure Mac with the Xcode Generator without unity builds",
+      "binaryDir": "${sourceDir}/build/mac_xcode_no_unity",
+      "generator": "Xcode",
+      "inherits": [
+        "mac-no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-ninja",
+      "displayName": "Mac Ninja",
+      "description": "Configure Mac using with the Ninja generator",
+      "binaryDir": "${sourceDir}/build/mac_ninja",
+      "inherits": [
+        "mac-ninja-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-ninja-unity",
+      "displayName": "Mac Ninja Unity",
+      "description": "Configure Mac with the Ninja generator + Unity Builds",
+      "binaryDir": "${sourceDir}/build/mac_ninja_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "mac-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-ninja-no-unity",
+      "displayName": "Mac Ninja without Unity",
+      "description": "Configure Mac with the Ninja Generator without unity builds",
+      "binaryDir": "${sourceDir}/build/mac_ninja_no_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "mac-no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    }
+  ],
+  "buildPresets": [
+    {
+      "name": "mac-default",
+      "displayName": "Mac",
+      "description": "Builds all targets for Mac",
+      "configurePreset": "mac-default",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-install",
+      "displayName": "Mac install",
+      "description": "Builds the \"install\" target for Mac, which builds all target and runs the CMake --install step",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-mono-default",
+      "displayName": "Mac Monolithic",
+      "description": "Builds all targets for Mac in the monolithic permutation",
+      "configurePreset": "mac-mono-default",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-mono-install",
+      "displayName": "Mac Monolithic install",
+      "description": "Builds the \"install\" target for mac monolithic permutation, which builds all target and runs the CMake --install step",
+      "configurePreset": "mac-mono-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-editor",
+      "displayName": "Mac Editor",
+      "description": "Builds the Editor application for Mac",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "editor"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-assetprocessor",
+      "displayName": "Mac AssetProcessor",
+      "description": "Builds the AssetProcessor application for Mac",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "assetprocessor"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-test",
+      "displayName": "Mac CTest",
+      "description": "Builds the TEST_SUITE_smoke/TEST_SUITE_main custom targets for Mac",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "test-default"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    }
+  ],
+  "testPresets": [
+    {
+      "name": "mac-test-default",
+      "displayName": "Mac CTest",
+      "description": "Runs the Smoke + Main Test Suite. Requires the mac-test build preset to have completed successfully",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "test-default"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-test-debug",
+      "displayName": "Mac CTest debug",
+      "description": "Runs the Smoke + Main Test Suite in debug configuration. Requires the mac-test build preset to have completed successfully",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "test-default-debug"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "mac-test-profile",
+      "displayName": "Mac CTest profile",
+      "description": "Runs the Smoke + Main Test Suite in profile configuration. Requires the mac-test build preset to have completed successfully",
+      "configurePreset": "mac-default",
+      "inherits": [
+        "test-default-profile"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    }
+  ]
+}

+ 312 - 0
cmake/Platform/Windows/CMakePresets.json

@@ -0,0 +1,312 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "../Common/CMakePresets.json"
+    ],
+    "configurePresets": [
+        {
+            "name": "windows-default",
+            "displayName": "Windows",
+            "description": "Default Windows",
+            "inherits": [
+                "windows-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-mono-default",
+            "displayName": "Windows Monolithic with Unity and Visual Studio",
+            "description": "Configures Windows to build the Monolithic permutation using Visual Studio with Unity builds",
+            "inherits": [
+                "windows-unity",
+                "windows-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-unity",
+            "displayName": "Windows Unity",
+            "description": "Windows build which uses unity files",
+            "binaryDir": "${sourceDir}/build/windows",
+            "inherits": [
+                "unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-no-unity",
+            "displayName": "Windows without Unity",
+            "description": "Windows build which uses unity files",
+            "binaryDir": "${sourceDir}/build/windows",
+            "inherits": [
+                "no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-non-monolithic",
+            "displayName": "Windows Non-Monolithic",
+            "description": "Default configuration for non-monolithic builds",
+            "inherits": [
+                "non-monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-monolithic",
+            "displayName": "Windows Monolithic",
+            "description": "Default configuration for monolithic builds",
+            "binaryDir": "${sourceDir}/build/windows_mono",
+            "inherits": [
+                "monolithic"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-vs",
+            "displayName": "Windows Visual Studio",
+            "description": "Configure Windows with the Visual Studio IDE",
+            "inherits": [
+                "windows-vs-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-vs-unity",
+            "displayName": "Windows Visual Studio Unity",
+            "description": "Configure Windows with the Visual Studio IDE + Unity Builds",
+            "inherits": [
+                "windows-vs2019",
+                "windows-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-vs-no-unity",
+            "displayName": "Windows Visual Studio without Unity",
+            "description": "Configure Windows with the Visual Studio IDE without unity builds",
+            "inherits": [
+                "windows-vs2019",
+                "windows-no-unity"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-vs2019",
+            "displayName": "Windows Visual Studio 2019",
+            "description": "Configure Windows to use the VS2019 generator",
+            "binaryDir": "${sourceDir}/build/windows_vs2019",
+            "generator": "Visual Studio 16",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-vs2022",
+            "displayName": "Windows Visual Studio 2022",
+            "description": "Configure Windows to use the VS2022 generator",
+            "binaryDir": "${sourceDir}/build/windows_vs2022",
+            "generator": "Visual Studio 17",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-ninja",
+            "displayName": "Windows Ninja",
+            "description": "Configure Windows using the Ninja Multi-Config genrator",
+            "binaryDir": "${sourceDir}/build/windows_ninja",
+            "inherits": [
+                "ninja-multi-config"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        }
+    ],
+    "buildPresets": [
+        {
+            "name": "windows-default",
+            "displayName": "Windows",
+            "description": "Builds all targets for Windows",
+            "configurePreset": "windows-default",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-install",
+            "displayName": "Windows install",
+            "description": "Builds the \"install\" target for windows, which builds all target and runs the CMake --install step",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "install"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-mono-default",
+            "displayName": "Windows Monolithic",
+            "description": "Builds all targets for Windows in the monolithic permutation",
+            "configurePreset": "windows-mono-default",
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-mono-install",
+            "displayName": "Windows Monolithic install",
+            "description": "Builds the \"install\" target for windows monolithic permutation, which builds all target and runs the CMake --install step",
+            "configurePreset": "windows-mono-default",
+            "inherits": [
+                "install"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-editor",
+            "displayName": "Windows Editor",
+            "description": "Builds the Editor application for Windows",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "editor"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-assetprocessor",
+            "displayName": "Windows AssetProcessor",
+            "description": "Builds the AssetProcessor application for windows",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "assetprocessor"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-test",
+            "displayName": "Windows CTest",
+            "description": "Builds the TEST_SUITE_smoke/TEST_SUITE_main custom targets for Windows",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "test-default"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        }
+    ],
+    "testPresets": [
+        {
+            "name": "windows-test-default",
+            "displayName": "Windows CTest",
+            "description": "Runs the Smoke + Main Test Suite. Requires the windows-test build preset to have completed successfully",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "test-default"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "windows-test-debug",
+            "displayName": "Windows CTest debug",
+            "description": "Runs the Smoke + Main Test Suite in debug configuration. Requires the windows-test build preset to have completed successfully",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "test-default-debug"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        },
+        {
+            "name": "Windows-test-profile",
+            "displayName": "Windows CTest profile",
+            "description": "Runs the Smoke + Main Test Suite in profile configuration. Requires the windows test build preset to have completed successfully",
+            "configurePreset": "windows-default",
+            "inherits": [
+                "test-default-profile"
+            ],
+            "condition": {
+                "type": "equals",
+                "lhs": "${hostSystemName}",
+                "rhs": "Windows"
+            }
+        }
+    ]
+}

+ 249 - 0
cmake/Platform/iOS/CMakePresets.json

@@ -0,0 +1,249 @@
+{
+  "version": 4,
+  "cmakeMinimumRequired": {
+    "major": 3,
+    "minor": 23,
+    "patch": 0
+  },
+  "include": [
+    "../Common/CMakePresets.json"
+  ],
+  "configurePresets": [
+    {
+      "name": "ios-default",
+      "displayName": "iOS",
+      "description": "iOS default configuration",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "inherits": [
+        "ios-xcode",
+        "ios-unity",
+        "ios-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-mono-default",
+      "displayName": "iOS Monolithic with Unity and Xcode",
+      "description": "Configures iOS to build the Monolithic permutation using Xcode with Unity builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "inherits": [
+        "ios-ninja",
+        "ios-unity",
+        "ios-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-unity",
+      "displayName": "iOS Unity",
+      "description": "iOS build which uses unity files",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios",
+      "inherits": [
+        "unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-no-unity",
+      "displayName": "iOS without Unity",
+      "description": "iOS build which uses unity files",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_no_unity",
+      "inherits": [
+        "no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-non-monolithic",
+      "displayName": "iOS Non-Monolithic",
+      "description": "Default configuration for non-monolithic builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "inherits": [
+        "non-monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-monolithic",
+      "displayName": "iOS Monolithic",
+      "description": "Default configuration for monolithic builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_mono",
+      "inherits": [
+        "monolithic"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-xcode",
+      "displayName": "iOS Xcode",
+      "description": "Configure iOS using with the Xcode generator",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_xcode",
+      "generator": "Xcode",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-xcode-unity",
+      "displayName": "iOS Xcode Unity",
+      "description": "Configure iOS with the Xcode generator + Unity Builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_xcode_unity",
+      "generator": "Xcode",
+      "inherits": [
+        "ios-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-xcode-no-unity",
+      "displayName": "iOS Xcode without Unity",
+      "description": "Configure iOS with the Xcode Generator without unity builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_xcode_no_unity",
+      "generator": "Xcode",
+      "inherits": [
+        "ios-no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-ninja",
+      "displayName": "iOS Ninja",
+      "description": "Configure iOS using with the Ninja generator",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_ninja",
+      "inherits": [
+        "ios-ninja-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-ninja-unity",
+      "displayName": "iOS Ninja Unity",
+      "description": "Configure iOS with the Ninja generator + Unity Builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_ninja_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "ios-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-ninja-no-unity",
+      "displayName": "iOS Ninja without Unity",
+      "description": "Configure iOS with the Ninja Generator without unity builds",
+      "toolchainFile": "${sourceDir}/cmake/Platform/iOS/Toolchain_ios.cmake",
+      "binaryDir": "${sourceDir}/build/ios_ninja_no_unity",
+      "inherits": [
+        "ninja-multi-config",
+        "ios-no-unity"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    }
+  ],
+  "buildPresets": [
+    {
+      "name": "ios-default",
+      "displayName": "iOS",
+      "description": "Builds all targets for iOS",
+      "configurePreset": "ios-default",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-install",
+      "displayName": "iOS install",
+      "description": "Builds the \"install\" target for iOS, which builds all target and runs the CMake --install step",
+      "configurePreset": "ios-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-mono-default",
+      "displayName": "iOS Mono",
+      "description": "Builds all targets for iOS in the monolithic permutation",
+      "configurePreset": "ios-mono-default",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    },
+    {
+      "name": "ios-mono-install",
+      "displayName": "iOS Mono install",
+      "description": "Builds the \"install\" target for ios monolithic permutation, which builds all target and runs the CMake --install step",
+      "configurePreset": "ios-mono-default",
+      "inherits": [
+        "install"
+      ],
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Darwin"
+      }
+    }
+  ],
+  "testPresets": []
+}