From 3204f6e0e87bca3a9f828174c2f03afae8ffab1e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 8 Sep 2022 07:27:20 +0200 Subject: [PATCH] tell IDF build system to use Clang toolchain --- pyclang/runner.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pyclang/runner.py b/pyclang/runner.py index fbd853f..3d5a553 100644 --- a/pyclang/runner.py +++ b/pyclang/runner.py @@ -205,14 +205,26 @@ def idf_reconfigure(self, *args) -> 'Runner': folder = args[0] log_fs = args[1] + # tell IDF build system to prepare compilation commands for Clang based toolchain + env = os.environ.copy() + env['IDF_TOOLCHAIN'] = 'clang' + run_cmd( - f'idf.py -B {self.build_dir} reconfigure', log_stream=log_fs, cwd=folder + f'idf.py -B {self.build_dir} reconfigure', log_stream=log_fs, cwd=folder, env=env ) @chain def remove_command_flags(self, *args): folder = args[0] + # see if the IDF version recognizes Clang toolchain + with open(os.path.join(folder, self.build_dir, 'CMakeCache.txt'), 'r') as cmake_cache_fp: + cmake_cache = cmake_cache_fp.read() + if 'IDF_TOOLCHAIN:STRING=clang' in cmake_cache: + # it does! nothing to do here, compile_commands.json already contains clang-compatible flags + return + + # if it doesn't, need to remove GCC-specific flags from compile_commands.json compiled_command_fp = os.path.join( folder, self.build_dir, self.COMPILE_COMMANDS_FILENAME )