diff --git a/llvm/docs/CommandGuide/lit.rst b/llvm/docs/CommandGuide/lit.rst --- a/llvm/docs/CommandGuide/lit.rst +++ b/llvm/docs/CommandGuide/lit.rst @@ -523,6 +523,8 @@ %S source dir (directory of the file currently being run) %p same as %S %{pathsep} path separator + %{fsroot} root component of file system paths + %{fssep} file system path separator %t temporary file name unique to the test %basename_t The last path component of %t but without the ``.tmp`` extension %T parent directory of %t (not unique, deprecated, do not use) diff --git a/llvm/docs/TestingGuide.rst b/llvm/docs/TestingGuide.rst --- a/llvm/docs/TestingGuide.rst +++ b/llvm/docs/TestingGuide.rst @@ -569,6 +569,13 @@ Expands to the path separator, i.e. ``:`` (or ``;`` on Windows). +``${fsroot}`` + Expands to the root component of file system paths, i.e. ``/`` on Unix + systems or ``C:\`` on Windows. + +``${fssep}`` + Exp``ands to the file system separator, i.e. ``/`` or ``\`` on Windows. + ``%/s, %/S, %/t, %/T:`` Act like the corresponding substitution above but replace any ``\`` diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -1119,6 +1119,14 @@ ('%basename_t', baseName), ('%T', tmpDir)]) + fs_root = os.path.sep + if kIsWindows: + fs_root = 'C:\\' + substitutions.extend([ + ('%{fsroot}', fs_root), + ('%{fssep}', os.path.sep), + ]) + # "%/[STpst]" should be normalized. substitutions.extend([ ('%/s', sourcepath.replace('\\', '/')),