[PATCH] [utils] Improvements to check_cfc.py to work better with build systems
Phabricator
reviews at reviews.llvm.org
Wed Jun 3 08:13:23 PDT 2015
REPOSITORY
rL LLVM
http://reviews.llvm.org/D10183
Files:
cfe/trunk/utils/check_cfc/check_cfc.py
cfe/trunk/utils/check_cfc/test_check_cfc.py
Index: cfe/trunk/utils/check_cfc/test_check_cfc.py
===================================================================
--- cfe/trunk/utils/check_cfc/test_check_cfc.py
+++ cfe/trunk/utils/check_cfc/test_check_cfc.py
@@ -103,6 +103,16 @@
check_cfc.is_normal_compile(['clang', '-c', 'test.cpp', '--version']))
self.assertFalse(
check_cfc.is_normal_compile(['clang', '-c', 'test.cpp', '--help']))
+ # Outputting dependency files is not a normal compile
+ self.assertFalse(
+ check_cfc.is_normal_compile(['clang', '-c', '-M', 'test.cpp']))
+ self.assertFalse(
+ check_cfc.is_normal_compile(['clang', '-c', '-MM', 'test.cpp']))
+ # Creating a dependency file as a side effect still outputs an object file
+ self.assertTrue(
+ check_cfc.is_normal_compile(['clang', '-c', '-MD', 'test.cpp']))
+ self.assertTrue(
+ check_cfc.is_normal_compile(['clang', '-c', '-MMD', 'test.cpp']))
def test_replace_output_file(self):
self.assertEqual(check_cfc.replace_output_file(
Index: cfe/trunk/utils/check_cfc/check_cfc.py
===================================================================
--- cfe/trunk/utils/check_cfc/check_cfc.py
+++ cfe/trunk/utils/check_cfc/check_cfc.py
@@ -213,16 +213,18 @@
def is_normal_compile(args):
"""Check if this is a normal compile which will output an object file rather
- than a preprocess or link."""
+ than a preprocess or link. args is a list of command line arguments."""
compile_step = '-c' in args
# Bitcode cannot be disassembled in the same way
bitcode = '-flto' in args or '-emit-llvm' in args
# Version and help are queries of the compiler and override -c if specified
query = '--version' in args or '--help' in args
+ # Options to output dependency files for make
+ dependency = '-M' in args or '-MM' in args
# Check if the input is recognised as a source file (this may be too
# strong a restriction)
input_is_valid = bool(get_input_file(args))
- return compile_step and not bitcode and not query and input_is_valid
+ return compile_step and not bitcode and not query and not dependency and input_is_valid
def run_step(command, my_env, error_on_failure):
"""Runs a step of the compilation. Reports failure as exception."""
@@ -379,7 +381,7 @@
checker.perform_check(arguments_a, my_env)
except WrapperCheckException as e:
# Check failure
- print(e.msg, file=sys.stderr)
+ print("{} {}".format(get_input_file(arguments_a), e.msg), file=sys.stderr)
# Remove file to comply with build system expectations (no
# output file if failed)
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10183.27039.patch
Type: text/x-patch
Size: 2780 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150603/fc83120b/attachment.bin>
More information about the cfe-commits
mailing list