Commit Graph

13 Commits

Author SHA1 Message Date
Thomas Nagy 8cbc8da5ce
Undo parentheses escaping in ant_glob 2019-05-10 23:13:01 +02:00
Michael Vincent 9caad8c3ba msvcdeps: use ant_glob() to get correct case of include paths
When using msvcdeps, header dependencies are not detected reliably for
generated source files. The root cause is a bug in versions of MSVC
prior to VS2019 16.0 in which it emits lower-case path prefixes when
resolving include paths relative to the containing file. Absolute paths
and paths relative to include directories passed in the MSVC command
line are, in contrast, case-correct.

Such a file-relative include directive with an incorrect lower-case
prefix derails waf's node hash signature handling and fails silently.

This change uses ant_glob() with the ignorecase keyword argument to
find the file on the filesystem with the correct case. The prior
case-correction code has been superseded and was removed.

See the following Visual Studio bug report for details on the issue:
https://developercommunity.visualstudio.com/content/problem/233871/showincludes-lowercases-some-path-segments.html
2019-05-08 17:22:00 -05:00
Michael Vincent 7c362340af msvcdeps: remove path_to_node()'s path list support
Make path_to_node() only accept a path as a string instead of also as a
list. That requires joining the list of path components in the relative
path case before calling path_to_node(). Also use path.pop(0) to remove
the first path component instead of copying the remainder of the path
using a slice operator.
2019-05-08 17:22:00 -05:00
Michael Vincent 8b5a2a2086 msvcdeps: refactor cache lock
Rework how msvcdeps' cached_nodes lock is used so acquiring the lock is
only necessary on a cache miss. Also use a "with" context manager to
simplify management of the lock lifecycle.
2019-05-08 17:22:00 -05:00
Kevin Markussen cce984f77b msvcdeps: fix 'WafError' AttributeError
This patch corrects an error in the exec_response_command exception
handler which always assumed that the execution's stdout would be bound
to the the WafError exception object.

However, this assumption is only true when the execution completes with
a non-zero status code. For other exceptions, the stdout attribute is
not bound.

Now, when stdout is not available, the WafError msg will be used
instead.
2019-04-16 17:28:28 -05:00
Thomas Nagy e64467892c
Warn against loading gccdeps/msvcdeps options 2017-09-23 09:21:14 +02:00
Thomas Nagy 3e47e4250e
Display @argfile contents in msvcdeps #1831 2016-10-11 18:34:35 +02:00
Thomas Nagy 3c2c6a62b0
Remove leftover 'print' statements 2016-07-27 20:22:48 +02:00
Thomas Nagy 7aaa7c14ba
Make gccdeps and msvcdeps compatible - #1780 2016-07-26 19:41:57 +02:00
Thomas Nagy c916febaf7
Update some old code 2016-07-25 22:12:35 +02:00
Thomas Nagy 02a8361149
Beautify Logs.{debug,error,info,warn} now that the formatting bug is fixed 2016-05-28 16:18:51 +02:00
Thomas Nagy e9fd0660dc Undefined 'logger' variable 2013-07-16 21:00:02 +02:00
Matt Hoosier 1aad65b886 Add 'msvcdeps' tool
This tool operates similarly to 'gccdeps' by offloading the
flattening of the #include dependency tree to the compiler.

Change-Id: I5e58e8ca838f3d3dc65efa6ce4abf161110632ea

Signed-off-by: Thomas Nagy <tnagy2pow10@gmail.com>
2013-07-16 20:57:06 +02:00