From 08ce1fb541374fb1ddce1d7318ceb92459942e9e Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Thu, 19 Sep 2019 20:49:33 +0800 Subject: 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. --- mesonbuild/environment.py | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'mesonbuild/environment.py') diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index ee5b568..7c10825 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -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)] -- cgit v1.1 From 0390b673f11cc2834b6a04e1fc5e58e4cb24afcb Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Thu, 19 Sep 2019 21:24:04 +0800 Subject: Find clang-format with alternative names This is similar to what we currently do for scan-build except there is no environment variable to choose a specific clang-format to run. If an environment variable is needed for better control, we can add it later. --- mesonbuild/environment.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'mesonbuild/environment.py') diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 7c10825..0fec347 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -189,7 +189,7 @@ def get_llvm_tool_names(tool: str) -> typing.List[str]: names.append(tool + suffix) return names -def detect_scanbuild(): +def detect_scanbuild() -> typing.List[str]: """ Look for scan-build binary on build platform First, if a SCANBUILD env variable has been provided, give it precedence @@ -220,6 +220,22 @@ def detect_scanbuild(): return [tool] return [] +def detect_clangformat() -> typing.List[str]: + """ Look for clang-format binary on build platform + + Do the same thing as detect_scanbuild to find clang-format except it + currently does not check the environment variable. + + Return: a single-element list of the found clang-format binary ready to be + passed to Popen() + """ + tools = get_llvm_tool_names('clang-format') + for tool in tools: + path = shutil.which(tool) + if path is not None: + return [path] + return [] + def detect_native_windows_arch(): """ The architecture of Windows itself: x86, amd64 or arm64 -- cgit v1.1 From 24bd0294372d388160d3b093407d6f0db9aa5481 Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Fri, 20 Sep 2019 23:37:59 +0800 Subject: environment: LLVM 9 is now a stable release --- mesonbuild/environment.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'mesonbuild/environment.py') diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 0fec347..38f9004 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -171,6 +171,7 @@ def get_llvm_tool_names(tool: str) -> typing.List[str]: # unless it becomes a stable release. suffixes = [ '', # base (no suffix) + '-9', '90', '-8', '80', '-7', '70', '-6.0', '60', @@ -181,7 +182,7 @@ def get_llvm_tool_names(tool: str) -> typing.List[str]: '-3.7', '37', '-3.6', '36', '-3.5', '35', - '-9', # Debian development snapshot + '-10', # Debian development snapshot '-devel', # FreeBSD development snapshot ] names = [] -- cgit v1.1