Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
5861888
Automate check_libcxx_paths.py.
StephanTLavavej Nov 20, 2025
fd0b9c6
Update llvm-project.
StephanTLavavej Nov 20, 2025
e1b3069
Remove FAILs after LLVM-159590.
StephanTLavavej Nov 20, 2025
03339bc
Remove FAIL after LLVM-165162.
StephanTLavavej Nov 20, 2025
86c9f05
Remove FAIL after LLVM-160627.
StephanTLavavej Nov 20, 2025
7a47a4c
Remove FAILs after LLVM-153367.
StephanTLavavej Nov 20, 2025
ba2594e
Remove FAILs after MSVC Compiler 19.50.35718.
StephanTLavavej Nov 20, 2025
bb2f245
Add FAILs after LLVM-123337 added a new test emitting MSVC truncation…
StephanTLavavej Nov 20, 2025
45a1e74
Add SKIPPED for more "technically flaky" tests, see GH 5899.
StephanTLavavej Nov 21, 2025
da4fb5c
Cycle locations, add comments.
StephanTLavavej Nov 20, 2025
7091df9
Add/extract commented-out tests.
StephanTLavavej Nov 22, 2025
b81b24f
Rename to P0896R4_and_P1614R2_comparisons so sorted order doesn't dep…
StephanTLavavej Nov 22, 2025
897f62c
Improve check_libcxx_paths.py.
StephanTLavavej Nov 23, 2025
1e6d3d6
Add and run check_test_lst_paths.py.
StephanTLavavej Nov 23, 2025
1545ed4
Cleanup display names.
StephanTLavavej Nov 23, 2025
3cd017b
Invert polarity: skipTesting => runTesting
StephanTLavavej Nov 23, 2025
cc36d5b
Add a 'Configure Tests' stage.
StephanTLavavej Nov 20, 2025
dd63b65
MSVC Compiler 19.50.35719.
StephanTLavavej Nov 20, 2025
e363cef
New pools.
StephanTLavavej Nov 20, 2025
60fb0f6
Mark C++26 tests as FAIL for the MSVC-internal test harness.
StephanTLavavej Nov 25, 2025
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
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ cmake_minimum_required(VERSION 4.1.1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
project(msvc_standard_libraries LANGUAGES CXX)

if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.50.35717")
message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.50.35717 or later.")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.50.35719")
message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.50.35719 or later.")
endif()

include(CheckCXXSourceCompiles)
Expand Down Expand Up @@ -46,7 +46,7 @@ if(TARGET run-validate)
add_dependencies(validate run-validate)
endif()

option(BUILD_TESTING "Enable testing" ON)
option(CONFIGURE_TESTING "Enable testing" ON)
set(VCLIBS_SUFFIX "_oss" CACHE STRING "suffix for built DLL names to avoid conflicts with distributed DLLs")

option(STL_USE_ANALYZE "Pass the /analyze flag to MSVC" OFF)
Expand Down Expand Up @@ -115,7 +115,7 @@ set(VCLIBS_DEBUG_OPTIONS "$<$<COMPILE_LANGUAGE:CXX>:/Od>")
# TRANSITION, GH-2108: Investigate building the STL with only /O2, not /Os.
set(VCLIBS_RELEASE_OPTIONS "$<$<COMPILE_LANGUAGE:CXX>:/O2;/Os>")

if(BUILD_TESTING)
if(CONFIGURE_TESTING)
add_subdirectory(tests)
endif()

