Enable WITH_TIDY for master build.
Use --with-tidy to enable clang tidy.
Bug: http://b/62292583
Test: python toolchain/llvm/android/test_compiler.py --with-tidy
--no-redirect-stderr --build-only -t aosp_angler-eng ./
Change-Id: I80fa342987e414780c194423fbbf53af3b9562a1
diff --git a/test_compiler.py b/test_compiler.py
index e71840e..55ca5ab 100755
--- a/test_compiler.py
+++ b/test_compiler.py
@@ -25,6 +25,13 @@
import subprocess
TARGETS = ('aosp_angler-eng', 'aosp_bullhead-eng', 'aosp_marlin-eng')
+DEFAULT_TIDY_CHECKS = ('*',
+ '-readability-*',
+ '-google-readability-*',
+ '-google-runtime-references',
+ '-cppcoreguidelines-*',
+ '-modernize-*',
+ '-clang-analyzer-alpha*')
def parse_args():
@@ -46,6 +53,8 @@
parser.add_argument('-t', '--target', nargs='?', help='Build for specified '
'target. This will work only when --build-only is '
'enabled.')
+ parser.add_argument('--with-tidy', action='store_true', default=False,
+ help='Enable clang tidy for Android build.')
clean_built_target_group = parser.add_mutually_exclusive_group()
clean_built_target_group.add_argument(
'--clean-built-target', action='store_true', default=True,
@@ -88,7 +97,7 @@
def build_target(android_base, clang_version, target, max_jobs,
- redirect_stderr):
+ redirect_stderr, with_tidy):
jobs = '-j{}'.format(
max(1, min(max_jobs, multiprocessing.cpu_count())))
result = True
@@ -111,31 +120,33 @@
fallback_path = build.clang_prebuilt_bin_dir()
env[compiler_wrapper.PREBUILT_COMPILER_PATH_KEY] = fallback_path
+ env['LLVM_PREBUILTS_VERSION'] = 'clang-dev'
+ env['LLVM_RELEASE_VERSION'] = clang_version.short_version()
# http://b/62869798, we need to invoke cpp-define-generator manually to
# avoid potential build failure. This should be removed when
# art/runtime/generated/asm_support_gen.h is updated.
- subprocess.check_call(['/bin/bash', '-c',
- 'make cpp-define-generator-data ' + jobs +
- ' dist LLVM_PREBUILTS_VERSION=clang-dev' +
- (' LLVM_RELEASE_VERSION=%s' %
- clang_version.short_version())], cwd=android_base,
- env=env)
+ subprocess.check_call(['/bin/bash', '-c', 'make cpp-define-generator-data '
+ + jobs + ' dist'],
+ cwd=android_base, env=env)
asm_support_path = os.path.join(android_base, 'art', 'tools',
'cpp-define-generator')
subprocess.check_call(['./generate-asm-support'], cwd=asm_support_path,
env=env)
+ if with_tidy:
+ env['WITH_TIDY'] = '1'
+ if 'DEFAULT_GLOBAL_TIDY_CHECKS' not in env:
+ env['DEFAULT_GLOBAL_TIDY_CHECKS'] = ','.join(DEFAULT_TIDY_CHECKS)
+
+
print('Start building %s.' % target)
- subprocess.check_call(['/bin/bash', '-c', 'make ' + jobs + ' dist'
- ' LLVM_PREBUILTS_VERSION=clang-dev' +
- (' LLVM_RELEASE_VERSION=%s' %
- clang_version.short_version())], cwd=android_base,
- env=env)
+ subprocess.check_call(['/bin/bash', '-c', 'make ' + jobs + ' dist'],
+ cwd=android_base, env=env)
def test_device(android_base, clang_version, device, max_jobs, clean_output,
- flashall_path, redirect_stderr):
+ flashall_path, redirect_stderr, with_tidy):
[label, target] = device[-1].split(':')
# If current device is not connected correctly we will just skip it.
if label != 'device':
@@ -145,7 +156,7 @@
target = 'aosp_' + target + '-eng'
try:
build_target(android_base, clang_version, target, max_jobs,
- redirect_stderr)
+ redirect_stderr, with_tidy)
if flashall_path is None:
bin_path = os.path.join(android_base, 'out', 'host',
utils.build_os_type(), 'bin')
@@ -205,7 +216,7 @@
targets = [args.target] if args.target else TARGETS
for target in targets:
build_target(args.android_path, clang_version, target,
- args.jobs, args.redirect_stderr)
+ args.jobs, args.redirect_stderr, args.with_tidy)
else:
devices = get_connected_device_list()
if len(devices) == 0:
@@ -213,7 +224,8 @@
for device in devices:
result = test_device(args.android_path, clang_version, device,
args.jobs, args.clean_built_target,
- args.flashall_path, args.redirect_stderr)
+ args.flashall_path, args.redirect_stderr,
+ args.with_tidy)
if not result and not args.keep_going:
break