Index: /trunk/ChangeLog
===================================================================
--- /trunk/ChangeLog	(revision 575)
+++ /trunk/ChangeLog	(revision 576)
@@ -1,3 +1,10 @@
 /* $Id$ */
+
+2006-11-23:
+    - kBuild/header.kmk, kmk:
+        o Proper versioning.
+    - kmk:
+        o Support SDK.$(BUILD_TARGET_ARCH) too (only bug).
+        o Fixed a bug when gather SDKs.
 
 2006-09-28:
Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 575)
+++ /trunk/Config.kmk	(revision 576)
@@ -27,4 +27,17 @@
 # Enable automatic installation of what's built.
 KBUILD_DO_AUTO_INSTALL := 1
+
+
+#
+# The kBuild version.
+#
+KBUILD_VERSION_MAJOR = 0
+KBUILD_VERSION_MINOR = 1
+KBUILD_VERSION_PATCH = 0
+KBUILD_VERSION = "0.1.0"
+DEFS += \
+	KBUILD_VERSION_MAJOR=$(KBUILD_VERSION_MAJOR) \
+	KBUILD_VERSION_MINOR=$(KBUILD_VERSION_MINOR) \
+	KBUILD_VERSION_PATCH=$(KBUILD_VERSION_PATCH)
 					
 #
Index: /trunk/kBuild/header.kmk
===================================================================
--- /trunk/kBuild/header.kmk	(revision 575)
+++ /trunk/kBuild/header.kmk	(revision 576)
@@ -213,12 +213,24 @@
 
 #
-# Disable some features and stamp out predefines if we're running
-# vanilla GNU Make.
-#
-ifndef KMK_VERSION
-NO_COMPILE_CMDS_DEPS:= 1
-NO_LINK_CMDS_DEPS   := 1
-include $(PATH_KBUILD)/StampOutPredefines.kmk
-endif
+# Check make version.
+#
+ifdef KMK_VERSION
+ ifneq ($(KBUILD_VERSION_MAJOR).$(KBUILD_VERSION_MINOR),0.1)
+  ifneq ($(KBUILD_VERSION_MAJOR),0)
+   $(warning kBuild: kmk major version mismatch, expected '0' found '$(KBUILD_VERSION_MAJOR)'!)
+  else
+   $(warning kBuild: kmk minor version mismatch, expected '1' found '$(KBUILD_VERSION_MINOR)'!) 
+  endif
+ endif
+else 
+ # Vanilla GNU Make. Only supported for kBuild bootstrapping. Disable some features to make it work.
+ NO_COMPILE_CMDS_DEPS:= 1
+ NO_LINK_CMDS_DEPS   := 1
+ sinclude $(PATH_KBUILD)/StampOutPredefines.kmk
+ ifndef IS_BOOTSTRAPPING_KBUILD_NOW
+  $(warning kBuild: Using vanilla GNU make isn't safe for anything but kBuild bootstrapping!)
+ endif
+endif
+
 
 #
Index: /trunk/src/gmake/Makefile.kmk
===================================================================
--- /trunk/src/gmake/Makefile.kmk	(revision 575)
+++ /trunk/src/gmake/Makefile.kmk	(revision 576)
@@ -33,5 +33,9 @@
 	CONFIG_WITH_OPTIMIZATION_HACKS \
 	CONFIG_WITH_VALUE_LENGTH \
-	CONFIG_WITH_COMPARE
+	CONFIG_WITH_COMPARE \
+	\
+	BUILD_PLATFORM=\"$(BUILD_TARGET)\" \
+	BUILD_PLATFORM_ARCH=\"$(BUILD_TARGET_ARCH)\" \
+	BUILD_PLATFORM_CPU=\"$(BUILD_TARGET_CPU)\"
 
 kmk_SOURCES = \
Index: /trunk/src/gmake/main.c
===================================================================
--- /trunk/src/gmake/main.c	(revision 575)
+++ /trunk/src/gmake/main.c	(revision 576)
@@ -3033,5 +3033,5 @@
 
 #ifdef KMK
-  printf ("%skmk - The kBuild Make Program\n\
+  printf ("%skBuild Make %d.%d.%d\n\
 \n\
 %sBased on GNU Make %s:\n\
@@ -3046,6 +3046,7 @@
 %s Copyright (c) 1998  Todd C. Miller <Todd.Miller@courtesan.com>\n\
 %s\n",
-          precede, precede, version_string, precede, precede, precede,
-          precede, precede, precede, precede, precede);
+          precede, KBUILD_VERSION_MAJOR, KBUILD_VERSION_MINOR, KBUILD_VERSION_PATCH,
+          precede, version_string, 
+          precede, precede, precede, precede, precede, precede, precede, precede);
 #else
   printf ("%sGNU Make %s\n\
Index: /trunk/src/gmake/variable.c
===================================================================
--- /trunk/src/gmake/variable.c	(revision 575)
+++ /trunk/src/gmake/variable.c	(revision 576)
@@ -971,4 +971,7 @@
   register struct variable *v;
   char buf[200];
+#ifdef KMK
+  const char *envvar;
+#endif 
 
   sprintf (buf, "%u", makelevel);
@@ -986,4 +989,33 @@
   /* Define KMK_VERSION to indicate kMk. */
   (void) define_variable ("KMK_VERSION", 11, buf, o_default, 0);
+
+  /* Define KBUILD_VERSION* */
+  sprintf (buf, "%d", KBUILD_VERSION_MAJOR);
+  (void) define_variable ("KBUILD_VERSION_MAJOR", sizeof("KBUILD_VERSION_MAJOR") - 1, 
+                          buf, o_default, 0);
+  sprintf (buf, "%d", KBUILD_VERSION_MINOR);
+  (void) define_variable ("KBUILD_VERSION_MINOR", sizeof("KBUILD_VERSION_MINOR") - 1, 
+                          buf, o_default, 0);
+  sprintf (buf, "%d", KBUILD_VERSION_PATCH);
+  (void) define_variable ("KBUILD_VERSION_PATCH", sizeof("KBUILD_VERSION_PATCH") - 1, 
+                          buf, o_default, 0);
+
+  sprintf (buf, "%d.%d.%d", KBUILD_VERSION_MAJOR, KBUILD_VERSION_MINOR, KBUILD_VERSION_PATCH);
+  (void) define_variable ("KBUILD_VERSION", sizeof("KBUILD_VERSION") - 1, 
+                          buf, o_default, 0);
+
+  /* The build platform defaults. */
+  envvar = getenv("BUILD_PLATFORM");
+  if (!envvar)
+      (void) define_variable ("BUILD_PLATFORM", sizeof("BUILD_PLATFORM") - 1, 
+                              BUILD_PLATFORM, o_default, 0);
+  envvar = getenv("BUILD_PLATFORM_ARCH");
+  if (!envvar)
+      (void) define_variable ("BUILD_PLATFORM_ARCH", sizeof("BUILD_PLATFORM_ARCH") - 1, 
+                              BUILD_PLATFORM_ARCH, o_default, 0);
+  envvar = getenv("BUILD_PLATFORM_CPU");
+  if (!envvar)
+      (void) define_variable ("BUILD_PLATFORM_CPU", sizeof("BUILD_PLATFORM_CPU") - 1, 
+                              BUILD_PLATFORM_CPU, o_default, 0);
 
   /* Define KMK_FEATURES to indicate various working KMK features. */
@@ -1010,4 +1042,5 @@
   (void) define_variable ("KMK_FEATURES", 12, buf, o_default, 0);
 # endif 
+
 #endif /* KMK */
 
