Skip to content

Files To Edit When Adding Or Removing Files

Stephan T. Lavavej edited this page Feb 16, 2024 · 27 revisions

The following are lists of files that need to be updated whenever we add a header file, source file, or binary to the STL.

  • "Headers" are consumed directly or indirectly by users. Headers can be public, which means we intend for customers to include them directly and we consider their names and contents contractual, like <vector>. We also have private headers which are internal implementation details, like <xutility>.
  • "Sources" are compiled into msvcp140.dll/libcpmt.lib/etc. For example, filesystem.cpp and xmath.hpp.
  • "Binaries" are arch/flavor-specific DLLs (and their PDBs). For example, bin\i386\onecore\msvcp140_codecvt_ids.dll and bin\i386\msvcp140_codecvt_ids.i386.onecore.pdb.

Adds, renames, and deletes are handled identically, except that the IDE's list of extensionless headers should generally never stop mentioning names.

This GitHub Repo

  • stl/CMakeLists.txt
    • When adding headers or sources, so that the build system picks them up.
  • stl/msbuild/stl_base/stl.files.settings.targets
    • When adding sources, so that the legacy build system picks them up.
  • stl/inc/__msvc_all_public_headers.hpp
    • When adding public headers, so that customers who are using this header as a way to test all the standard library headers are actually testing all the standard library headers. Note that this has separate sections for core and non-core headers.
  • stl/inc/header-units.json
    • When adding headers, so that the compiler's /translateInclude will automatically translate from #include <meow> to import <meow>;. (Both public headers and private headers should be listed here.)
  • stl/modules/std.ixx
    • When adding Standard public headers, add them to the std module here. (This will automatically add them to the std.compat module.)
  • tests/std/tests/include_each_header_alone_matrix.lst
    • When adding public headers, this test makes sure each header can be included by itself and that we don't have any accidental internal dependencies.
  • tests/std/tests/P1502R1_standard_library_header_units/importable_cxx_library_headers.jsonc
  • tests/std/tests/P1502R1_standard_library_header_units/test.cpp
  • tests/std/include/test_header_units_and_modules.hpp
    • When adding Standard public headers, add test coverage for Standard Library Header Units and Modules.

MSVC Internal Repo

  • Notify the vctowner and msvc-qb aliases when editing any installer-related files.
    • Note: We need to notify them with a new email so it can be properly noticed and acted upon. Don't CC them on an existing email thread, and don't ping them in a code review - those can easily be missed.
  • src/vctools/crt/lkgsync/updatelkgmanifest.cmd
    • When adding headers or sources, run this to update scripts used for synchronizing libraries team code into the Windows tree.
  • src/SetupPackages/swix/crt.headers/files.base.swr
    • Update this list to get new headers picked up by the Visual Studio installers.
  • src/SetupPackages/swix/crt.source/files.base.swr
    • Update this list to get new sources picked up by the Visual Studio installers.
  • src/vctools/crt/copy_crt/copy_crt_early.vcxproj
    • When adding headers, this is used by parts of the build that consume the "live" headers.
  • src/qa/VC/FE/compiler/tests/cxx/modules/dependency-scanning/header-units/deps.cpp
  • src/qa/VC/FE/compiler/tests/cxx/modules/dependency-scanning/header-units/stl-header-units.dat
    • When adding headers to header-units.json, this provides test coverage.
  • src/vctools/StdIfc/modules/core.cpp
    • When adding Standard public headers, add to this list to ensure they're included in the "experimental modules" support.
  • src/vctools/crt/msdl_publishing/msdl_publishing.xml
    • When adding binaries for which we want to publish private symbols and binaries to the public symbol server, we need to add each architecture and flavor of the DLL and its PDB to this file under the corresponding architecture. We need to run msdl_publishing/checkmsdlxml.cmd to ensure edits are reflected in the local build.

VS Internal Repo

  • src/vc/designtime/pkg/src/VC_Pkg_Core_Registration.pkgdef
  • src/vc/designtime/TextMate/cpp.tmLanguage.json