When no FileCheck binary is specified, look in the llvm/clang bin
authorJason Molenda <jmolenda@apple.com>
Thu, 1 Nov 2018 23:41:05 +0000 (23:41 +0000)
committerJason Molenda <jmolenda@apple.com>
Thu, 1 Nov 2018 23:41:05 +0000 (23:41 +0000)
dirs relative to the source directory (Xcode build style) to find
one, use it if found.

llvm-svn: 345912

lldb/packages/Python/lldbsuite/test/dotest.py

index e3a30ed..f614fb6 100644 (file)
@@ -313,6 +313,13 @@ def parseOptionsAndInitTestdirs():
         # target. However, when invoking dotest.py directly, a valid --filecheck
         # option needs to be given.
         configuration.filecheck = os.path.abspath(args.filecheck)
+    else:
+        outputPaths = get_llvm_bin_dirs()
+        for outputPath in outputPaths:
+            candidatePath = os.path.join(outputPath, 'FileCheck')
+            if is_exe(candidatePath):
+                configuration.filecheck = candidatePath
+                break
 
     if not configuration.get_filecheck_path():
         logging.warning('No valid FileCheck executable; some tests may fail...')
@@ -627,6 +634,31 @@ def getOutputPaths(lldbRootDirectory):
 
     return result
 
+def get_llvm_bin_dirs():
+    """
+    Returns an array of paths that may have the llvm/clang/etc binaries
+    in them, relative to this current file.  
+    Returns an empty array if none are found.
+    """
+    result = []
+
+    lldb_root_path = os.path.join(
+        os.path.dirname(__file__), "..", "..", "..", "..")
+    paths_to_try = [
+        "llvm-build/Release+Asserts/x86_64/bin",
+        "llvm-build/Debug+Asserts/x86_64/bin",
+        "llvm-build/Release/x86_64/bin",
+        "llvm-build/Debug/x86_64/bin",
+        "llvm-build/Ninja-DebugAssert/llvm-macosx-x86_64/bin",
+        "llvm-build/Ninja-ReleaseAssert/llvm-macosx-x86_64/bin",
+        "llvm-build/Ninja-RelWithDebInfoAssert/llvm-macosx-x86_64/bin",
+    ]
+    for p in paths_to_try:
+        path = os.path.join(lldb_root_path, p)
+        if os.path.exists(path):
+            result.append(path)
+
+    return result
 
 def setupSysPath():
     """