mghello

(update from mghello --> mgsimple)

"Executive summary" from the file below:

"This example creates a new Tk_Main and Tcl_AppInit. This example strips lots of extra code out of Tk_Main, and allows a cleaner startup of your own C + Tk application. This example will compile for Tk4.1/Tcl7.5 and Tk8.0+/Tcl8.0+.

This example illustrates a method of creating a GUI with Tk that will work with your C application. It illustrates the sharing of variables between C and Tk, and a method of registering your own C commands to call from Tk."

Go here: http://ftp.se.kde.org/pub/lang/tcl/sorted/packages-7.6/apps/mgsimple/mgsimple.README

[that URL is no longer accurate... however, when I googled, I found a copy on http://www.equi4.com/pub/pp/sorted/apps/mgsimple/ ]


So, to the mgsimple makefile and simple.c that I found at equi4.com, I found I had to make the following changes to get it to compile on a sparc solaris machine using tcl/tk 8.5.1 :

--- mgsimple/makefile   Mon Jan 20 13:47:24 1997
+++ mgsimple-v2/Makefile        Wed Mar  5 10:21:44 2008
@@ -15,7 +15,9 @@
 # if you have all of the *.a libraries.
-CC             = gcc -g
+
+TCL_PREFIX = /projects/sprs_lwv/tcl85
+VERSION = 8.5
+#CC            = gcc -g
+CC             = cc -g -xarch=v9
 LINKER         = $(CC)
-LIBS           = /usr/lib/libtk.so \
-                       /usr/lib/libtcl.so \
-                       /usr/X11R6/lib/libX11.so
+LIBS           = -L$(TCL_PREFIX)/lib -L/lib -R$(TCL_PREFIX)/lib:/lib

@@ -23,3 +25,3 @@

-LLIBS          = -ltk -ltcl -lm -ldl
+LLIBS          = -ltk$(VERSION) -ltcl$(VERSION) -lX11 -lm # -ldl

@@ -29,4 +31,3 @@
                        -I/usr/X11/include \
-                       -I/usr/src/tk \
-                       -I/usr/src/tcl
+                       -I$(TCL_PREFIX)/include

@@ -34,4 +35,3 @@
 LDFLAGS                = -I/usr/X11/include \
-                       -I/usr/src/tk \
-                       -I/usr/src/tcl
+                       -I$(TCL_PREFIX)/include

and I had to make the following changes to simple.c to get it to compile without warnings.

--- mgsimple/simple.c   Mon Jan 20 15:38:15 1997
+++ mgsimple-v2/simple.c        Wed Mar  5 10:21:09 2008
@@ -27,3 +27,3 @@
  */
-main(int argc, char *argv[])
+int main(int argc, char *argv[])
 {
@@ -78,3 +78,3 @@
        /* register your own commands */
-       Tcl_CreateCommand( interp, "getSumExample", getSumExampleCmd,
+       Tcl_CreateCommand( interp, (const char *) "getSumExample", (Tcl_CmdProc *) getSumExampleCmd,
                (ClientData) NULL, (void (*) ()) NULL);

Perhaps it would be worthwhile to take the code there, bring it here to the wiki, and update it so that it reflects tcl best practices?