Move kernel sources to platform specific subdirs
diff --git a/share/jmk/multiplat.jmk b/share/jmk/multiplat.jmk
new file mode 100644
index 0000000..0638d8d
--- /dev/null
+++ b/share/jmk/multiplat.jmk
@@ -0,0 +1,53 @@
+# -*- tcl -*-
+
+variable isas
+variable devices
+
+variable isa_features
+
+proc isa {name} {
+ lappend ::isas $name
+}
+
+proc device {name isa} {
+ lappend ::devices($isa) $name
+}
+
+proc target_feature {feature} {
+ lappend ::isa_features $feature
+}
+
+proc target_features {args} {
+ lappend ::isa_features {*}$args
+}
+
+proc feature_supported {feature} {
+ return [expr {[lsearch -exact $::isa_features $feature] != -1}]
+}
+
+option ISA x86_32
+option DEVICE pc-generic
+
+proc source_if_exists {path} {
+ if {[file exists $path]} {
+ uplevel 1 jmk_source $path
+ }
+}
+
+proc enable_multiplat {} {
+ uplevel 1 source_if_exists "$::root/etc/platforms/platforms.jmk"
+
+ if {[lsearch -exact $::isas $::options(ISA)] == -1} {
+ jmk_error "Specified ISA $::options(ISA) is invalid, choose one of $::isas"
+ }
+
+ if {[lsearch -exact $::devices($::options(ISA)) $::options(DEVICE)] == -1} {
+ jmk_error "Specified DEVICE $::options(DEVICE) is invalid, choose one of $::devices($::options(ISA))"
+ }
+
+ uplevel 1 source_if_exists "$::root/etc/platforms/$::options(ISA)/$::options(DEVICE).jmk"
+ uplevel 1 source_if_exists "$::root/etc/platforms/$::options(ISA)/$::options(ISA).jmk"
+
+ uplevel 1 source_if_exists "$::options(ISA)/$::options(DEVICE).jmk"
+ uplevel 1 source_if_exists "$::options(ISA)/$::options(ISA).jmk"
+}