summaryrefslogtreecommitdiffstats
path: root/funtools/mkfunmainlib
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 17:38:41 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 17:38:41 (GMT)
commit5b44fb0d6530c4ff66a446afb69933aa8ffd014f (patch)
treee059f66d1f612e21fe9d83f9620c8715530353ec /funtools/mkfunmainlib
parentda2e3d212171bbe64c1af39114fd067308656990 (diff)
parent23c7930d27fe11c4655e1291a07a821dbbaba78d (diff)
downloadblt-5b44fb0d6530c4ff66a446afb69933aa8ffd014f.zip
blt-5b44fb0d6530c4ff66a446afb69933aa8ffd014f.tar.gz
blt-5b44fb0d6530c4ff66a446afb69933aa8ffd014f.tar.bz2
Merge commit '23c7930d27fe11c4655e1291a07a821dbbaba78d' as 'funtools'
Diffstat (limited to 'funtools/mkfunmainlib')
-rwxr-xr-xfuntools/mkfunmainlib68
1 files changed, 68 insertions, 0 deletions
diff --git a/funtools/mkfunmainlib b/funtools/mkfunmainlib
new file mode 100755
index 0000000..3cbc6bd
--- /dev/null
+++ b/funtools/mkfunmainlib
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+if [ x"$1" = x"-tcl" ]; then
+ DOTCL=1
+else
+ DOTCL=0
+fi
+
+awk '
+BEGIN{
+ dotcl='$DOTCL'
+ if( dotcl == 0 ){
+ printf("#include <mainlib.h>\n\n")
+ }
+ else{
+ printf("#include <tclmainlib.h>\n\n")
+ }
+ printf("\n");
+ j = 0
+}
+{
+ for(i=1; i<=NF; i++){
+ name[j] = $i
+ printf("int %s_main _PRx((int argc, char **argv));\n", $i)
+ j++
+ }
+}
+END{
+ if( dotcl == 0 ){
+ printf("\n")
+ printf("void *funtoolsMainLibInit(void)\n")
+ printf("{\n")
+ printf(" MainLib ml;\n")
+ printf(" if( !(ml=MainLibNew()) )\n");
+ printf(" return NULL;\n");
+ for(i=0; i<j; i++){
+ printf(" if( !MainLibAdd(ml, \"funtools\", \"%s\", %s_main, MAINLIB_ARGV) )\n", name[i], name[i])
+ printf(" return NULL;\n");
+ }
+ printf(" return ml;\n");
+ printf("}\n")
+ printf("\n")
+ }
+ else{
+ printf("\n")
+ printf("#include <tcl.h>\n")
+ printf("\n")
+ printf("int Tclfun_Init (void *vinterp)\n")
+ printf("{\n")
+ printf(" Tcl_Interp *interp = (Tcl_Interp *)vinterp;\n")
+ printf("\n")
+ for(i=0; i<j; i++){
+ printf(" Tcl_CreateObjCommand(interp, \"%s\", MainLibProcess_Tcl,\n", name[i])
+ printf(" (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);\n")
+ }
+ printf(" Tcl_CreateObjCommand(interp, \"mainlib\", MainLibProcess_Tcl,\n")
+ printf(" (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);\n")
+ printf(" Tcl_CreateObjCommand(interp, \"mainlibcleanup\", MainLibProcessCleanup_Tcl,\n")
+ printf(" (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);\n")
+ printf(" Tcl_CreateObjCommand(interp, \"mainlibload\", MainLibLoad_Tcl,\n")
+ printf(" (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);\n")
+ printf(" Tcl_PkgProvide(interp, \"tclfun\", \"1.0\");\n")
+ printf(" return(TCL_OK);\n")
+ printf("}\n")
+ printf("\n")
+ }
+}
+'