Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
98a10bf
P1065R2 constexpr INVOKE (#703)
AdamBucior Jul 3, 2020
43851a5
Updates to Ranges test machinery (#959)
CaseyCarter Jul 3, 2020
5be7d49
Revert #653 "<chrono>: Cache QPF() and divide just once" (#972)
AlexGuteniev Jul 3, 2020
37f5689
Cleanup `using _Pred` and `using operator<` comments (#977)
CaseyCarter Jul 7, 2020
06827fe
Code cleanups: remove workarounds, use braces (#978)
StephanTLavavej Jul 7, 2020
ed5698b
Avoid name ambiguities in Ranges test machinery (#979)
miscco Jul 7, 2020
aac7b3f
Implement ranges::replace_if (#984)
miscco Jul 7, 2020
7253921
Use new 64-bit interlocked intrinsics on x86 (#986)
AlexGuteniev Jul 7, 2020
89c3b49
Update _MSVC_STL_UPDATE for July 2020 (#989)
God-father1 Jul 7, 2020
896e137
Style cleanup of requires\s*\( (#999)
CaseyCarter Jul 7, 2020
d531112
Correct naked `if constexpr` in C++14 mode (#1011)
CaseyCarter Jul 7, 2020
550713e
Update VM Scale Set to VS 2019 Preview 3 (#1015)
CaseyCarter Jul 8, 2020
8ead4f6
Disable /analyze in concepts_matrix.lst. (#1031)
StephanTLavavej Jul 11, 2020
ee6019d
Implement ranges::generate and ranges::generate_n (#905)
ahanamuk Jul 11, 2020
d1cae3a
Modernize ranges::copy (#956)
miscco Jul 11, 2020
d31b0c7
Remove invalid overload of ranges::copy_n (#957)
miscco Jul 11, 2020
215ec06
Modernize ranges::copy_if (#958)
miscco Jul 11, 2020
1f0f88f
Modernize ranges::move (#970)
miscco Jul 11, 2020
c99a4f3
Modernize ranges::count (#974)
miscco Jul 11, 2020
672bcb2
Modernize ranges::count_if (#975)
miscco Jul 11, 2020
6d441a1
Implement most ranges partition algorithms (#976)
CaseyCarter Jul 11, 2020
a09bfc7
Code cleanup: Brace for impact (#1020)
StephanTLavavej Jul 11, 2020
294355d
Provide comparison operators for map/set/etc. instead of _Tree (#1022)
StephanTLavavej Jul 11, 2020
f357e2c
Implement ranges::replace, ranges::replace_copy, ranges::replace_copy…
miscco Jul 11, 2020
8fcc25f
Update vcpkg to 2020.06. (#1042)
StephanTLavavej Jul 14, 2020
002cdc6
Implement ranges::transform (#941)
miscco Jul 17, 2020
16db993
Implement ranges::remove family (#1005)
miscco Jul 17, 2020
0965ada
Use permissive wide-to-narrow transcoding in filesystem_error (#1010)
Chronial Jul 17, 2020
21acd23
Implement ranges::copy_backward (#1026)
CaseyCarter Jul 17, 2020
4f949af
Implement ranges::reverse (#1028)
CaseyCarter Jul 20, 2020
7930d35
<compare>: Fix 0 <=> partial_ordering::unordered (#1049)
CaseyCarter Jul 20, 2020
6c04496
<system_error> Enable [[msvc::noop_dtor]] from Visual Studio 2019 ver…
BillyONeal Jul 21, 2020
c10ae01
Atomic CAS with pad (#23, P0528R3) (#1029)
AlexGuteniev Jul 21, 2020
1555e0b
Vectorize reverse_copy() (#804)
pawREP Jul 27, 2020
8e8770c
<random>: Fix discrete_distribution result out of range (#1025)
statementreply Jul 27, 2020
28efc70
Implement ranges::unique family (#1039)
miscco Jul 27, 2020
99241dc
Implement ranges::sample and ranges::shuffle (#1052)
miscco Jul 27, 2020
98f37c3
Modernize the ranges::find family (#1058)
miscco Jul 27, 2020
5ada43e
Modernize ranges::for_each (#1060)
miscco Jul 27, 2020
fc3df2f
Modernize ranges::all_of and friends (#1061)
miscco Jul 27, 2020
b2f1556
Update .clang-format for Clang 10 (#1075)
StephanTLavavej Jul 27, 2020
f49ffaf
Uglify the current member of move_iterator (#1080)
miscco Jul 27, 2020
3659f3d
Implement Ranges Set Operations (#1044)
CaseyCarter Jul 28, 2020
868cf26
Implement ranges::move_backward (#1053)
CaseyCarter Jul 28, 2020
35ce1cf
Fix the interaction between _Pass_fn and invoke (#1091)
CaseyCarter Jul 28, 2020
0e7b5d2
<valarray>: Implement copies for slice_array, gslice_array, mask_arra…
AlexGuteniev Jul 30, 2020
e9f56a6
Finish P0811R3 midpoint and lerp (#1048)
statementreply Jul 30, 2020
30777d5
Fix thinko in ranges::iter_swap (#1072)
CaseyCarter Jul 30, 2020
58a8a39
Implement ranges::rotate and ranges::rotate_copy (#1073)
miscco Jul 30, 2020
4e97255
Comparison category types become aggregates (#1065)
CaseyCarter Jul 30, 2020
0381c25
<type_traits>: is_function simplification (#460)
ArtemSarmini Aug 1, 2020
1ff3d1e
Optimize fill and fill_n for vector<bool> (#879)
miscco Aug 1, 2020
accaf18
Modernize ranges::swap_ranges and ranges::distance (#1062)
miscco Aug 1, 2020
e58a945
Implement ranges::nth_element (#1063)
CaseyCarter Aug 1, 2020
e2912b6
Implement ranges::ssize (#1076)
CaseyCarter Aug 1, 2020
57db210
Fix weak_ptr conversions, preserving control blocks for expired objec…
StephanTLavavej Aug 1, 2020
782cd65
<bit>: Fix countl_zero to switch between lzcnt and bsr correctly (#1108)
AlexGuteniev Aug 1, 2020
a712fe5
Enable tests Dev09_172666_tr1_tuple_odr and VSO_0000000_matching_npos…
CaseyCarter Aug 1, 2020
8ec6b33
P1001R2 execution::unseq (#1111)
BillyONeal Aug 2, 2020
e4b75dc
Implement std::atomic::wait (#593)
AlexGuteniev Aug 2, 2020
12c684b
Cleanup std qualification and old bug citations (#1119)
StephanTLavavej Aug 2, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 20 additions & 40 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,54 +1,40 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# https://releases.llvm.org/9.0.0/tools/clang/docs/ClangFormatStyleOptions.html
# https://releases.llvm.org/10.0.0/tools/clang/docs/ClangFormatStyleOptions.html

---
# Language: Cpp

BasedOnStyle: LLVM

# AccessModifierOffset: -2
AccessModifierOffset: -4

# AlignAfterOpenBracket: Align
AlignAfterOpenBracket: DontAlign

# AlignConsecutiveMacros: false
AlignConsecutiveMacros: true

# AlignConsecutiveAssignments: false
AlignConsecutiveAssignments: true

# AlignConsecutiveDeclarations: false

# AlignEscapedNewlines: Right
AlignEscapedNewlines: Left

# AlignOperands: true

# AlignTrailingComments: true
AlignTrailingComments: false

# AllowAllArgumentsOnNextLine: true
# AllowAllConstructorInitializersOnNextLine: true
# AllowAllParametersOfDeclarationOnNextLine: true
# AllowShortBlocksOnASingleLine: false
# AllowShortBlocksOnASingleLine: Never
# AllowShortCaseLabelsOnASingleLine: false

# AllowShortFunctionsOnASingleLine: All
AllowShortFunctionsOnASingleLine: Empty

# AllowShortLambdasOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: false

# AlwaysBreakTemplateDeclarations: MultiLine
AlwaysBreakTemplateDeclarations: Yes

# BinPackArguments: true
# BinPackParameters: true
# BraceWrapping:
Expand All @@ -68,10 +54,8 @@ AlwaysBreakTemplateDeclarations: Yes
# SplitEmptyFunction: true
# SplitEmptyRecord: true
# SplitEmptyNamespace: true

# BreakBeforeBinaryOperators: None
BreakBeforeBinaryOperators: NonAssignment

# BreakBeforeBraces: Attach
# BreakBeforeInheritanceComma: false
# BreakInheritanceList: BeforeColon
Expand All @@ -80,16 +64,16 @@ BreakBeforeBinaryOperators: NonAssignment
# BreakConstructorInitializers: BeforeColon
# BreakAfterJavaFieldAnnotations: false
# BreakStringLiterals: true

# ColumnLimit: 80
ColumnLimit: 120

# CommentPragmas: '^ IWYU pragma:'
# CompactNamespaces: false
# ConstructorInitializerAllOnOneLineOrOnePerLine: false
# ConstructorInitializerIndentWidth: 4
# ContinuationIndentWidth: 4
# Cpp11BracedListStyle: true
# DeriveLineEnding: true
DeriveLineEnding: false
# DerivePointerAlignment: false
# DisableFormat: false
# ExperimentalAutoDetectBinPacking: false
Expand All @@ -98,55 +82,52 @@ ColumnLimit: 120
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH

# IncludeBlocks: Preserve
IncludeBlocks: Regroup

# IncludeCategories:
# - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
# Priority: 2
# SortPriority: 0
# - Regex: '^(<|"(gtest|gmock|isl|json)/)'
# Priority: 3
# SortPriority: 0
# - Regex: '.*'
# Priority: 1
# SortPriority: 0
IncludeCategories:
- Regex: '^<yvals(_core)?\.h>$'
Priority: 1
- Regex: '^<(Windows|userenv)\.h>$'
Priority: 3
SortPriority: 3
- Regex: '^<WinIoCtl\.h>$'
Priority: 4
Priority: 3
SortPriority: 4
- Regex: '^<__.*\.hpp>$'
Priority: 2
- Regex: '\.hpp[>"]$'
Priority: 5
- Regex: '.*'
Priority: 2

# IncludeIsMainRegex: '(Test)?$'
# IncludeIsMainSourceRegex: ''
# IndentCaseLabels: false
# IndentGotoLabels: true
# IndentPPDirectives: None

# IndentWidth: 2
IndentWidth: 4

# IndentWrappedFunctionNames: false
IndentWrappedFunctionNames: true

# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
# KeepEmptyLinesAtTheStartOfBlocks: true

# NOTE: MacroBlockBegin/MacroBlockEnd don't work with _CATCH_ALL.
# MacroBlockBegin: ''
# MacroBlockEnd: ''

# MaxEmptyLinesToKeep: 1
MaxEmptyLinesToKeep: 2

# NamespaceIndentation: None
NamespaceIndentation: All

# ObjCBinPackProtocolList: Auto
# ObjCBlockIndentWidth: 2
# ObjCSpaceAfterProperty: false
Expand All @@ -159,17 +140,13 @@ NamespaceIndentation: All
# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PenaltyReturnTypeOnItsOwnLine: 60

# PointerAlignment: Right
PointerAlignment: Left

# ReflowComments: true
# SortIncludes: true
# SortUsingDeclarations: true

# SpaceAfterCStyleCast: false
SpaceAfterCStyleCast: true

# SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword: true
# SpaceBeforeAssignmentOperators: true
Expand All @@ -178,20 +155,22 @@ SpaceAfterCStyleCast: true
# SpaceBeforeInheritanceColon: true
# SpaceBeforeParens: ControlStatements
# SpaceBeforeRangeBasedForLoopColon: true
# SpaceInEmptyBlock: false
# SpaceInEmptyParentheses: false
# SpacesBeforeTrailingComments: 1
# SpacesInAngles: false
# SpacesInConditionalStatement: false
# SpacesInContainerLiterals: true
# SpacesInCStyleCastParentheses: false
# SpacesInParentheses: false
# SpacesInSquareBrackets: false
# Standard: Cpp11

# NOTE: _STD_BEGIN, _STD_END, etc. aren't macros for complete statements, but telling clang-format that they are
# produces the behavior that we want (with no block indentation).
# SpaceBeforeSquareBrackets: false
# Standard: Latest
# StatementMacros:
# - Q_UNUSED
# - QT_REQUIRE_VERSION
# NOTE: _STD_BEGIN, _STD_END, etc. aren't macros for complete statements, but telling
# clang-format that they are produces the behavior that we want (with no block indentation).
StatementMacros:
- _STD_BEGIN
- _STD_END
Expand All @@ -201,7 +180,8 @@ StatementMacros:
- _END_EXTERN_C
- _EXTERN_C_UNLESS_PURE
- _END_EXTERN_C_UNLESS_PURE

# TabWidth: 8
# UseCRLF: false
UseCRLF: true
# UseTab: Never
...
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,27 @@ if("${VCLIBS_TARGET_ARCHITECTURE}" MATCHES "^[xX]86$")
set(VCLIBS_X86_OR_X64 "x86")
# Note that we set _WIN32_WINNT to a high level to make declarations available, but still engage downlevel
# runtime dynamic linking by setting our own _STL_WIN32_WINNT back to Windows XP.
add_compile_definitions(_X86_ _VCRT_WIN32_WINNT=_WIN32_WINNT_WINXP _STL_WIN32_WINNT=_WIN32_WINNT_WINXP
add_compile_definitions(_X86_ _VCRT_WIN32_WINNT=0x0501 _STL_WIN32_WINNT=0x0501
_WIN32_WINNT=0x0602 NTDDI_VERSION=NTDDI_WIN8)
add_compile_options(/arch:IA32)
elseif(VCLIBS_TARGET_ARCHITECTURE MATCHES "^[xX]64$")
set(VCLIBS_TARGET_ARCHITECTURE "x64")
set(VCLIBS_I386_OR_AMD64 "amd64")
set(VCLIBS_X86_OR_X64 "x64")
add_compile_definitions(_AMD64_ _VCRT_WIN32_WINNT=_WIN32_WINNT_WINXP _STL_WIN32_WINNT=_WIN32_WINNT_WINXP
add_compile_definitions(_AMD64_ _VCRT_WIN32_WINNT=0x0501 _STL_WIN32_WINNT=0x0501
_WIN32_WINNT=0x0602 NTDDI_VERSION=NTDDI_WIN8)
elseif(VCLIBS_TARGET_ARCHITECTURE MATCHES "^[aA][rR][mM][vV]7$")
set(VCLIBS_TARGET_ARCHITECTURE "arm")
set(VCLIBS_I386_OR_AMD64 "arm")
set(VCLIBS_X86_OR_X64 "arm")
add_compile_definitions(_ARM_ _VCRT_WIN32_WINNT=_WIN32_WINNT_WIN8 _STL_WIN32_WINNT=_WIN32_WINNT_WIN8
add_compile_definitions(_ARM_ _VCRT_WIN32_WINNT=0x0602 _STL_WIN32_WINNT=0x0602
_WIN32_WINNT=0x0602 NTDDI_VERSION=NTDDI_WIN8)
string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " Synchronization.lib")
elseif(VCLIBS_TARGET_ARCHITECTURE MATCHES "^[aA][rR][mM]64$")
set(VCLIBS_TARGET_ARCHITECTURE "arm64")
set(VCLIBS_I386_OR_AMD64 "arm64")
set(VCLIBS_X86_OR_X64 "arm64")
add_compile_definitions(_ARM64_ _VCRT_WIN32_WINNT=_WIN32_WINNT_WIN10 _STL_WIN32_WINNT=_WIN32_WINNT_WIN10
add_compile_definitions(_ARM64_ _VCRT_WIN32_WINNT=0x0A00 _STL_WIN32_WINNT=0x0A00
_WIN32_WINNT=0x0A00 NTDDI_VERSION=NTDDI_WIN10)
string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " Synchronization.lib")
else()
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem
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.7 Preview 2 or later.
1. Install Visual Studio 2019 16.7 Preview 3 or later.
2. Invoke `git clone https://github.com/microsoft/vcpkg`
3. Invoke `cd vcpkg`
4. Invoke `.\bootstrap-vcpkg.bat`
Expand All @@ -159,7 +159,7 @@ acquire this dependency.
These instructions assume you're targeting `x64-windows`; you can change this constant below to target other
architectures.

1. Install [CMake][] 3.16.5 or later, [Ninja][] 1.10.0 or later, and Visual Studio 2019 16.7 Preview 2 or later.
1. Install [CMake][] 3.16.5 or later, [Ninja][] 1.10.0 or later, and Visual Studio 2019 16.7 Preview 3 or later.
2. Invoke `git clone https://github.com/microsoft/vcpkg`
3. Invoke `cd vcpkg`
4. Invoke `.\bootstrap-vcpkg.bat`
Expand Down
31 changes: 30 additions & 1 deletion azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,30 @@ Function InstallCuda {
}
}

<#
.SYNOPSIS
Install or upgrade a pip package.

.DESCRIPTION
Installs or upgrades a pip package specified in $Package.

.PARAMETER Package
The name of the package to be installed or upgraded.
#>
Function PipInstall {
Param(
[String]$Package
)

try {
Write-Host 'Installing or upgrading $Package...'
python.exe -m pip install --upgrade $Package
Write-Host 'Done installing or upgrading $Package'
}
catch {
Write-Error "Failed to install or upgrade $Package"
}
}

Write-Host "AdminUser password not supplied; assuming already running as AdminUser"

Expand All @@ -371,8 +395,13 @@ InstallLLVM $LlvmUrl
InstallPython $PythonUrl
InstallVisualStudio -Workloads $Workloads -BootstrapperUrl $VisualStudioBootstrapperUrl
InstallCuda -Url $CudaUrl -Features $CudaFeatures

Write-Host 'Updating PATH...'
$environmentKey = Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name Path
$Env:PATH="$($environmentKey.Path);C:\Program Files\CMake\bin;C:\Program Files\LLVM\bin"
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' `
-Name Path `
-Value "$($environmentKey.Path);C:\Program Files\CMake\bin;C:\Program Files\LLVM\bin"
-Value "$Env:PATH"

PipInstall pip
PipInstall psutil
4 changes: 0 additions & 4 deletions azure-devops/run-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ jobs:
litFlags: '-j$(testParallelism);--timeout=240;--shuffle;--xunit-xml-output=$(buildOutputLocation)/test-results.xml'
vcpkgLocation: '$(Build.SourcesDirectory)/vcpkg'
steps:
- script: |
python -m pip install --upgrade pip
pip install psutil
displayName: pip install psutil
- script: |
if exist "$(tmpDir)" (
rmdir /S /Q $(tmpDir)
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Build STL targeting x86, x64, arm, arm64

variables:
agentPool: 'StlBuild-2020-06-18'
agentPool: 'StlBuild-2020-07-08-2'
tmpDir: 'D:\Temp'

stages:
Expand Down
33 changes: 30 additions & 3 deletions stl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ set(HEADERS
${CMAKE_CURRENT_LIST_DIR}/inc/vector
${CMAKE_CURRENT_LIST_DIR}/inc/version
${CMAKE_CURRENT_LIST_DIR}/inc/xatomic.h
${CMAKE_CURRENT_LIST_DIR}/inc/xatomic_wait.h
${CMAKE_CURRENT_LIST_DIR}/inc/xbit_ops.h
${CMAKE_CURRENT_LIST_DIR}/inc/xcall_once.h
${CMAKE_CURRENT_LIST_DIR}/inc/xcharconv.h
Expand Down Expand Up @@ -241,7 +242,6 @@ set(IMPLIB_SOURCES
${CMAKE_CURRENT_LIST_DIR}/src/filesystem.cpp
${CMAKE_CURRENT_LIST_DIR}/src/locale0_implib.cpp
${CMAKE_CURRENT_LIST_DIR}/src/nothrow.cpp
${CMAKE_CURRENT_LIST_DIR}/src/parallel_algorithms.cpp
${CMAKE_CURRENT_LIST_DIR}/src/sharedmutex.cpp
${CMAKE_CURRENT_LIST_DIR}/src/syserror_import_lib.cpp
${CMAKE_CURRENT_LIST_DIR}/src/vector_algorithms.cpp
Expand Down Expand Up @@ -388,6 +388,11 @@ set(SOURCES_SATELLITE_2
${CMAKE_CURRENT_LIST_DIR}/src/special_math.cpp
)

set(SOURCES_SATELLITE_ATOMIC_WAIT
${CMAKE_CURRENT_LIST_DIR}/src/atomic_wait.cpp
${CMAKE_CURRENT_LIST_DIR}/src/parallel_algorithms.cpp
)

set(SOURCES_SATELLITE_CODECVT_IDS
${CMAKE_CURRENT_LIST_DIR}/src/ulocale.cpp
)
Expand All @@ -396,6 +401,7 @@ set(SOURCES_SATELLITE_CODECVT_IDS
set(STATIC_SOURCES
${SOURCES_SATELLITE_1}
${SOURCES_SATELLITE_2}
${SOURCES_SATELLITE_ATOMIC_WAIT}
${SOURCES_SATELLITE_CODECVT_IDS}
)

Expand Down Expand Up @@ -459,6 +465,27 @@ function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIO
set_target_properties(msvcp_2${D_SUFFIX} PROPERTIES OUTPUT_NAME "msvcp140_2${D_SUFFIX}${VCLIBS_SUFFIX}")
target_link_options(msvcp_2${D_SUFFIX} PRIVATE "${THIS_CONFIG_LINK_OPTIONS}")

# msvcp140_atomic_wait.dll (the atomic wait satellite)
add_library(msvcp${D_SUFFIX}_atomic_wait_objects OBJECT ${SOURCES_SATELLITE_ATOMIC_WAIT})
target_compile_definitions(msvcp${D_SUFFIX}_atomic_wait_objects PRIVATE "_BUILDING_SATELLITE_ATOMIC_WAIT;_DLL;${THIS_CONFIG_DEFINITIONS}")
target_compile_options(msvcp${D_SUFFIX}_atomic_wait_objects PRIVATE "${THIS_CONFIG_COMPILE_OPTIONS};${GL_FLAG};/EHsc")

# generate the .def for msvcp140_atomic_wait.dll
set(_ATOMIC_WAIT_OUTPUT_NAME "msvcp140${D_SUFFIX}_atomic_wait${VCLIBS_SUFFIX}")
string(TOUPPER "${_ATOMIC_WAIT_OUTPUT_NAME}" _ATOMIC_WAIT_OUTPUT_NAME_UPPER)
set(_ATOMIC_WAIT_DEF_NAME "${CMAKE_BINARY_DIR}/msvcp_atomic_wait${D_SUFFIX}.def")
set(_ATOMIC_WAIT_DEF_FILE_SRC "${CMAKE_CURRENT_LIST_DIR}/src/msvcp_atomic_wait.src")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_ATOMIC_WAIT_DEF_FILE_SRC}")
file(READ "${_ATOMIC_WAIT_DEF_FILE_SRC}" _ATOMIC_WAIT_SRC_CONTENTS)
string(REPLACE "LIBRARYNAME" "${_ATOMIC_WAIT_OUTPUT_NAME_UPPER}" _ATOMIC_WAIT_DEF_CONTENTS "${_ATOMIC_WAIT_SRC_CONTENTS}")
file(WRITE "${_ATOMIC_WAIT_DEF_NAME}" "${_ATOMIC_WAIT_DEF_CONTENTS}")

add_library(msvcp${D_SUFFIX}_atomic_wait SHARED "${_ATOMIC_WAIT_DEF_NAME}")
target_link_libraries(msvcp${D_SUFFIX}_atomic_wait PRIVATE msvcp${D_SUFFIX}_atomic_wait_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_atomic_wait${D_SUFFIX}${VCLIBS_SUFFIX}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES OUTPUT_NAME "${_ATOMIC_WAIT_OUTPUT_NAME}")

# msvcp140_codecvt_ids.dll
add_library(msvcp${D_SUFFIX}_codecvt_ids_objects OBJECT ${SOURCES_SATELLITE_CODECVT_IDS})
target_compile_definitions(msvcp${D_SUFFIX}_codecvt_ids_objects PRIVATE "_BUILDING_SATELLITE_CODECVT_IDS;_DLL;${THIS_CONFIG_DEFINITIONS}")
Expand All @@ -474,8 +501,8 @@ function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIO
# import library
add_library(msvcp${D_SUFFIX}_implib STATIC ${HEADERS})
target_link_libraries(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX}_implib_objects std_init_once_begin_initialize std_init_once_complete)
add_dependencies(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX} msvcp_1${D_SUFFIX} msvcp_2${D_SUFFIX} msvcp${D_SUFFIX}_codecvt_ids)
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_1${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_2${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_codecvt_ids>")
add_dependencies(msvcp${D_SUFFIX}_implib msvcp${D_SUFFIX} msvcp_1${D_SUFFIX} msvcp_2${D_SUFFIX} msvcp${D_SUFFIX}_atomic_wait msvcp${D_SUFFIX}_codecvt_ids)
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES STATIC_LIBRARY_OPTIONS "/NOLOGO;/NODEFAULTLIB;/IGNORE:4006;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_1${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp_2${D_SUFFIX}>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_codecvt_ids>;$<TARGET_LINKER_FILE:msvcp${D_SUFFIX}_atomic_wait>")
set_target_properties(msvcp${D_SUFFIX}_implib PROPERTIES ARCHIVE_OUTPUT_NAME "msvcprt${D_SUFFIX}")
endfunction()

Expand Down
Loading