From d755eb530eb5e012be3abe1bf96ccf9ccc48d750 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 14:12:08 -0700 Subject: [PATCH 01/15] Add block diagram to readme. --- README.md | 8 ++++- doc/msvc_libraries.plantuml | 46 +++++++++++++++++++++++++++ doc/msvc_libraries.plantuml.svg | 56 +++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 doc/msvc_libraries.plantuml create mode 100644 doc/msvc_libraries.plantuml.svg diff --git a/README.md b/README.md index 00b17901638..327b84614fc 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,13 @@ ninja -C {wherever_you_want_binaries} # How to Consume (COMING SOON) -# Block Diagram (COMING SOON) +# Block Diagram + +The STL is built atop other compiler support libraries that ship with Windows and Visual Studio. As such you might see +maintainers here talk about "vcruntime" or "vcstartup" or "the UCRT". The following diagram describes the dependencies +between those components and their ship vehicles. + +![MSVC Libraries Block Diagram](doc/msvc_libraries.plantuml.svg) # Contributing diff --git a/doc/msvc_libraries.plantuml b/doc/msvc_libraries.plantuml new file mode 100644 index 00000000000..4295539d0dc --- /dev/null +++ b/doc/msvc_libraries.plantuml @@ -0,0 +1,46 @@ +@startuml MSVC Library Layer Diagram + +package "Visual Studio" { + + component STL [ + STL + This repo; provides C++ standard library headers, separately compiled + implementations of most of the iostreams functionality, and a few runtime + support components that live in std like exception_ptr. + ] + + package VCRuntime as VCRuntimePackage { + component VCStartup [ + VCStartup + Provides compiler support mechanisms that live in each binary; + such as the entry point, the /GS cookie, and to call constructors + and destructors for global variables. + + Merged into static and import libraries of VCRuntime. + ] + + component VCRuntime [ + VCRuntime + Provides compiler support mechanisms that can be shared between + binaries; code that the compiler calls on your behalf, such as + the C++ exception handling runtime, string.h intrinsics, + math intrinsics, and declarations for CPU vendor specific + ] + + [VCStartup] --> [VCRuntime] + } +} + +package "Windows SDK" { + component UCRT [ + Universal CRT + Windows component that provides C library support, such as printf, + C locales, and some POSIX-like shims for the Windows API, like _stat. + ] +} + +STL --> UCRT +STL --> VCRuntimePackage +VCRuntime --> UCRT + +@enduml diff --git a/doc/msvc_libraries.plantuml.svg b/doc/msvc_libraries.plantuml.svg new file mode 100644 index 00000000000..58e149edc6a --- /dev/null +++ b/doc/msvc_libraries.plantuml.svg @@ -0,0 +1,56 @@ +Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ standard library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components that live in std like exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary;such as the entry point, the /GS cookie, and to call constructorsand destructors for global variables.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics,math intrinsics, and declarations for CPU vendor specificUniversal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. \ No newline at end of file From 25bfc660f281a15e38e78807fb07d0b6a5e5f621 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 16:27:15 -0700 Subject: [PATCH 02/15] Add better build instructions to readme. --- README.md | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 327b84614fc..70441cd4947 100644 --- a/README.md +++ b/README.md @@ -148,14 +148,36 @@ mention `std::` or C++. For example, "``: `is_cute` should be true It's okay if you report an apparent STL bug that turns out to be a compiler bug, or surprising-yet-Standard behavior. Just try to follow these rules, so we can spend more time fixing bugs and implementing features. -# How to Build (COMING SOON) - -``` -Copy trnsctrl.h from vcruntime to your local VS inc directory. # TRANSITION, Unnecessary after VS 2019 16.3 Preview 3 or Preview 4 (depending on when PR 197564 lands) -vcpkg install boost-math --triplet x64-windows -cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg is located}/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DVCPKG_TARGET_ARCHITECTURE={one of x86, x64, arm, arm64} -DVCLIBS_SUFFIX={whatever you want, defaults to "oss"} -S . -B {wherever_you_want_binaries} -ninja -C {wherever_you_want_binaries} -``` +# How to Build with Visual Studio + +The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend use of vcpkg to acquire +this dependency. + +1. `git clone` vcpkg from https://github.com/Microsoft/vcpkg +2. Open a command prompt to the vcpkg clone location, and invoke `.\bootstrap-vcpkg.bat` +3. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost dependency. +4. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never + done this before, you may be prompted to elevate. +5. Open Visual Studio 2019 16.3 or later, and choose the "Open a local folder" option. Choose the path to a clone + of this repository. +6. Choose the architecure you wish to build in the IDE, and build as you would any other project. (All necessary cmake + settings are set by `CMakeSettings.json` and `vcpkg integrate`) + +# How to Build with a Native Tools Command Prompt + +These instructions assume you're targeting `x64-windows`; you can change this constant below to target other +architectures. + +1. Install cmake from https://cmake.org/download/, ninja from https://ninja-build.org/, and Visual Studio 2019 16.3 or + later. +2. `git clone` vcpkg from https://github.com/Microsoft/vcpkg +3. Open a command prompt to the vcpkg clone location, and invoke `.\bootstrap-vcpkg.bat` +4. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost dependency. +5. Open a "x64 Native Tools Command Prompt for VS 2019" prompt, and change directories to the location of a clone of + this repository. +6. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever_you_want_binaries}` + to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) +7. Invoke `ninja -C {wherever_you_want_binaries}` to build the project. (For example, `ninja -C build.x64`) # How to Consume (COMING SOON) From 3a1efc0684c7974d80980e0e9468d19d988adc38 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 18:19:30 -0700 Subject: [PATCH 03/15] Remove potentially confusing comment. --- doc/msvc_libraries.plantuml.svg | 57 +-------------------------------- 1 file changed, 1 insertion(+), 56 deletions(-) diff --git a/doc/msvc_libraries.plantuml.svg b/doc/msvc_libraries.plantuml.svg index 58e149edc6a..a444f94ef7f 100644 --- a/doc/msvc_libraries.plantuml.svg +++ b/doc/msvc_libraries.plantuml.svg @@ -1,56 +1 @@ -Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ standard library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components that live in std like exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary;such as the entry point, the /GS cookie, and to call constructorsand destructors for global variables.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics,math intrinsics, and declarations for CPU vendor specificUniversal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. \ No newline at end of file +Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ standard library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components that live in std like exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary;such as the entry point, the /GS cookie, and to call constructorsand destructors for global variables.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics,math intrinsics, and declarations for CPU vendor specificUniversal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. From 0b37d6fd707aed2b1088ddc16df9250ec2c7325f Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:12:11 -0700 Subject: [PATCH 04/15] First pass at readme review comments, and coalesce links. --- README.md | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 70441cd4947..6e2d598a443 100644 --- a/README.md +++ b/README.md @@ -115,8 +115,6 @@ review a production-ready pull request. You can report STL bugs here, where they'll be directly reviewed by maintainers. You can also report STL bugs through [Developer Community][], or the VS IDE (Help > Send Feedback > Report a Problem...). -[Developer Community]: https://developercommunity.visualstudio.com/spaces/62/index.html - **Please help us** efficiently process bug reports by following these rules: * Only STL bugs should be reported here. If it's a bug in the compiler, CRT, or IDE, please report it through Developer @@ -124,16 +122,12 @@ Community or Report A Problem. If it's a bug in the Windows SDK, please report i If you aren't sure, try to reduce your test case and see if you can eliminate the STL's involvement while still reproducing the bug. -[hub]: https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app * You should be reasonably confident that you're looking at an actual implementation bug, instead of undefined behavior or surprising-yet-Standard behavior. Comparing against other implementations can help (but remember that implementations can differ while conforming to the Standard); try Godbolt's [Compiler Explorer][] and [Wandbox][]. If you still aren't sure, ask the nearest C++ expert. -[Compiler Explorer]: https://godbolt.org -[Wandbox]: https://wandbox.org - * You should prepare a self-contained command-line test case, ideally as small as possible. We need a source file, a command line, what happened (e.g. a compiler error, runtime misbehavior), and what you expected to happen. By "self-contained", we mean that your source file has to avoid including code that we don't have. Ideally, only CRT and @@ -148,19 +142,21 @@ mention `std::` or C++. For example, "``: `is_cute` should be true It's okay if you report an apparent STL bug that turns out to be a compiler bug, or surprising-yet-Standard behavior. Just try to follow these rules, so we can spend more time fixing bugs and implementing features. -# How to Build with Visual Studio +# How to Build with the Visual Studio IDE -The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend use of vcpkg to acquire +The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend using [vcpkg] to acquire this dependency. -1. `git clone` vcpkg from https://github.com/Microsoft/vcpkg -2. Open a command prompt to the vcpkg clone location, and invoke `.\bootstrap-vcpkg.bat` -3. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost dependency. -4. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never +1. Install Visual Studio 2019 16.3 or later. +2. Invoke `git clone https://github.com/Microsoft/vcpkg` +3. Invoke `.\bootstrap-vcpkg.bat` +4. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost-math dependency. +5. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never done this before, you may be prompted to elevate. -5. Open Visual Studio 2019 16.3 or later, and choose the "Open a local folder" option. Choose the path to a clone +6. Invoke `git clone https://github.com/Microsoft/STL` +7. Open Visual Studio 2019 16.3 or later, and choose the "Open a local folder" option. Choose the path to a clone of this repository. -6. Choose the architecure you wish to build in the IDE, and build as you would any other project. (All necessary cmake +8. Choose the architecture you wish to build in the IDE, and build as you would any other project. (All necessary CMake settings are set by `CMakeSettings.json` and `vcpkg integrate`) # How to Build with a Native Tools Command Prompt @@ -168,16 +164,16 @@ this dependency. These instructions assume you're targeting `x64-windows`; you can change this constant below to target other architectures. -1. Install cmake from https://cmake.org/download/, ninja from https://ninja-build.org/, and Visual Studio 2019 16.3 or - later. -2. `git clone` vcpkg from https://github.com/Microsoft/vcpkg -3. Open a command prompt to the vcpkg clone location, and invoke `.\bootstrap-vcpkg.bat` -4. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost dependency. -5. Open a "x64 Native Tools Command Prompt for VS 2019" prompt, and change directories to the location of a clone of - this repository. -6. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever_you_want_binaries}` - to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) -7. Invoke `ninja -C {wherever_you_want_binaries}` to build the project. (For example, `ninja -C build.x64`) +1. Install [CMake][] 3.15 or later, [Ninja][], and Visual Studio 2019 16.3 or later. +2. Invoke `git clone https://github.com/Microsoft/vcpkg` +3. Invoke `.\bootstrap-vcpkg.bat` +4. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost-math dependency. +5. Open an "x64 Native Tools Command Prompt for VS 2019" prompt. +6. Invoke `git clone https://github.com/Microsoft/STL` +7. Invoke `cd STL` +8. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` + to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) +9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`) # How to Consume (COMING SOON) @@ -210,3 +206,11 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio Copyright (c) Microsoft Corporation. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +[CMake]: https://cmake.org/download +[Compiler Explorer]: https://godbolt.org +[Developer Community]: https://developercommunity.visualstudio.com/spaces/62/index.html +[Ninja]: https://ninja-build.org +[Wandbox]: https://wandbox.org +[hub]: https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app +[vcpkg]: https://github.com/Microsoft/vcpkg From 07a69dec53571c288f3f3f21278ca08ed46a199c Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:15:50 -0700 Subject: [PATCH 05/15] Extract a couple links I missed, add periods, and attempt use of relative paths for references within the repository. --- README.md | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 6e2d598a443..a8a676e6d59 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,8 @@ everything else). We're in the process of moving all of our work on the STL to GitHub. Current status: -* Code: **Done.** Our source code is available under the Apache License v2.0 with LLVM Exception. (See [LICENSE.txt][] -and [NOTICE.txt][] for more information.) - -[LICENSE.txt]: https://github.com/microsoft/STL/blob/master/LICENSE.txt -[NOTICE.txt]: https://github.com/microsoft/STL/blob/master/NOTICE.txt +* Code: **Done.** Our source code is available under the Apache License v2.0 with LLVM Exception. (See +[LICENSE.txt](LICENSE.txt) and [](NOTICE.txt) for more information.) * Build System: **In progress.** We're working on a CMake build system, which is currently capable of building one flavor of the STL (native desktop). We need to extend this to build all of the flavors required for the MSVC toolset @@ -34,8 +31,6 @@ soon as possible.) * Tests: **Coming soon.** We rely on three test suites: devcrt, tr1, and [libcxx][]. We need to replace our current test harness, which extensively uses Microsoft-internal machinery. -[libcxx]: https://libcxx.llvm.org - * Continuous Integration: **Coming soon.** We need tests first. * Contribution Guidelines: **Coming soon.** Working on the STL's code involves following many rules. We have codebase @@ -49,12 +44,7 @@ includes C++20 features, [LWG issues][], conformance bugs, performance improveme approximately 200 active bugs in the STL's Microsoft-internal database; we need to manually replicate all of them to GitHub issues. -[LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html - -* Plans: **In progress.** We're writing up our [Roadmap][] and [Iteration Plans][]. - -[Roadmap]: https://github.com/microsoft/STL/wiki/Roadmap -[Iteration Plans]: https://github.com/microsoft/STL/wiki/Iteration-Plans +* Plans: **In progress.** We're writing up our [Roadmap](wiki/Roadmap) and [Iteration Plans](wiki/Iteration-Plans). # Goals @@ -65,8 +55,6 @@ Standard" while being aware of the difference. (There are other relevant Standar and `/std:c++17` involves understanding how the C++14 and C++17 Standards differ from the Working Paper, and we often need to refer to the C Standard Library and ECMAScript regular expression specifications.) -[N4830]: https://wg21.link/n4830 - Our primary goals are conformance, performance, usability, and compatibility. * Conformance: The Working Paper is a moving target; as features and LWG issue resolutions are added, we need to @@ -157,7 +145,7 @@ this dependency. 7. Open Visual Studio 2019 16.3 or later, and choose the "Open a local folder" option. Choose the path to a clone of this repository. 8. Choose the architecture you wish to build in the IDE, and build as you would any other project. (All necessary CMake - settings are set by `CMakeSettings.json` and `vcpkg integrate`) + settings are set by `CMakeSettings.json` and `vcpkg integrate`.) # How to Build with a Native Tools Command Prompt @@ -173,7 +161,7 @@ architectures. 7. Invoke `cd STL` 8. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) -9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`) +9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`.) # How to Consume (COMING SOON) @@ -214,3 +202,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [Wandbox]: https://wandbox.org [hub]: https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app [vcpkg]: https://github.com/Microsoft/vcpkg +[N4830]: https://wg21.link/n4830 +[libcxx]: https://libcxx.llvm.org +[LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html From bb1f2f6cd3bf700426213fb5a0b381c682a9a86c Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:21:24 -0700 Subject: [PATCH 06/15] Back out relative paths for references to the wiki. --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a8a676e6d59..690a54709f5 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ everything else). We're in the process of moving all of our work on the STL to GitHub. Current status: * Code: **Done.** Our source code is available under the Apache License v2.0 with LLVM Exception. (See -[LICENSE.txt](LICENSE.txt) and [](NOTICE.txt) for more information.) +[LICENSE.txt](LICENSE.txt) and [NOTICE.txt](NOTICE.txt) for more information.) * Build System: **In progress.** We're working on a CMake build system, which is currently capable of building one flavor of the STL (native desktop). We need to extend this to build all of the flavors required for the MSVC toolset @@ -44,7 +44,7 @@ includes C++20 features, [LWG issues][], conformance bugs, performance improveme approximately 200 active bugs in the STL's Microsoft-internal database; we need to manually replicate all of them to GitHub issues. -* Plans: **In progress.** We're writing up our [Roadmap](wiki/Roadmap) and [Iteration Plans](wiki/Iteration-Plans). +* Plans: **In progress.** We're writing up our [Roadmap][] and [Iteration Plans][]. # Goals @@ -198,10 +198,12 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [CMake]: https://cmake.org/download [Compiler Explorer]: https://godbolt.org [Developer Community]: https://developercommunity.visualstudio.com/spaces/62/index.html +[Iteration Plans]: https://github.com/microsoft/STL/wiki/Iteration-Plans +[LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html +[N4830]: https://wg21.link/n4830 [Ninja]: https://ninja-build.org +[Roadmap]: https://github.com/microsoft/STL/wiki/Roadmap [Wandbox]: https://wandbox.org [hub]: https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app -[vcpkg]: https://github.com/Microsoft/vcpkg -[N4830]: https://wg21.link/n4830 [libcxx]: https://libcxx.llvm.org -[LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html +[vcpkg]: https://github.com/Microsoft/vcpkg From 77c0e800d01e9ba69999935cdb3a41a06e17dc84 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:29:36 -0700 Subject: [PATCH 07/15] CR feedback on the block diagram. --- README.md | 6 +++--- doc/msvc_libraries.plantuml | 20 ++++++++++++-------- doc/msvc_libraries.plantuml.svg | 3 ++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 690a54709f5..34a9fb269c1 100644 --- a/README.md +++ b/README.md @@ -167,9 +167,9 @@ architectures. # Block Diagram -The STL is built atop other compiler support libraries that ship with Windows and Visual Studio. As such you might see -maintainers here talk about "vcruntime" or "vcstartup" or "the UCRT". The following diagram describes the dependencies -between those components and their ship vehicles. +The STL is built atop other compiler support libraries that ship with Windows and Visual Studio, like the UCRT, +VCRuntime and VCStartup. The following diagram describes the dependencies between those components and their ship +vehicles. ![MSVC Libraries Block Diagram](doc/msvc_libraries.plantuml.svg) diff --git a/doc/msvc_libraries.plantuml b/doc/msvc_libraries.plantuml index 4295539d0dc..4319dfe36d9 100644 --- a/doc/msvc_libraries.plantuml +++ b/doc/msvc_libraries.plantuml @@ -1,20 +1,24 @@ -@startuml MSVC Library Layer Diagram +' Copyright (c) Microsoft Corporation. +' +' SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +@startuml MSVC Library Block Diagram package "Visual Studio" { component STL [ STL - This repo; provides C++ standard library headers, separately compiled + This repo; provides C++ Standard Library headers, separately compiled implementations of most of the iostreams functionality, and a few runtime - support components that live in std like exception_ptr. + support components like std::exception_ptr. ] package VCRuntime as VCRuntimePackage { component VCStartup [ VCStartup - Provides compiler support mechanisms that live in each binary; - such as the entry point, the /GS cookie, and to call constructors - and destructors for global variables. + Provides compiler support mechanisms that live in each binary; such as + machinery to call constructors and destructors for global variables, the + entry point, and the /GS cookie. Merged into static and import libraries of VCRuntime. ] @@ -23,8 +27,8 @@ package "Visual Studio" { VCRuntime Provides compiler support mechanisms that can be shared between binaries; code that the compiler calls on your behalf, such as - the C++ exception handling runtime, string.h intrinsics, - math intrinsics, and declarations for CPU vendor specific + the C++ exception handling runtime, string.h intrinsics, math + intrinsics, and declarations for CPU vendor specific intrinsics. ] [VCStartup] --> [VCRuntime] diff --git a/doc/msvc_libraries.plantuml.svg b/doc/msvc_libraries.plantuml.svg index a444f94ef7f..2153739bfe7 100644 --- a/doc/msvc_libraries.plantuml.svg +++ b/doc/msvc_libraries.plantuml.svg @@ -1 +1,2 @@ -Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ standard library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components that live in std like exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary;such as the entry point, the /GS cookie, and to call constructorsand destructors for global variables.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics,math intrinsics, and declarations for CPU vendor specificUniversal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. + +Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ Standard Library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components like std::exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary; such asmachinery to call constructors and destructors for global variables, theentry point, and the /GS cookie.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics, mathintrinsics, and declarations for CPU vendor specific intrinsics.Universal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. From 33de4fc38155686140145ff6f2df0ae5b6c75a09 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:30:27 -0700 Subject: [PATCH 08/15] Remove leading newline. --- doc/msvc_libraries.plantuml.svg | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/msvc_libraries.plantuml.svg b/doc/msvc_libraries.plantuml.svg index 2153739bfe7..81d4c0870f7 100644 --- a/doc/msvc_libraries.plantuml.svg +++ b/doc/msvc_libraries.plantuml.svg @@ -1,2 +1 @@ - Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ Standard Library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components like std::exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary; such asmachinery to call constructors and destructors for global variables, theentry point, and the /GS cookie.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics, mathintrinsics, and declarations for CPU vendor specific intrinsics.Universal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. From 92f74016eeb5198b490e394f32d66a5b332eea53 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:44:56 -0700 Subject: [PATCH 09/15] Attempt to see if newlines work in Github flavored markdown in backticks. --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 34a9fb269c1..1b0b11cc426 100644 --- a/README.md +++ b/README.md @@ -159,8 +159,11 @@ architectures. 5. Open an "x64 Native Tools Command Prompt for VS 2019" prompt. 6. Invoke `git clone https://github.com/Microsoft/STL` 7. Invoke `cd STL` -8. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` - to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) +8. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` + to configure the project. (For example, `cmake -G Ninja +-DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) 9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`.) # How to Consume (COMING SOON) From bf6541f131de386a81e397faa7c0aee222c55e3c Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Thu, 5 Sep 2019 19:47:52 -0700 Subject: [PATCH 10/15] Add missing . --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b0b11cc426..4048ff47d40 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ architectures. -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` to configure the project. (For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake --DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`) +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`.) 9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`.) # How to Consume (COMING SOON) From ba06e5216cf4e8f164ea12cdc87160a8ee64cc2e Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 Sep 2019 15:36:28 -0700 Subject: [PATCH 11/15] Add CPU-vendor-specific hyphens. --- doc/msvc_libraries.plantuml | 2 +- doc/msvc_libraries.plantuml.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/msvc_libraries.plantuml b/doc/msvc_libraries.plantuml index 4319dfe36d9..c2798cf2e1b 100644 --- a/doc/msvc_libraries.plantuml +++ b/doc/msvc_libraries.plantuml @@ -28,7 +28,7 @@ package "Visual Studio" { Provides compiler support mechanisms that can be shared between binaries; code that the compiler calls on your behalf, such as the C++ exception handling runtime, string.h intrinsics, math - intrinsics, and declarations for CPU vendor specific intrinsics. + intrinsics, and declarations for CPU-vendor-specific intrinsics. ] [VCStartup] --> [VCRuntime] diff --git a/doc/msvc_libraries.plantuml.svg b/doc/msvc_libraries.plantuml.svg index 81d4c0870f7..5a9aa8058df 100644 --- a/doc/msvc_libraries.plantuml.svg +++ b/doc/msvc_libraries.plantuml.svg @@ -1 +1 @@ -Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ Standard Library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components like std::exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary; such asmachinery to call constructors and destructors for global variables, theentry point, and the /GS cookie.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics, mathintrinsics, and declarations for CPU vendor specific intrinsics.Universal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. +Visual StudioVCRuntimeWindows SDKSTLThis repo; provides C++ Standard Library headers, separately compiledimplementations of most of the iostreams functionality, and a few runtimesupport components like std::exception_ptr.VCStartupProvides compiler support mechanisms that live in each binary; such asmachinery to call constructors and destructors for global variables, theentry point, and the /GS cookie.Merged into static and import libraries of VCRuntime.VCRuntimeProvides compiler support mechanisms that can be shared betweenbinaries; code that the compiler calls on your behalf, such asthe C++ exception handling runtime, string.h intrinsics, mathintrinsics, and declarations for CPU-vendor-specific intrinsics.Universal CRTWindows component that provides C library support, such as printf,C locales, and some POSIX-like shims for the Windows API, like _stat. From 58005bf31526746d195279311e9bc19013ae9102 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 Sep 2019 15:40:47 -0700 Subject: [PATCH 12/15] Extract more URIs including relative ones, and add missing directory changes to instructions, and use VS itself to do the clone for the IDE based build instructions. --- README.md | 57 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 4048ff47d40..b471099af15 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ everything else). We're in the process of moving all of our work on the STL to GitHub. Current status: * Code: **Done.** Our source code is available under the Apache License v2.0 with LLVM Exception. (See -[LICENSE.txt](LICENSE.txt) and [NOTICE.txt](NOTICE.txt) for more information.) +[LICENSE.txt][] and [NOTICE.txt][] for more information.) * Build System: **In progress.** We're working on a CMake build system, which is currently capable of building one flavor of the STL (native desktop). We need to extend this to build all of the flavors required for the MSVC toolset @@ -136,16 +136,16 @@ The STL uses boost-math headers to provide P0226R1 Mathematical Special Function this dependency. 1. Install Visual Studio 2019 16.3 or later. -2. Invoke `git clone https://github.com/Microsoft/vcpkg` -3. Invoke `.\bootstrap-vcpkg.bat` -4. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost-math dependency. -5. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never +2. Invoke `git clone https://github.com/Microsoft/vcpkg`. +3. Invoke `cd vcpkg`. +4. Invoke `.\bootstrap-vcpkg.bat`. +5. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost-math dependency. +6. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never done this before, you may be prompted to elevate. -6. Invoke `git clone https://github.com/Microsoft/STL` -7. Open Visual Studio 2019 16.3 or later, and choose the "Open a local folder" option. Choose the path to a clone - of this repository. -8. Choose the architecture you wish to build in the IDE, and build as you would any other project. (All necessary CMake - settings are set by `CMakeSettings.json` and `vcpkg integrate`.) +8. Open Visual Studio 2019 16.3 or later, and choose the "Clone or check out code" option. Enter the path to this + repository, typically `https://github.com/Microsoft/STL`. +9. Choose the architecture you wish to build in the IDE, and build as you would any other project. All necessary CMake + settings are set by `CMakeSettings.json` and `vcpkg integrate`. # How to Build with a Native Tools Command Prompt @@ -153,25 +153,26 @@ These instructions assume you're targeting `x64-windows`; you can change this co architectures. 1. Install [CMake][] 3.15 or later, [Ninja][], and Visual Studio 2019 16.3 or later. -2. Invoke `git clone https://github.com/Microsoft/vcpkg` -3. Invoke `.\bootstrap-vcpkg.bat` -4. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost-math dependency. -5. Open an "x64 Native Tools Command Prompt for VS 2019" prompt. -6. Invoke `git clone https://github.com/Microsoft/STL` -7. Invoke `cd STL` -8. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake --DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` - to configure the project. (For example, `cmake -G Ninja --DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake --DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`.) -9. Invoke `ninja -C {wherever you want binaries}` to build the project. (For example, `ninja -C build.x64`.) +2. Invoke `git clone https://github.com/Microsoft/vcpkg`. +3. Invoke `cd vcpkg`. +4. Invoke `.\bootstrap-vcpkg.bat`. +5. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost-math dependency. +6. Open an "x64 Native Tools Command Prompt for VS 2019". +7. Change directories to a location you'd like a clone of this repository. +7. Invoke `git clone https://github.com/Microsoft/STL`. +8. Invoke `cd STL`. +9. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` to configure the project. For example, +`cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`. +10. Invoke `ninja -C {wherever you want binaries}` to build the project. For example, `ninja -C build.x64`. # How to Consume (COMING SOON) # Block Diagram The STL is built atop other compiler support libraries that ship with Windows and Visual Studio, like the UCRT, -VCRuntime and VCStartup. The following diagram describes the dependencies between those components and their ship +VCRuntime, and VCStartup. The following diagram describes the dependencies between those components and their ship vehicles. ![MSVC Libraries Block Diagram](doc/msvc_libraries.plantuml.svg) @@ -188,9 +189,8 @@ provided by the bot. You will only need to do this once across all repos using o # Code of Conduct -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +This project has adopted the [Microsoft Open Source Code of Conduct][]. For more information see the +[Code of Conduct FAQ][] or contact [opencode@microsoft.com][] with any additional questions or comments. # License @@ -199,14 +199,19 @@ Copyright (c) Microsoft Corporation. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [CMake]: https://cmake.org/download +[Code of Conduct FAQ]: https://opensource.microsoft.com/codeofconduct/faq/ [Compiler Explorer]: https://godbolt.org [Developer Community]: https://developercommunity.visualstudio.com/spaces/62/index.html [Iteration Plans]: https://github.com/microsoft/STL/wiki/Iteration-Plans +[LICENSE.TXT]: LICENSE.TXT [LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html +[Microsoft Open Source Code of Conduct]: https://opensource.microsoft.com/codeofconduct/ [N4830]: https://wg21.link/n4830 +[NOTICE.TXT]: NOTICE.TXT [Ninja]: https://ninja-build.org [Roadmap]: https://github.com/microsoft/STL/wiki/Roadmap [Wandbox]: https://wandbox.org [hub]: https://support.microsoft.com/en-us/help/4021566/windows-10-send-feedback-to-microsoft-with-feedback-hub-app [libcxx]: https://libcxx.llvm.org +[opencode@microsoft.com]: mailto:opencode@microsoft.com [vcpkg]: https://github.com/Microsoft/vcpkg From c108011b2075266d1c2434ad3d42dfde086ebaca Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 Sep 2019 15:44:09 -0700 Subject: [PATCH 13/15] Remove newline and add Ninja version. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b471099af15..afba9411f22 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,6 @@ Community or Report A Problem. If it's a bug in the Windows SDK, please report i If you aren't sure, try to reduce your test case and see if you can eliminate the STL's involvement while still reproducing the bug. - * You should be reasonably confident that you're looking at an actual implementation bug, instead of undefined behavior or surprising-yet-Standard behavior. Comparing against other implementations can help (but remember that implementations can differ while conforming to the Standard); try Godbolt's [Compiler Explorer][] and [Wandbox][]. If you still aren't @@ -152,7 +151,7 @@ this dependency. These instructions assume you're targeting `x64-windows`; you can change this constant below to target other architectures. -1. Install [CMake][] 3.15 or later, [Ninja][], and Visual Studio 2019 16.3 or later. +1. Install [CMake][] 3.15 or later, [Ninja][] 1.8.2 or later, and Visual Studio 2019 16.3 or later. 2. Invoke `git clone https://github.com/Microsoft/vcpkg`. 3. Invoke `cd vcpkg`. 4. Invoke `.\bootstrap-vcpkg.bat`. From 30a8b46d4d5d7cc8cf71f61454028c6a603b2de0 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 Sep 2019 15:44:51 -0700 Subject: [PATCH 14/15] Make extensions lowercase. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index afba9411f22..21ede20013f 100644 --- a/README.md +++ b/README.md @@ -202,11 +202,11 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [Compiler Explorer]: https://godbolt.org [Developer Community]: https://developercommunity.visualstudio.com/spaces/62/index.html [Iteration Plans]: https://github.com/microsoft/STL/wiki/Iteration-Plans -[LICENSE.TXT]: LICENSE.TXT +[LICENSE.txt]: LICENSE.txt [LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html [Microsoft Open Source Code of Conduct]: https://opensource.microsoft.com/codeofconduct/ [N4830]: https://wg21.link/n4830 -[NOTICE.TXT]: NOTICE.TXT +[NOTICE.txt]: NOTICE.txt [Ninja]: https://ninja-build.org [Roadmap]: https://github.com/microsoft/STL/wiki/Roadmap [Wandbox]: https://wandbox.org From fa2640a93bc8cc17c62d303e9bf5c1d0a953047b Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 Sep 2019 16:22:12 -0700 Subject: [PATCH 15/15] path => URI Remove periods for end of list element that ends with a `code block` Fix numbering. Flow 'to a location where you'd like' and add "STL" after that. --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 21ede20013f..1c066893347 100644 --- a/README.md +++ b/README.md @@ -131,20 +131,20 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # How to Build with the Visual Studio IDE -The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend using [vcpkg] to acquire +The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend using [vcpkg][] to acquire this dependency. 1. Install Visual Studio 2019 16.3 or later. -2. Invoke `git clone https://github.com/Microsoft/vcpkg`. -3. Invoke `cd vcpkg`. -4. Invoke `.\bootstrap-vcpkg.bat`. +2. Invoke `git clone https://github.com/Microsoft/vcpkg` +3. Invoke `cd vcpkg` +4. Invoke `.\bootstrap-vcpkg.bat` 5. Invoke `.\vcpkg.exe install boost-math:x86-windows boost-math:x64-windows` to install the boost-math dependency. 6. Run `.\vcpkg.exe integrate install` which tells Visual Studio which vcpkg instance you wish to use. If you have never done this before, you may be prompted to elevate. -8. Open Visual Studio 2019 16.3 or later, and choose the "Clone or check out code" option. Enter the path to this - repository, typically `https://github.com/Microsoft/STL`. +8. Open Visual Studio 2019 16.3 or later, and choose the "Clone or check out code" option. Enter the URI to this + repository, typically `https://github.com/Microsoft/STL` 9. Choose the architecture you wish to build in the IDE, and build as you would any other project. All necessary CMake - settings are set by `CMakeSettings.json` and `vcpkg integrate`. + settings are set by `CMakeSettings.json` and `vcpkg integrate` # How to Build with a Native Tools Command Prompt @@ -152,19 +152,19 @@ These instructions assume you're targeting `x64-windows`; you can change this co architectures. 1. Install [CMake][] 3.15 or later, [Ninja][] 1.8.2 or later, and Visual Studio 2019 16.3 or later. -2. Invoke `git clone https://github.com/Microsoft/vcpkg`. -3. Invoke `cd vcpkg`. -4. Invoke `.\bootstrap-vcpkg.bat`. +2. Invoke `git clone https://github.com/Microsoft/vcpkg` +3. Invoke `cd vcpkg` +4. Invoke `.\bootstrap-vcpkg.bat` 5. Invoke `.\vcpkg.exe install boost-math:x64-windows` to install the boost-math dependency. 6. Open an "x64 Native Tools Command Prompt for VS 2019". -7. Change directories to a location you'd like a clone of this repository. -7. Invoke `git clone https://github.com/Microsoft/STL`. -8. Invoke `cd STL`. -9. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake +7. Change directories to a location where you'd like a clone of this STL repository. +8. Invoke `git clone https://github.com/Microsoft/STL` +9. Invoke `cd STL` +10. Invoke `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE={where your vcpkg clone is located}\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -S . -B {wherever you want binaries}` to configure the project. For example, `cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=C:\Dev\vcpkg\scripts\buildsystems\vcpkg.cmake --DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64`. -10. Invoke `ninja -C {wherever you want binaries}` to build the project. For example, `ninja -C build.x64`. +-DVCPKG_TARGET_TRIPLET=x64-windows -S . -B build.x64` +11. Invoke `ninja -C {wherever you want binaries}` to build the project. For example, `ninja -C build.x64` # How to Consume (COMING SOON)