From 88af5589a9843144dfbdbbcad331e63a2ee08074 Mon Sep 17 00:00:00 2001
From: Tim Kaune <tim.kaune@gmx.de>
Date: Thu, 20 Mar 2025 11:33:35 +0100
Subject: [PATCH] Add new workflow presets

Update README
Add template file for user presets
---
 CMakePresets.json              | 59 +++++++++++++++++++++++---
 CMakeUserPresets.template.json | 76 ++++++++++++++++++++++++++++++++++
 README.md                      | 26 +++---------
 3 files changed, 134 insertions(+), 27 deletions(-)
 create mode 100644 CMakeUserPresets.template.json

diff --git a/CMakePresets.json b/CMakePresets.json
index 9d92976..cc056b6 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -1,8 +1,8 @@
 {
-  "version": 2,
+  "version": 6,
   "cmakeMinimumRequired": {
     "major": 3,
-    "minor": 20,
+    "minor": 25,
     "patch": 0
   },
   "configurePresets": [
@@ -45,15 +45,62 @@
     }
   ],
   "buildPresets": [
+    {
+      "name": "verbose",
+      "hidden": true,
+      "verbose": true
+    },
+    {
+      "name": "accelerate-lapacke32",
+      "inherits": [
+        "verbose"
+      ],
+      "displayName": "LAPACKE 32bit build linking against Accelerate and installation",
+      "configurePreset": "accelerate-lapacke32",
+      "targets": [
+        "install"
+      ]
+    },
+    {
+      "name": "accelerate-lapacke64",
+      "inherits": [
+        "verbose"
+      ],
+      "displayName": "LAPACKE 64bit build linking against Accelerate ILP64 interface and installation",
+      "configurePreset": "accelerate-lapacke64",
+      "targets": [
+        "install"
+      ]
+    }
+  ],
+  "workflowPresets": [
     {
       "name": "accelerate-lapacke32",
-      "displayName": "LAPACKE 32bit build linking against Accelerate",
-      "configurePreset": "accelerate-lapacke32"
+      "displayName": "LAPACKE 32bit build linking against Accelerate and installation",
+      "steps": [
+        {
+          "type": "configure",
+          "name": "accelerate-lapacke32"
+        },
+        {
+          "type": "build",
+          "name": "accelerate-lapacke32"
+        }
+      ]
     },
     {
       "name": "accelerate-lapacke64",
-      "displayName": "LAPACKE 64bit build linking against Accelerate ILP64 interface",
-      "configurePreset": "accelerate-lapacke64"
+      "displayName": "LAPACKE 64bit build linking against Accelerate ILP64 interface and installation",
+      "steps": [
+        {
+          "type": "configure",
+          "name": "accelerate-lapacke64"
+        },
+        {
+          "type": "build",
+          "name": "accelerate-lapacke64"
+        }
+      ]
     }
   ]
 }
diff --git a/CMakeUserPresets.template.json b/CMakeUserPresets.template.json
new file mode 100644
index 0000000..2b67a22
--- /dev/null
+++ b/CMakeUserPresets.template.json
@@ -0,0 +1,76 @@
+{
+  "version": 6,
+  "include": [
+    "./CMakePresets.json"
+  ],
+  "configurePresets": [
+    {
+      "name": "user-accelerate-lapacke32",
+      "inherits": [
+        "accelerate-lapacke32"
+      ],
+      "cacheVariables": {
+        "CMAKE_INSTALL_PREFIX": "/opt/custom"
+      },
+      "displayName": "User LAPACKE 32bit configuration linking against Accelerate"
+    },
+    {
+      "name": "user-accelerate-lapacke64",
+      "inherits": [
+        "accelerate-lapacke64"
+      ],
+      "cacheVariables": {
+        "CMAKE_INSTALL_PREFIX": "/opt/custom"
+      },
+      "displayName": "User LAPACKE 64bit configuration linking against Accelerate ILP64 interface"
+    }
+  ],
+  "buildPresets": [
+    {
+      "name": "user-accelerate-lapacke32",
+      "inherits": [
+        "accelerate-lapacke32"
+      ],
+      "displayName": "User LAPACKE 32bit build linking against Accelerate and installation",
+      "configurePreset": "user-accelerate-lapacke32"
+    },
+    {
+      "name": "user-accelerate-lapacke64",
+      "inherits": [
+        "accelerate-lapacke64"
+      ],
+      "displayName": "User LAPACKE 64bit build linking against Accelerate ILP64 interface and installation",
+      "configurePreset": "user-accelerate-lapacke64"
+    }
+  ],
+  "workflowPresets": [
+    {
+      "name": "user-accelerate-lapacke32",
+      "displayName": "User LAPACKE 32bit build linking against Accelerate and installation",
+      "steps": [
+        {
+          "type": "configure",
+          "name": "user-accelerate-lapacke32"
+        },
+        {
+          "type": "build",
+          "name": "user-accelerate-lapacke32"
+        }
+      ]
+    },
+    {
+      "name": "user-accelerate-lapacke64",
+      "displayName": "User LAPACKE 64bit build linking against Accelerate ILP64 interface and installation",
+      "steps": [
+        {
+          "type": "configure",
+          "name": "user-accelerate-lapacke64"
+        },
+        {
+          "type": "build",
+          "name": "user-accelerate-lapacke64"
+        }
+      ]
+    }
+  ]
+}
diff --git a/README.md b/README.md
index dffb921..45b684f 100644
--- a/README.md
+++ b/README.md
@@ -144,43 +144,27 @@ via Homebrew or MacPorts):
 - Fortran compiler (e.&nbsp;g. `gfortran` contained in the `gcc` package) to
   make it through the Reference LAPACK configure script
 
-### Configuration with CMake ###
+### Workflow with CMake ###
 
 Use the `accelerate-lapacke32` preset (or the `accelerate-lapacke64` preset for
 the ILP64 interface) with CMake:
 
 ```shell
-$ cmake --preset accelerate-lapacke32
+$ cmake --workflow --preset accelerate-lapacke32
 ```
 
 This will configure LAPACKE to be installed in your `~/.local` directory by
 default. If you prefer a different install location (e.&nbsp;g. `/opt/custom`),
-you can change it like this:
+you can change it using a `CMakeUserPresets.json` file, for which a template
+file is provided:
 
 ```shell
-$ cmake --preset accelerate-lapacke32 -D "CMAKE_INSTALL_PREFIX=/opt/custom"
+$ cmake --workflow --preset user-accelerate-lapacke32
 ```
 
 I wouldn't recommend installing to `/usr/local` (used by Homebrew on Intel Macs)
 or `/opt/local` (used by MacPorts).
 
-### Build and install ###
-
-When the configuration finished successfully (fingers crossed), you can build with the
-same preset name (`accelerate-lapacke32` or `accelerate-lapacke64`):
-
-```shell
-$ cmake --build --preset accelerate-lapacke32 --verbose
-```
-
-If everything worked as intended, linking the library should be successful. Now,
-you can install to the previously configured install prefix by building the
-install target:
-
-```shell
-$ cmake --build --preset accelerate-lapacke32 --verbose --target install
-```
-
 ### Using LAPACKE in another project ###
 
 You can use your self-compiled LAPACKE library in other projects by importing
-- 
GitLab