Begin Jmk2 in TCL
diff --git a/share/jmk/jmk.tcl b/share/jmk/jmk.tcl
new file mode 100644
index 0000000..36c65a9
--- /dev/null
+++ b/share/jmk/jmk.tcl
@@ -0,0 +1,89 @@
+# Rewrite of JMK in TCL
+
+variable jmk_name {}
+variable jmk_target {}
+variable cflags {}
+variable asmflags {}
+
+variable asm as
+variable cc cc
+
+variable options
+
+proc init {name {target {DEFAULT_TARGET}}} {
+ if {$target eq {DEFAULT_TARGET}} {
+ set target $name
+ }
+
+ global jmk_name
+ global jmk_target
+
+ set jmk_name $name
+ set jmk_target $target
+}
+
+proc preset {p} {
+ ::preset::$p
+}
+
+proc presets {args} {
+ foreach arg $args {
+ preset $arg
+ }
+}
+
+proc cflag {arg} {
+ global cflags
+ set cflags "$cflags $arg"
+}
+
+proc cflags {args} {
+ foreach arg $args {
+ cflag $arg
+ }
+}
+
+proc asmflag {arg} {
+ global asmflags
+ set asmflags "$asmflags $arg"
+}
+
+proc asmflags {args} {
+ foreach arg $args {
+ asmflag $arg
+ }
+}
+
+proc option {name val} {
+ global options
+ if {![info exists options($name)]} {
+ set options($name) $val
+ }
+}
+
+namespace eval preset {
+ proc 32 {} {
+ cflag -m32
+ asmflag -felf32
+ }
+
+ proc debug {} {
+ cflag -g
+ asmflag -Fdwarf
+ }
+
+ proc warn {} {
+ cflag "-Wall -Wextra -Werror"
+ }
+
+ proc nasm {} {
+ global asm
+ set asm nasm
+ }
+}
+
+if {[catch {array set options $argv} msg]} {
+ puts "Sorry, you must pass an even number of arguments to this script"
+ puts "in the form <key> <value>"
+ exit 1
+}