Index: /trunk/src/kObjCache/kObjCache.c
===================================================================
--- /trunk/src/kObjCache/kObjCache.c	(revision 2613)
+++ /trunk/src/kObjCache/kObjCache.c	(revision 2614)
@@ -1568,22 +1568,35 @@
  * @param   papszArgv       The argument vector.
  * @param   cArgc           The number of entries in the vector.
- * @param   pszIgnorePath   Path to ignore when encountered at the end of arguments.
- *                          (Not quite safe for simple file names, but what the heck.)
+ * @param   pszIgnorePath1  Path to ignore when encountered at the end of
+ *                          arguments. (Not quite safe for simple file names,
+ *                          but what the heck.)
+ * @param   pszIgnorePath2  Path to ignore when encountered at the end of
+ *                          arguments. (Not quite safe for simple file names,
+ *                          but what the heck.)
  * @param   pSum            Where to store the check sum.
  */
 static void kOCEntryCalcArgvSum(PKOCENTRY pEntry, const char * const *papszArgv, unsigned cArgc,
-                                const char *pszIgnorePath, PKOCSUM pSum)
-{
-    size_t cchIgnorePath = strlen(pszIgnorePath);
+                                const char *pszIgnorePath1, const char *pszIgnorePath2, PKOCSUM pSum)
+{
+    size_t cchIgnorePath1 = strlen(pszIgnorePath1);
+    size_t cchIgnorePath2 = pszIgnorePath2 ? strlen(pszIgnorePath2) : ~(size_t)0;
     KOCSUMCTX Ctx;
     unsigned i;
 
+fprintf(stderr, "kOCEntryCalcArgvSum: ign2='%s'\n", pszIgnorePath2);
+
     kOCSumInitWithCtx(pSum, &Ctx);
     for (i = 0; i < cArgc; i++)
     {
         size_t cch = strlen(papszArgv[i]);
-        if (    cch < cchIgnorePath
-            ||  !ArePathsIdenticalN(papszArgv[i] + cch - cchIgnorePath, pszIgnorePath, cch))
+        if (   (   cch < cchIgnorePath1
+                || !ArePathsIdenticalN(papszArgv[i] + cch - cchIgnorePath1, pszIgnorePath1, cch))
+            && (   cch < cchIgnorePath2
+                || !ArePathsIdenticalN(papszArgv[i] + cch - cchIgnorePath2, pszIgnorePath2, cch)) )
+{
             kOCSumUpdate(pSum, &Ctx, papszArgv[i], cch + 1);
+kOCSumInfo(pSum, 0, papszArgv[i]);
+}
+else fprintf(stderr, "kOCEntryCalcArgvSum: Ignoring '%s'\n", papszArgv[i]);
     }
     kOCSumFinalize(pSum, &Ctx);
@@ -1761,5 +1774,6 @@
                     KOCSUM Sum;
                     kOCEntryCalcArgvSum(pEntry, (const char * const *)pEntry->Old.papszArgvCompile,
-                                        pEntry->Old.cArgvCompile, pEntry->Old.pszObjName, &Sum);
+                                        pEntry->Old.cArgvCompile, pEntry->Old.pszObjName, pEntry->Old.pszCppName,
+                                        &Sum);
                     fBad = !kOCSumIsEqual(&pEntry->Old.SumCompArgv, &Sum);
                 }
@@ -1948,6 +1962,9 @@
     pEntry->New.papszArgvCompile[i] = NULL; /* for exev/spawnv */
 
-    kOCEntryCalcArgvSum(pEntry, papszArgvCompile, cArgvCompile, pEntry->New.pszObjName, &pEntry->New.SumCompArgv);
+fprintf(stderr, "kOCEntrySetCompileArgv: '%s' '%s'", pEntry->New.pszObjName, pEntry->New.pszCppName);
+    kOCEntryCalcArgvSum(pEntry, papszArgvCompile, cArgvCompile, pEntry->New.pszObjName, pEntry->New.pszCppName,
+                        &pEntry->New.SumCompArgv);
     kOCSumInfo(&pEntry->New.SumCompArgv, 4, "comp-argv");
+fprintf(stderr, "kOCEntrySetCompileArgv: done\n");
 
     /*
@@ -4446,8 +4463,8 @@
     pEntry = kOCEntryCreate(pszEntryFile);
     kOCEntryRead(pEntry);
+    kOCEntrySetCppName(pEntry, pszPreCompName);
     kOCEntrySetCompileObjName(pEntry, pszObjName);
     kOCEntrySetCompileArgv(pEntry, papszArgvCompile, cArgvCompile);
     kOCEntrySetTarget(pEntry, pszTarget);
-    kOCEntrySetCppName(pEntry, pszPreCompName);
     kOCEntrySetPipedMode(pEntry, fRedirPreCompStdOut, fRedirCompileStdIn, pszNmPipeCompile);
     kOCEntrySetDepFilename(pEntry, pszMakeDepFilename, fMakeDepFixCase, fMakeDepQuiet, fMakeDepGenStubs);