Expand Down
16 changes: 12 additions & 4 deletions azure-devops/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,15 @@ parameters:
- name: numShards
type: number
default: 8
- name: skipTesting
- name: configureTesting
type: boolean
default: false
default: true
- name: buildStl
type: boolean
default: true
- name: runTesting
type: boolean
default: true
- name: testsBuildOnly
type: boolean
default: false
Expand All @@ -38,7 +44,7 @@ jobs:
- template: checkout-self.yml
- template: checkout-submodule.yml
parameters:
enabled: ${{ not(parameters.skipTesting) }}
enabled: ${{ parameters.configureTesting }}
path: 'llvm-project'
url: 'https://github.com/llvm/llvm-project.git'
- template: checkout-submodule.yml
Expand All @@ -58,6 +64,8 @@ jobs:
targetPlatform: ${{ parameters.targetPlatform }}
analyzeBuild: ${{ parameters.analyzeBuild }}
asanBuild: ${{ parameters.asanBuild }}
configureTesting: ${{ parameters.configureTesting }}
buildStl: ${{ parameters.buildStl }}
testsBuildOnly: ${{ parameters.testsBuildOnly }}
- template: build-benchmarks.yml
parameters:
Expand All @@ -79,4 +87,4 @@ jobs:
targetArch: ${{ parameters.targetArch }}
targetPlatform: ${{ parameters.targetPlatform }}
testTargets: ${{ parameters.testTargets }}
skipTesting: ${{ parameters.skipTesting }}
runTesting: ${{ parameters.runTesting }}
4 changes: 2 additions & 2 deletions azure-devops/build-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ steps:
-DSTL_BINARY_DIR="$(buildOutputLocation)" ^
-DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} ^
-S $(Build.SourcesDirectory)/benchmarks -B "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}"
displayName: 'Configure the benchmarks for ${{ parameters.compiler }}'
displayName: 'Configure Benchmarks for ${{ parameters.compiler }}'
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
# TRANSITION, we currently only build the benchmarks with Clang for x64
Expand All @@ -36,7 +36,7 @@ steps:
- script: |
call "$(vsDevCmdBat)" -host_arch=${{ parameters.hostArch }} -arch=${{ parameters.targetArch }} -no_logo
cmake --build "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}"
displayName: 'Build the benchmarks for ${{ parameters.compiler }}'
displayName: 'Build Benchmarks for ${{ parameters.compiler }}'
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
# TRANSITION, we currently only build the benchmarks with Clang for x64
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/checkout-self.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ steps:
retryCountOnTaskFailure: 4
- script: |
git clean --quiet -x -d -f -f
displayName: 'Clean after checkout'
displayName: 'Clean After Checkout'
10 changes: 8 additions & 2 deletions azure-devops/cmake-configure-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ parameters:
type: boolean
- name: asanBuild
type: boolean
- name: configureTesting
type: boolean
- name: buildStl
type: boolean
- name: testsBuildOnly
type: boolean
- name: litFlags
Expand All @@ -34,15 +38,17 @@ steps:
-DLIT_FLAGS=${{ join(';', parameters.litFlags) }} ^
-DSTL_USE_ANALYZE=${{ parameters.analyzeBuild }} ^
-DSTL_ASAN_BUILD=${{ parameters.asanBuild }} ^
-DCONFIGURE_TESTING=${{ parameters.configureTesting }} ^
-DTESTS_BUILD_ONLY=${{ parameters.testsBuildOnly }} ^
-DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} ^
-S $(Build.SourcesDirectory) -B "$(buildOutputLocation)"
displayName: 'Configure the STL'
displayName: 'Configure STL'
timeoutInMinutes: 2
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- script: |
call "$(vsDevCmdBat)" -host_arch=${{ parameters.hostArch }} -arch=${{ parameters.targetArch }} -no_logo
cmake --build "$(buildOutputLocation)"
displayName: 'Build the STL'
displayName: 'Build STL'
timeoutInMinutes: 5
condition: and(succeeded(), ${{ parameters.buildStl }})
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
4 changes: 2 additions & 2 deletions azure-devops/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

