Index: /trunk/src/gmake/kbuild.c
===================================================================
--- /trunk/src/gmake/kbuild.c	(revision 644)
+++ /trunk/src/gmake/kbuild.c	(revision 645)
@@ -791,5 +791,5 @@
 {
     struct variable *pVar;
-    unsigned iSdk;
+    unsigned iSdk, iSdkEnd;
     int cVars, iVar, iVarEnd;
     size_t cchTotal;
@@ -831,5 +831,8 @@
 
     /* the global sdks */
-    for (iSdk = pSdks->iGlobal; iSdk < pSdks->iGlobal + pSdks->cGlobal; iSdk++)
+    iSdkEnd = iDirection == 1 ? pSdks->iGlobal + pSdks->cGlobal : pSdks->iGlobal - 1;
+    for (iSdk = iDirection == 1 ? pSdks->iGlobal : pSdks->iGlobal + pSdks->cGlobal - 1;
+         iSdk != iSdkEnd; 
+         iSdk += iDirection)
     {
         struct variable *pSdk = &pSdks->pa[iSdk];
@@ -865,5 +868,8 @@
 
     /* the target sdks */
-    for (iSdk = pSdks->iTarget; iSdk < pSdks->iTarget + pSdks->cTarget; iSdk++)
+    iSdkEnd = iDirection == 1 ? pSdks->iTarget + pSdks->cTarget : pSdks->iTarget - 1;
+    for (iSdk = iDirection == 1 ? pSdks->iTarget : pSdks->iTarget + pSdks->cTarget - 1;
+         iSdk != iSdkEnd; 
+         iSdk += iDirection)
     {
         struct variable *pSdk = &pSdks->pa[iSdk];
@@ -899,5 +905,8 @@
 
     /* the source sdks */
-    for (iSdk = pSdks->iSource; iSdk < pSdks->iSource + pSdks->cSource; iSdk++)
+    iSdkEnd = iDirection == 1 ? pSdks->iSource + pSdks->cSource : pSdks->iSource - 1;
+    for (iSdk = iDirection == 1 ? pSdks->iSource : pSdks->iSource + pSdks->cSource - 1; 
+         iSdk != iSdkEnd; 
+         iSdk += iDirection)
     {
         struct variable *pSdk = &pSdks->pa[iSdk];
@@ -934,5 +943,8 @@
 
     /* the target + source sdks */
-    for (iSdk = pSdks->iTargetSource; iSdk < pSdks->iTargetSource + pSdks->cTargetSource; iSdk++)
+    iSdkEnd = iDirection == 1 ? pSdks->iTargetSource + pSdks->cTargetSource : pSdks->iTargetSource - 1;
+    for (iSdk = iDirection == 1 ? pSdks->iTargetSource : pSdks->iTargetSource + pSdks->cTargetSource - 1;
+         iSdk != iSdkEnd;
+         iSdk += iDirection)
     {
         struct variable *pSdk = &pSdks->pa[iSdk];
