Added HostOS variable
authorduane <duane@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 7 Mar 2009 15:19:21 +0000 (15:19 +0000)
committerduane <duane@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 7 Mar 2009 15:19:21 +0000 (15:19 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1400 b42882b7-edfa-0310-969c-e2dbd0fdcd60

doc/openocd.texi
src/helper/command.c

index 6d88d832085224bf9d2a7a619efcd9060b1b1e85..e1c0984dbba234b4e26c362b07e24f5b592eb914 100644 (file)
@@ -3063,9 +3063,10 @@ To verify any flash programming the GDB command @option{compare-sections}
 can be used.
 
 @node TCL scripting API
-@chapter TCL scripting API
+@chapter TCL scripts
 @cindex TCL scripting API
-API rules
+@cindex TCL scripts
+@section API Rules
 
 The commands are stateless. E.g. the telnet command line has a concept
 of currently active target, the Tcl API proc's take this sort of state
@@ -3102,7 +3103,11 @@ Thus, to get the names of the associative array is easy:
 Lists returned must be relatively small. Otherwise a range
 should be passed in to the proc in question.
 
-Low level commands are prefixed with "openocd_", e.g. openocd_flash_banks
+@section Internal Low Level Commands
+
+By Low level, the intent is a human would not directly use these commands.
+
+Low level commands are (should be) prefixed with "openocd_", e.g. openocd_flash_banks
 is the low level API upon which "flash banks" is implemented.
 
 @itemize @bullet
@@ -3121,6 +3126,24 @@ OpenOCD commands can consist of two words, e.g. "flash banks". The
 startup.tcl "unknown" proc will translate this into a tcl proc
 called "flash_banks".
 
+@section OpenOCD specific Global Variables
+
+@subsection HostOS
+
+Real TCL has ::tcl_platform(), and platform::identify, and many other
+variables. JimTCL, as implimented in OpenOCD creates $HostOS which
+holds one of the following values.
+
+@itemize bullet 
+@item @b{winxx}    Built using Microsoft Visual Studio
+@item @b{linux}    Linux is the underlying operating sytem
+@item @b{darwin}   Darwin (mac-os) is the underlying operating sytem.
+@item @b{cygwin}   Running under Cygwin
+@item @b{mingw32}  Running under MingW32
+@item @b{other}    Unknown, none of the above.
+@end itemize
+
+Note: 'winxx' was choosen because today (March-2009) no distinction is made between Win32 and Win64.
 
 @node Upgrading
 @chapter Deprecated/Removed Commands
index bc1fb348941681918bb12d58c655400967169046..d5be42dfeea02dfc4c4081bf74c594ccc8da8473 100644 (file)
@@ -672,6 +672,7 @@ command_context_t* command_init()
 {
        command_context_t* context = malloc(sizeof(command_context_t));
        extern const char startup_tcl[];
+       const char *HostOs;
 
        context->mode = COMMAND_EXEC;
        context->commands = NULL;
@@ -687,6 +688,28 @@ command_context_t* command_init()
        Jim_RegisterCoreCommands(interp);
 #endif
 
+#if defined( _MSC_VER )
+       /* WinXX - is generic, the forward
+        * looking problem is this:
+        * 
+        *   "win32" or "win64"
+        *
+        * "winxx" is generic.
+        */
+       HostOs = "winxx";
+#elif defined( __LINUX__)
+       HostOs = "linux";
+#elif defined( __DARWIN__ )
+       HostOs = "darwin";
+#elif defined( __CYGWIN__ )
+       HostOs = "cygwin";
+#elif defined( __MINGW32__ )
+       HostOs = "mingw32";
+#else
+       HostOs = "other";
+#endif
+       Jim_SetGlobalVariableStr( interp, "ocd_HOSTOS", Jim_NewStringObj( interp, HostOs , strlen(HostOs)) );
+
        Jim_CreateCommand(interp, "ocd_find", jim_find, NULL, NULL);
        Jim_CreateCommand(interp, "echo", jim_echo, NULL, NULL);
        Jim_CreateCommand(interp, "capture", jim_capture, NULL, NULL);