edk2/BaseTools/Source/Python
kowsiks 2fc0e060ef BaseTools/build.py: Use full source file path for dependency generation
During Silent build,NMAKE suppresses the command echo entirely.
As a result, the only output in ProcOut is the
MSVC compiler’s output lines.
Without the command echo, there is no full path in the output to
identify which source file is currently being compiled.
For unique basenames this is not an issue, but for namesake files
(for example, AmdSev.c located in different directories),
it is impossible to determine which file’s includes are being listed.

This change improves dependency generation for MSVC builds by introducing
explicit handling for source files with duplicate basenames
(namesake sources). A new variable current_source_abs is added to
consistently track the resolved absolute path of the active source file
instead of repeatedly recomputing it from SourceFileAbsPathMap.
To correctly resolve namesake files in silent builds
(where compiler commands are not echoed), a namesake_queue is introduced,
which preserves source ordering and sequentially maps basename occurrences
to their corresponding full paths.
Additionally, a cc_cmd_in_output flag is implemented to detect the presence
of compiler command lines in the output stream; when present,
source paths are derived directly from command-line arguments, otherwise
the queue-based resolution is used. This ensures correct mapping of
basenames to absolute paths across the silent builds, fixing incorrect
dependency generation when multiple source files share the same name.

Signed-off-by: Kowsik S <kowsiks@ami.com>
2026-07-17 10:54:11 +00:00
..
AmlToC BaseTools: Resolve regex syntax warnings 2023-12-21 00:33:31 +00:00
AutoGen BaseTools/build.py: Use full source file path for dependency generation 2026-07-17 10:54:11 +00:00
BPDG BaseTools: Remove unused import 2025-07-01 09:51:38 +08:00
build BaseTools/build: Add defines for Windows build environments 2026-01-06 04:44:08 +00:00
Capsule BaseTools/Capsule: Prevent to Read the STDOUT Content as Signature 2026-05-26 06:51:14 +00:00
Common BaseTools: Reject Inline Comments in tools_def 2026-04-21 00:18:43 +00:00
CommonDataClass BaseTools: Fix MODEL_IDENTIFIER_MACRO_PROGMA typo 2026-06-26 02:18:38 +00:00
Ecc BaseTools/Ecc: Add check for traditional include guards 2026-06-26 02:18:38 +00:00
Eot BaseTools: Fix MODEL_IDENTIFIER_MACRO_PROGMA typo 2026-06-26 02:18:38 +00:00
FirmwareStorageFormat BaseTools: Enable FMMT Rebase function 2025-11-23 23:30:49 +00:00
FMMT BaseTools: fix mdlint issues 2026-03-04 22:02:33 +00:00
GenFds BaseTools/GenFds: Print INF name on Depex eval failure 2026-07-09 09:58:04 +00:00
GenPatchPcdTable BaseTools: Resolve regex syntax warnings 2023-12-21 00:33:31 +00:00
PatchPcdValue BaseTools: Decouple AutoGen Objects 2019-08-09 23:15:52 +08:00
Pkcs7Sign BaseTools: fix mdlint issues 2026-03-04 22:02:33 +00:00
Rsa2048Sha256Sign BaseTools:Updata the output encoding of the Popen function 2019-08-01 15:36:48 +08:00
Split BaseTools: use shutil.copyfile instead shutil.copy2 2021-08-02 03:52:15 +00:00
Table BaseTools: Table: Remove unnecessary code 2025-07-01 09:51:38 +08:00
TargetTool BaseTools: Remove ARM32 Support 2025-09-25 22:04:10 +00:00
tests/Split BaseTools: fix the split output files root dir 2021-02-07 01:46:18 +00:00
Trim BaseTools/Source/Python/Trim: Add -f/--source-code-format option 2026-03-06 19:47:31 +00:00
UPT BaseTools: Fix MODEL_IDENTIFIER_MACRO_PROGMA typo 2026-06-26 02:18:38 +00:00
Workspace BaseTools/Build: Fix arch macro expansion scope in DSC parser 2026-06-23 02:21:25 +00:00
basetool_tiano_python_path_env.yaml BaseTools: Add YAML files with path env and tool extdeps 2019-11-11 13:01:53 -08:00
GNUmakefile BaseTools: Replace BSD License with BSD+Patent License 2019-04-09 09:10:20 -07:00
Makefile BaseTools: strip trailing whitespace 2019-10-04 11:18:22 +01:00
sitecustomize.py BaseTools: Do not call sys.setdefaultencoding with python 3 2019-10-23 14:25:23 +08:00