rupprecht created this revision.
rupprecht added a reviewer: labath.
Herald added a reviewer: EricWF.
Herald added subscribers: lldb-commits, ldionne.
Herald added a project: LLDB.
The test logic for running libc++ tests only looks to see if
`/usr/include/c++/v1` exists. This adds a fallback for including libc++ tests
as long as `$(CC) -stdlib=libc++` works.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D71319
Files:
lldb/packages/Python/lldbsuite/test/dotest.py
Index: lldb/packages/Python/lldbsuite/test/dotest.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/dotest.py
+++ lldb/packages/Python/lldbsuite/test/dotest.py
@@ -32,6 +32,7 @@
import signal
import subprocess
import sys
+import tempfile
# Third-party modules
import six
@@ -850,9 +851,15 @@
return True, "libc++ always present"
if platform == "linux":
- if not os.path.isdir("/usr/include/c++/v1"):
- return False, "Unable to find libc++ installation"
- return True, "Headers found, let's hope they work"
+ if os.path.isdir("/usr/include/c++/v1"):
+ return True, "Headers found, let's hope they work"
+ with tempfile.NamedTemporaryFile() as f:
+ cmd = [configuration.compiler, "-xc++", "-stdlib=libc++", "-o",
f.name, "-"]
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+ _, stderr = p.communicate("int main() {}")
+ if not p.returncode:
+ return True, "Compiling with -stdlib=libc++ works"
+ return False, "Compiling with -stdlib=libc++ fails with the error:
%s" % stderr
return False, "Don't know how to build with libc++ on %s" % platform
Index: lldb/packages/Python/lldbsuite/test/dotest.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/dotest.py
+++ lldb/packages/Python/lldbsuite/test/dotest.py
@@ -32,6 +32,7 @@
import signal
import subprocess
import sys
+import tempfile
# Third-party modules
import six
@@ -850,9 +851,15 @@
return True, "libc++ always present"
if platform == "linux":
- if not os.path.isdir("/usr/include/c++/v1"):
- return False, "Unable to find libc++ installation"
- return True, "Headers found, let's hope they work"
+ if os.path.isdir("/usr/include/c++/v1"):
+ return True, "Headers found, let's hope they work"
+ with tempfile.NamedTemporaryFile() as f:
+ cmd = [configuration.compiler, "-xc++", "-stdlib=libc++", "-o", f.name, "-"]
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+ _, stderr = p.communicate("int main() {}")
+ if not p.returncode:
+ return True, "Compiling with -stdlib=libc++ works"
+ return False, "Compiling with -stdlib=libc++ fails with the error: %s" % stderr
return False, "Don't know how to build with libc++ on %s" % platform
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits