These lit configuration files are really Python source code. Using the .py file extension helps editors and tools use the correct language mode. LLVM and Clang already use this convention for lit configuration, this change simply applies it to all of compiler-rt. Reviewers: vitalybuka, dberris Differential Revision: https://reviews.llvm.org/D63658 llvm-svn: 364591
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
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
|
|
|
|
# config.clang is not guaranteed to be just the executable!
|
|
clang_cmd = subprocess.Popen(" ".join([config.clang, '-fuse-ld=gold', '-xc', '-']),
|
|
shell=True,
|
|
universal_newlines = True,
|
|
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
|