diff options
author | Steve Bennett <steveb@workware.net.au> | 2011-05-30 12:36:30 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2011-06-10 14:00:34 +1000 |
commit | 382a35e21340439b0c2557cc125fb12ac5d135e3 (patch) | |
tree | 236ceb935f3f7805243dcce4dca4304000524220 /make-load-static-exts.tcl | |
parent | dbe7729d6b03470bf91de94a998b1c2e56b4ee3b (diff) |
Create static extension loader dynamically
Makes it easier when adding new extensions
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'make-load-static-exts.tcl')
-rw-r--r-- | make-load-static-exts.tcl | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/make-load-static-exts.tcl b/make-load-static-exts.tcl new file mode 100644 index 0000000..955127d --- /dev/null +++ b/make-load-static-exts.tcl @@ -0,0 +1,45 @@ +#!/usr/bin/env tclsh + +# Usage: make-load-static-exts extname ... >load-static-exts.c + +# Creates load-static-exts.c based on the configured static extensions + +# There are some dependencies on static extensions which require +# a certain load order. Do this by setting priorities and sorting. + +array set pri { + stdlib 0 + readdir 1 + glob 2 + oo 1 + tree 2 + pack 1 + binary 2 +} + +foreach i $argv { + set p 1 + if {[info exists pri($i)]} { + set p $pri($i) + } + lappend exts [list $p $i] +} +set exts [lsort $exts] + +puts { +/* autogenerated - do not edit */ +#include "jim.h" +#include "jimautoconf.h" +int Jim_InitStaticExtensions(Jim_Interp *interp) +} +puts \{ + +foreach e $exts { + set ext [lindex $e 1] + puts "\textern int Jim_${ext}Init(Jim_Interp *);" + puts "\tJim_${ext}Init(interp);" +} + +puts "\treturn JIM_OK;" + +puts \} |