This is an automated email from Gerrit.

"R. Diez <[email protected]>" just uploaded a new patch set to Gerrit, which 
you can find at https://review.openocd.org/c/openocd/+/9471

-- gerrit

commit f69f79b3c2a2331fc2e7dce0d3413b2f8c35de19
Author: R. Diez <[email protected]>
Date:   Mon Feb 16 18:38:48 2026 +0100

    Add command 'is_version_at_least'
    
    Without this command, the user must parse the output of 'version',
    which is not trivial.
    
    Change-Id: I73a3dbbce3e3d65ba1f9aeeb8411bc553a4b1092
    Signed-off-by: R. Diez <[email protected]>

diff --git a/configure.ac b/configure.ac
index 39f5e074ed..12109d9167 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,18 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 AC_PREREQ([2.69])
-AC_INIT([openocd], [0.12.0+dev],
+
+m4_define([DEF_OPENOCD_VERSION_MAJOR],[0])
+m4_define([DEF_OPENOCD_VERSION_MINOR],[12])
+m4_define([DEF_OPENOCD_VERSION_REVISION],[0])
+m4_define([DEF_OPENOCD_VERSION],
+m4_defn([DEF_OPENOCD_VERSION_MAJOR]).\
+m4_defn([DEF_OPENOCD_VERSION_MINOR]).\
+m4_defn([DEF_OPENOCD_VERSION_REVISION]))
+
+AC_INIT([openocd], m4_defn([DEF_OPENOCD_VERSION])[+dev],
   [OpenOCD Mailing List <[email protected]>])
+
 AC_CONFIG_SRCDIR([src/openocd.c])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -744,6 +754,16 @@ AS_IF([test "x${has_environ}" != "xyes" ], [
 
 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
 
+AC_DEFINE([OPENOCD_VERSION_MAJOR],
+          m4_defn([DEF_OPENOCD_VERSION_MAJOR]),
+          [The major component of the OpenOCD version.])
+AC_DEFINE([OPENOCD_VERSION_MINOR],
+          m4_defn([DEF_OPENOCD_VERSION_MINOR]),
+          [The minor component of the OpenOCD version.])
+AC_DEFINE([OPENOCD_VERSION_REVISION],
+          m4_defn([DEF_OPENOCD_VERSION_REVISION]),
+          [The revision component of the OpenOCD version.])
+
 # set default gcc warnings
 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
 AS_IF([test "x${gcc_wextra}" = "xyes"], [
diff --git a/src/openocd.c b/src/openocd.c
index f3e1bee48e..42d0a4c69b 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -70,6 +70,37 @@ COMMAND_HANDLER(handler_version_command)
        return ERROR_OK;
 }
 
+COMMAND_HANDLER(handle_is_version_at_least_command)
+{
+       if (CMD_ARGC != 3)
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
+       int version_major;
+       int version_minor;
+       int version_revision;
+
+       COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], version_major);
+       COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], version_minor);
+       COMMAND_PARSE_NUMBER(int, CMD_ARGV[2], version_revision);
+
+       int return_value;
+
+       if (version_major < OPENOCD_VERSION_MAJOR)
+               return_value = 1;
+       else if (version_major > OPENOCD_VERSION_MAJOR)
+               return_value = 0;
+       else if (version_minor < OPENOCD_VERSION_MINOR)
+               return_value = 1;
+       else if (version_minor > OPENOCD_VERSION_MINOR)
+               return_value = 0;
+       else
+               return_value = version_revision <= OPENOCD_VERSION_REVISION;
+
+       command_print(CMD, "%d", return_value ? 1 : 0);
+
+       return ERROR_OK;
+}
+
 static int log_target_callback_event_handler(struct target *target,
        enum target_event event,
        void *priv)
@@ -199,6 +230,14 @@ static const struct command_registration 
openocd_command_handlers[] = {
                .help = "show program version",
                .usage = "[git]",
        },
+       {
+               .name = "is_version_at_least",
+               .handler = handle_is_version_at_least_command,
+               .mode = COMMAND_ANY,
+               .help = "Returns a Tcl boolean (0/1) indicating whether the 
OpenOCD version "
+                               "is at least the given major, minor and 
revision.",
+               .usage = "major minor revision",
+       },
        {
                .name = "noinit",
                .handler = &handle_noinit_command,

-- 

Reply via email to