This might actually fix the Windows bots after a16ba6fea.
authorNico Weber <thakis@chromium.org>
Fri, 3 Apr 2020 02:22:54 +0000 (22:22 -0400)
committerNico Weber <thakis@chromium.org>
Fri, 3 Apr 2020 02:22:54 +0000 (22:22 -0400)
llvm/cmake/modules/AddLLVM.cmake

index 29eacf2..91bec7d 100644 (file)
@@ -1455,9 +1455,18 @@ function(configure_lit_site_cfg site_in site_out)
 
   set(LIT_SITE_CFG_IN_HEADER  "# Autogenerated from ${site_in}\n# Do not edit!")
 
+  # Lit converts config paths to lower case in discovery.py, before
+  # loading the config. This causes __file__ to be all lower-case (including
+  # the drive letter), but several clang tests pass -include %s and a
+  # clang warning checks that passed case matches on-disk cache. So it's
+  # important that this restores the on-disk case of the prefix.
   string(CONCAT LIT_SITE_CFG_IN_HEADER "${LIT_SITE_CFG_IN_HEADER}\n\n"
     "# Allow generated lit.site.cfg.py to be relocatable.\n"
-    "def path(p): return os.path.normpath(os.path.join(os.path.dirname(__file__), p)).replace(os.sep, '/') if p else ''\n"
+    "def path(p):\n"
+    "  if not p: return ''\n"
+    "  p = os.path.normpath(os.path.join(os.path.dirname(__file__), p)).replace(os.sep, '/')\n"
+    "  if os.name == 'nt' and os.path.isabs(p): return p[0].upper() + p[1:]\n"
+    "  return p\n"
     )
 
   # Override config_target_triple (and the env)