summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2010-09-10 13:16:13 +0200
committerØyvind Harboe <oyvind.harboe@zylin.com>2010-09-11 11:42:44 +0200
commit505d4633cd7a4e8623ef70932cd7edc9f22e71d4 (patch)
treedba9ab3b67afb313437c7995eb8a18973b4bcde6
parentac86f4ccba49a671034a7607a7e14bc4b5e86ac6 (diff)
downloadopenocd+libswd-505d4633cd7a4e8623ef70932cd7edc9f22e71d4.tar.gz
openocd+libswd-505d4633cd7a4e8623ef70932cd7edc9f22e71d4.tar.bz2
openocd+libswd-505d4633cd7a4e8623ef70932cd7edc9f22e71d4.tar.xz
openocd+libswd-505d4633cd7a4e8623ef70932cd7edc9f22e71d4.zip
version command: make it scriptable
you can now set a variable in a script like set version [version]. Also version takes an optional argument "git" to show git version of source. If git is not installed during the build, then this will yield an error that is ignored during the build and "version git" returns an empty string. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
-rw-r--r--src/Makefile.am1
-rw-r--r--src/openocd.c32
2 files changed, 24 insertions, 9 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index a566b4d4..56385f7e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -44,6 +44,7 @@ libopenocd_la_CPPFLAGS += -DRELSTR=\"\"
else
libopenocd_la_CPPFLAGS += -DRELSTR=\"`$(top_srcdir)/guess-rev.sh $(top_srcdir)`\"
endif
+libopenocd_la_CPPFLAGS += -DGITVERSION=\"`cd $(top_srcdir) && git describe`\"
# add default CPPFLAGS
libopenocd_la_CPPFLAGS += $(AM_CPPFLAGS) $(CPPFLAGS)
diff --git a/src/openocd.c b/src/openocd.c
index 69ed7601..5f890dbe 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -2,7 +2,7 @@
* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
- * Copyright (C) 2007,2008 Øyvind Harboe *
+ * Copyright (C) 2007-2010 Øyvind Harboe *
* oyvind.harboe@zylin.com *
* *
* Copyright (C) 2008 Richard Missenden *
@@ -52,15 +52,29 @@
#define OPENOCD_VERSION \
"Open On-Chip Debugger " VERSION RELSTR " (" PKGBLDDATE ")"
-/* Give TELNET a way to find out what version this is */
-COMMAND_HANDLER(handle_version_command)
+/* Give scripts and TELNET a way to find out what version this is */
+static int jim_version_command(Jim_Interp *interp, int argc,
+ Jim_Obj * const *argv)
{
- if (CMD_ARGC != 0)
- return ERROR_COMMAND_SYNTAX_ERROR;
-
- command_print(CMD_CTX, OPENOCD_VERSION);
+ if (argc > 2)
+ {
+ return JIM_ERR;
+ }
+ const char *str = "";
+ char * version_str;
+ version_str = OPENOCD_VERSION;
+
+ if (argc == 2)
+ str = Jim_GetString(argv[1], NULL);
+
+ if (strcmp("git", str) == 0)
+ {
+ version_str = GITVERSION;
+ }
+
+ Jim_SetResult(interp, Jim_NewStringObj(interp, version_str, -1));
- return ERROR_OK;
+ return JIM_OK;
}
static int log_target_callback_event_handler(struct target *target, enum target_event event, void *priv)
@@ -174,7 +188,7 @@ COMMAND_HANDLER(handle_add_script_search_dir_command)
static const struct command_registration openocd_command_handlers[] = {
{
.name = "version",
- .handler = &handle_version_command,
+ .jim_handler = jim_version_command,
.mode = COMMAND_ANY,
.help = "show program version",
},