variables:
- name: poolName
value: 'Stl-2025-11-17T2154-x64-Pool'
value: 'Stl-2025-11-24T1624-x64-Pool'
readonly: true
- name: arm64PoolName
value: 'Stl-2025-11-17T2237-arm64-Pool'
value: 'Stl-2025-11-24T1624-arm64-Pool'
readonly: true
- name: poolDemands
value: 'EnableSpotVM -equals false'
Expand Down
5 changes: 3 additions & 2 deletions azure-devops/create-1es-hosted-pool.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ if ($Arch -ieq 'x64') {
$ImageOffer = 'WindowsServer'
$ImageSku = '2025-datacenter-azure-edition'
} else {
$AvailableLocations = @('eastus2', 'northeurope') # Locations where CPP_STL_GitHub has obtained sufficient quota.
$AvailableLocationIdx = 1 # Increment for each new pool, to cycle through the available locations.
# CPP_STL_GitHub has quota for 672 cores (21 VMs) in westcentralus, not currently used.
$AvailableLocations = @('eastus2', 'northeurope') # Locations where CPP_STL_GitHub has quota for 1024 cores (32 VMs).
$AvailableLocationIdx = 2 # Increment for each new pool, to cycle through the available locations.
$Location = $AvailableLocations[$AvailableLocationIdx % $AvailableLocations.Length]
$VMSize = 'Standard_D32ps_v6'
$PoolSize = 32
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/format-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
call "$(vsDevCmdBat)" -host_arch=x64 -arch=x64 -no_logo
cmake -G Ninja -S $(Build.SourcesDirectory)/tools -B "$(validationBuildOutputLocation)"
cmake --build "$(validationBuildOutputLocation)"
displayName: 'Build format and validation'
displayName: 'Build Validation Tools'
timeoutInMinutes: 5
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- script: |
Expand Down
10 changes: 5 additions & 5 deletions azure-devops/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,27 @@ parameters:
type: string
- name: testTargets
type: string
- name: skipTesting
- name: runTesting
type: boolean
steps:
- script: |
call "$(vsDevCmdBat)" -host_arch=${{ parameters.hostArch }} -arch=${{ parameters.targetArch }} -no_logo
ninja --verbose -k 0 ${{ parameters.testTargets }}
displayName: 'Build and Run Tests'
displayName: 'Run Tests'
timeoutInMinutes: 30
condition: and(succeeded(), not(${{ parameters.skipTesting }}))
condition: and(succeeded(), ${{ parameters.runTesting }})
workingDirectory: $(buildOutputLocation)
env: { TMP: $(tmpDir), TEMP: $(tmpDir) }
- task: PublishTestResults@2
displayName: 'Publish Tests'
timeoutInMinutes: 5
condition: and(succeededOrFailed(), not(${{ parameters.skipTesting }}))
condition: and(succeededOrFailed(), ${{ parameters.runTesting }})
inputs:
searchFolder: $(buildOutputLocation)
testResultsFormat: JUnit
testResultsFiles: '**/test-results.xml'
testRunTitle: 'test-${{ parameters.targetPlatform }}-$(System.JobPositionInPhase)'
- publish: $(buildOutputLocation)/test-results.xml
artifact: '${{ parameters.targetPlatform }}-$(System.JobPositionInPhase)-xml-$(System.JobId)'
condition: and(failed(), not(${{ parameters.skipTesting }}))
condition: and(failed(), ${{ parameters.runTesting }})
displayName: 'Publish XML Artifact'
32 changes: 27 additions & 5 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ stages:
analyzeBuild: true
buildBenchmarks: true
numShards: 1
skipTesting: true
configureTesting: false
runTesting: false

- stage: Build_x86
dependsOn: []
Expand All @@ -51,7 +52,8 @@ stages:
analyzeBuild: true
buildBenchmarks: true
numShards: 1
skipTesting: true
configureTesting: false
runTesting: false

- stage: Build_ARM64_Cross
dependsOn: []
Expand All @@ -68,7 +70,8 @@ stages:
analyzeBuild: true
buildBenchmarks: true
numShards: 1
skipTesting: true
configureTesting: false
runTesting: false

- stage: Build_ARM64EC_Cross
dependsOn: []
Expand All @@ -85,7 +88,8 @@ stages:
analyzeBuild: true
buildBenchmarks: true
numShards: 1
skipTesting: true
configureTesting: false
runTesting: false

# This ARM64-native build will detect problems with the ARM64 pool as early as possible.
# The stage dependencies are structured to optimize the critical path.
Expand All @@ -104,7 +108,24 @@ stages:
analyzeBuild: true
buildBenchmarks: true
numShards: 1
skipTesting: true
configureTesting: false
runTesting: false

- stage: Configure_Tests
dependsOn: []
displayName: 'Configure Tests'
pool:
name: ${{ variables.poolName }}
demands: ${{ variables.poolDemands }}
jobs:
- template: azure-devops/build-and-test.yml
parameters:
hostArch: x64
targetArch: x64
targetPlatform: x64
numShards: 1
buildStl: false
runTesting: false

- stage: Test_x64
dependsOn:
Expand All @@ -113,6 +134,7 @@ stages:
- Build_x86
- Build_ARM64_Cross
- Build_ARM64EC_Cross
- Configure_Tests
displayName: 'Test x64'
pool:
name: ${{ variables.poolName }}
Expand Down
2 changes: 1 addition & 1 deletion llvm-project
4 changes: 2 additions & 2 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

find_package(Python "3.14.0" REQUIRED COMPONENTS Interpreter)

set(STL_BUILD_ROOT "${PROJECT_BINARY_DIR}/out")
set(STL_SOURCE_DIR "${PROJECT_SOURCE_DIR}")
set(STL_TEST_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
Expand All @@ -23,8 +25,6 @@ add_subdirectory(tr1)
# chance to add to the config map and test directory global properties.
add_subdirectory(utils/stl-lit)

find_package(Python "3.14.0" REQUIRED COMPONENTS Interpreter)

if(NOT DEFINED LIT_FLAGS)
set(LIT_FLAGS "-o" "${CMAKE_CURRENT_BINARY_DIR}/test_results.json")
endif()
Expand Down
5 changes: 5 additions & 0 deletions tests/libcxx/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

execute_process(
COMMAND "${Python_EXECUTABLE}" "${STL_SOURCE_DIR}/tools/scripts/check_libcxx_paths.py"
COMMAND_ERROR_IS_FATAL ANY
)

set(LIBCXX_ENVLST "${CMAKE_CURRENT_SOURCE_DIR}/usual_matrix.lst")
set(LIBCXX_EXPECTED_RESULTS "${CMAKE_CURRENT_SOURCE_DIR}/expected_results.txt")
set(LIBCXX_TEST_OUTPUT_DIR "${STL_TEST_OUTPUT_DIR}/libcxx")
Expand Down
Loading