edk2/BaseTools/Source/Python/AutoGen
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
..
__init__.py BaseTools: Replace BSD License with BSD+Patent License 2019-04-09 09:10:20 -07:00
AutoGen.py BaseTools: Decouple AutoGen Objects 2019-08-09 23:15:52 +08:00
AutoGenWorker.py BaseTools: Move gPlatformFinalPcd to Datapipe and optimize size 2022-04-22 13:55:16 +00:00
BuildEngine.py BaseTools: AutoGen: Remove unnecessary code 2025-07-01 09:51:38 +08:00
DataPipe.py BaseTools: Move gPlatformFinalPcd to Datapipe and optimize size 2022-04-22 13:55:16 +00:00
GenC.py BaseTools: Remove DXE_SAL_DRIVER 2025-10-30 10:00:32 +00:00
GenDepex.py BaseTools: Remove DXE_SAL_DRIVER 2025-10-30 10:00:32 +00:00
GenMake.py BaseTools: GNUMakefiles must use CMD.EXE in Windows 2025-12-24 02:03:38 +00:00
GenPcdDb.py BaseTools: AutoGen: Optimize tuple creation using tuple() for PcdDbBuffer 2025-12-02 02:21:22 +00:00
GenVar.py BaseTools: AutoGen: Remove unnecessary code 2025-07-01 09:51:38 +08:00
IdfClassObject.py BaseTools: Resolve regex syntax warnings 2023-12-21 00:33:31 +00:00
IncludesAutoGen.py BaseTools/build.py: Use full source file path for dependency generation 2026-07-17 10:54:11 +00:00
InfSectionParser.py BaseTools: Replace BSD License with BSD+Patent License 2019-04-09 09:10:20 -07:00
ModuleAutoGen.py BaseTools: fix various typos 2025-11-21 21:49:59 +00:00
ModuleAutoGenHelper.py BaseTools: Fix New Target/ToolChain/Arch in DSC [BuildOptions] issues 2021-05-03 18:16:23 +00:00
PlatformAutoGen.py BaseTools: AutoGen: Remove unnecessary code 2025-07-01 09:51:38 +08:00
StrGather.py BaseTools: Resolve regex syntax warnings 2023-12-21 00:33:31 +00:00
UniClassObject.py BaseTools: AutoGen: Remove unnecessary code 2025-07-01 09:51:38 +08:00
ValidCheckingInfoObject.py BaseTools: AutoGen: Remove unnecessary code 2025-07-01 09:51:38 +08:00
WorkspaceAutoGen.py BaseTools: Optimize GenerateByteArrayValue and CollectPlatformGuids APIs 2024-02-08 04:08:38 +00:00