From fa6bf1e588377cfe77b025a3613cbbf6772bc70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bence=20Sz=C3=A9pk=C3=BAti?= Date: Mon, 10 May 2021 20:50:07 +0200 Subject: [PATCH] Detect MSVC without relying on compiler filename MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bence Szépkúti --- scripts/mbedtls_dev/c_build_helper.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scripts/mbedtls_dev/c_build_helper.py b/scripts/mbedtls_dev/c_build_helper.py index e9e65c30ace2..569ebf064a52 100644 --- a/scripts/mbedtls_dev/c_build_helper.py +++ b/scripts/mbedtls_dev/c_build_helper.py @@ -89,6 +89,7 @@ def generate_c_file(c_file, } ''') +_cc_is_msvc = None #pylint: disable=invalid-name def get_c_expression_values( cast_to, printf_format, expressions, @@ -128,11 +129,20 @@ def get_c_expression_values( ) c_file.close() cc = os.getenv('CC', 'cc') - cc_is_msvc = os.path.split(cc)[1].lower() in ('cl', 'cl.exe') cmd = [cc] + + global _cc_is_msvc #pylint: disable=global-statement,invalid-name + if _cc_is_msvc is None: + proc = subprocess.Popen(cmd, + stdout=subprocess.DEVNULL, + stderr=subprocess.PIPE, + universal_newlines=True) + _cc_is_msvc = 'Microsoft (R) C/C++ Optimizing Compiler' in \ + proc.communicate()[1] + cmd += ['-I' + dir for dir in include_path] # MSVC has deprecated using -o to specify the output file. - output_opt = '-Fe' if cc_is_msvc else '-o' + output_opt = '-Fe' if _cc_is_msvc else '-o' cmd += [output_opt + exe_name] subprocess.check_call(cmd + [c_name]) if keep_c: