diff --git a/scripts/mbedtls_dev/c_build_helper.py b/scripts/mbedtls_dev/c_build_helper.py index 569ebf064a..4ce96ebfaa 100644 --- a/scripts/mbedtls_dev/c_build_helper.py +++ b/scripts/mbedtls_dev/c_build_helper.py @@ -45,9 +45,11 @@ def create_c_file(file_label): suffix='.c') exe_suffix = '.exe' if platform.system() == 'Windows' else '' exe_name = c_name[:-2] + exe_suffix + obj_name = c_name[:-2] + '.obj' remove_file_if_exists(exe_name) + remove_file_if_exists(obj_name) c_file = os.fdopen(c_fd, 'w', encoding='ascii') - return c_file, c_name, exe_name + return c_file, c_name, exe_name, obj_name def generate_c_printf_expressions(c_file, cast_to, printf_format, expressions): """Generate C instructions to print the value of ``expressions``. @@ -120,7 +122,7 @@ def get_c_expression_values( c_name = None exe_name = None try: - c_file, c_name, exe_name = create_c_file(file_label) + c_file, c_name, exe_name, obj_name = create_c_file(file_label) generate_c_file( c_file, caller, header, lambda c_file: generate_c_printf_expressions(c_file, @@ -141,15 +143,20 @@ def get_c_expression_values( 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' - cmd += [output_opt + exe_name] + if _cc_is_msvc: + # MSVC has deprecated using -o to specify the output file, + # and produces an object file in the working directory by default. + cmd += ['-Fe' + exe_name, '-Fo' + obj_name] + else: + cmd += ['-o' + exe_name] subprocess.check_call(cmd + [c_name]) if keep_c: sys.stderr.write('List of {} tests kept at {}\n' .format(caller, c_name)) else: os.remove(c_name) + if _cc_is_msvc: + os.remove(obj_name) output = subprocess.check_output([exe_name]) return output.decode('ascii').strip().split('\n') finally: