summaryrefslogtreecommitdiff
path: root/test/profile/Linux/lit.local.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'test/profile/Linux/lit.local.cfg')
-rw-r--r--test/profile/Linux/lit.local.cfg37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/profile/Linux/lit.local.cfg b/test/profile/Linux/lit.local.cfg
new file mode 100644
index 0000000000000..c8c79fc7d8a77
--- /dev/null
+++ b/test/profile/Linux/lit.local.cfg
@@ -0,0 +1,37 @@
+import subprocess
+
+def getRoot(config):
+ if not config.parent:
+ return config
+ return getRoot(config.parent)
+
+
+def is_gold_linker_available():
+
+ if not config.gold_executable:
+ return False
+ try:
+ ld_cmd = subprocess.Popen([config.gold_executable, '--help'], stdout = subprocess.PIPE)
+ ld_out = ld_cmd.stdout.read().decode()
+ ld_cmd.wait()
+ except:
+ return False
+
+ if not '-plugin' in ld_out:
+ return False
+
+ clang_cmd = subprocess.Popen([config.clang, '-fuse-ld=gold', '-xc', '-'],
+ stdin = subprocess.PIPE,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE)
+ clang_err = clang_cmd.communicate('int main() { return 0; }')[1]
+
+ if not 'invalid linker' in clang_err:
+ return True
+
+ return False
+
+root = getRoot(config)
+
+if root.host_os not in ['Linux'] or not is_gold_linker_available():
+ config.unsupported = True