Move the list of LLVM version suffixes to a common place

Both scan-build and llvm-config need the same list of LLVM version
suffixes. It is better to keep the list at a common place instead of
having several copies in different files, which is likely to become
out-of-sync when the list is updated.
pull/5939/head
Ting-Wei Lan 5 years ago
parent d6c4e79c84
commit 08ce1fb541
  1. 21
      mesonbuild/dependencies/dev.py
  2. 41
      mesonbuild/environment.py

@ -22,6 +22,7 @@ import re
from .. import mesonlib, mlog
from ..mesonlib import version_compare, stringlistify, extract_as_list, MachineChoice
from ..environment import get_llvm_tool_names
from .base import (
DependencyException, DependencyMethods, ExternalDependency, PkgConfigDependency,
strip_system_libdirs, ConfigToolDependency, CMakeDependency, HasNativeKwarg
@ -208,25 +209,7 @@ class LLVMDependencyConfigTool(ConfigToolDependency):
# before `super().__init__` is called.
HasNativeKwarg.__init__(self, kwargs)
# Ordered list of llvm-config binaries to try. Start with base, then try
# newest back to oldest (3.5 is arbitrary), and finally the devel version.
# Please note that llvm-config-6.0 is a development snapshot and it should
# not be moved to the beginning of the list.
self.tools = [
'llvm-config', # base
'llvm-config-8', 'llvm-config80',
'llvm-config-7', 'llvm-config70',
'llvm-config-6.0', 'llvm-config60',
'llvm-config-5.0', 'llvm-config50',
'llvm-config-4.0', 'llvm-config40',
'llvm-config-3.9', 'llvm-config39',
'llvm-config-3.8', 'llvm-config38',
'llvm-config-3.7', 'llvm-config37',
'llvm-config-3.6', 'llvm-config36',
'llvm-config-3.5', 'llvm-config35',
'llvm-config-9', # Debian development snapshot
'llvm-config-devel', # FreeBSD development snapshot
]
self.tools = get_llvm_tool_names('llvm-config')
# Fedora starting with Fedora 30 adds a suffix of the number
# of bits in the isa that llvm targets, for example, on x86_64

@ -163,6 +163,32 @@ def detect_ninja(version: str = '1.5', log: bool = False) -> str:
mlog.log('Found {}-{} at {}'.format(name, found, quote_arg(n)))
return n
def get_llvm_tool_names(tool: str) -> typing.List[str]:
# Ordered list of possible suffixes of LLVM executables to try. Start with
# base, then try newest back to oldest (3.5 is arbitrary), and finally the
# devel version. Please note that the development snapshot in Debian does
# not have a distinct name. Do not move it to the beginning of the list
# unless it becomes a stable release.
suffixes = [
'', # base (no suffix)
'-8', '80',
'-7', '70',
'-6.0', '60',
'-5.0', '50',
'-4.0', '40',
'-3.9', '39',
'-3.8', '38',
'-3.7', '37',
'-3.6', '36',
'-3.5', '35',
'-9', # Debian development snapshot
'-devel', # FreeBSD development snapshot
]
names = []
for suffix in suffixes:
names.append(tool + suffix)
return names
def detect_scanbuild():
""" Look for scan-build binary on build platform
@ -182,20 +208,7 @@ def detect_scanbuild():
exelist = split_args(os.environ['SCANBUILD'])
else:
tools = [
'scan-build', # base
'scan-build-8', 'scan-build80',
'scan-build-7', 'scan-build70',
'scan-build-6.0', 'scan-build60',
'scan-build-5.0', 'scan-build50',
'scan-build-4.0', 'scan-build40',
'scan-build-3.9', 'scan-build39',
'scan-build-3.8', 'scan-build38',
'scan-build-3.7', 'scan-build37',
'scan-build-3.6', 'scan-build36',
'scan-build-3.5', 'scan-build35',
'scan-build-9', 'scan-build-devel', # development snapshot
]
tools = get_llvm_tool_names('scan-build')
for tool in tools:
if shutil.which(tool) is not None:
exelist = [shutil.which(tool)]

Loading…
Cancel
Save