llvm-project/llvm/test/Bindings/Go/lit.local.cfg

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

61 lines
1.8 KiB
INI
Raw Normal View History

import os
import pipes
import shlex
import sys
if not 'go' in config.root.llvm_bindings:
config.unsupported = True
if not config.root.include_go_tests:
config.unsupported = True
def find_executable(executable, path=None):
if path is None:
path = os.environ['PATH']
paths = path.split(os.pathsep)
base, ext = os.path.splitext(executable)
if (sys.platform == 'win32' or os.name == 'os2') and (ext != '.exe'):
executable = executable + '.exe'
if not os.path.isfile(executable):
for p in paths:
f = os.path.join(p, executable)
if os.path.isfile(f):
return f
return None
else:
return executable
# Resolve certain symlinks in the first word of compiler.
#
# This is a Go-specific hack. cgo and other Go tools check $CC and $CXX for the
# substring 'clang' to determine if the compiler is Clang. This won't work if
# $CC is cc and cc is a symlink pointing to clang, as it is on Darwin.
#
# Go tools also have problems with ccache, so we disable it.
def fixup_compiler_path(compiler):
args = shlex.split(compiler)
if args[0].endswith('ccache') or args[0].endswith('gomacc'):
args = args[1:]
path = find_executable(args[0])
try:
if path.endswith('/cc') and os.readlink(path) == 'clang':
args[0] = path[:len(path)-2] + 'clang'
except (AttributeError, OSError):
pass
try:
if path.endswith('/c++') and os.readlink(path) == 'clang++':
args[0] = path[:len(path)-3] + 'clang++'
except (AttributeError, OSError):
pass
return ' '.join([pipes.quote(arg) for arg in args])
config.environment['CC'] = fixup_compiler_path(config.host_cc)
config.environment['CXX'] = fixup_compiler_path(config.host_cxx)
config.environment['CGO_LDFLAGS'] = config.host_ldflags