Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 10 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ jobs:
run: |
cmd /c "$env:VSDevCmd" "&" msbuild /m /clp:ForceConsoleColor "$env:msbuild_config_props" cppwinrt.sln /t:fast_fwd

- name: Build x86 prebuild tool
- name: Build x64 prebuild tool
if: matrix.arch == 'arm64'
run: |
cmd /c "$env:VSDevCmd" "&" msbuild /m /clp:ForceConsoleColor "$env:msbuild_config_props" /p:Platform=x86 cppwinrt.sln /t:cppwinrt
cmd /c "$env:VSDevCmd" "&" msbuild /m /clp:ForceConsoleColor "$env:msbuild_config_props" /p:Platform=x64 cppwinrt.sln /t:cppwinrt

- name: Build cppwinrt
run: |
Expand Down Expand Up @@ -97,7 +97,7 @@ jobs:
compiler: [MSVC, clang-cl]
arch: [x86, x64, arm64]
config: [Debug, Release]
test_exe: [test, test_nocoro, test_cpp20, test_cpp20_no_sourcelocation, test_cpp20_module, test_fast, test_slow, test_old, test_module_lock_custom, test_module_lock_none]
test_exe: [test, test_nocoro, test_cpp20, test_cpp20_no_sourcelocation, test_cpp20_module, test_cpp23, test_fast, test_slow, test_old, test_module_lock_custom, test_module_lock_none]
toolchain:
- image: windows-2025-vs2026
platform_toolset: v145
Expand All @@ -122,12 +122,12 @@ jobs:
name: msvc-build-${{ matrix.compiler}}-${{ matrix.arch }}-${{ matrix.config }}-${{ matrix.toolchain.platform_toolset }}-bin
path: _build/${{ matrix.arch }}/${{ matrix.config }}/

- name: Fetch x86 cppwinrt executables (arm64 only)
- name: Fetch x64 cppwinrt executables (arm64 only)
if: matrix.arch == 'arm64'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: msvc-build-${{ matrix.compiler}}-x86-Release-${{ matrix.toolchain.platform_toolset }}-bin
path: _build/x86/Release/
name: msvc-build-${{ matrix.compiler}}-x64-Release-${{ matrix.toolchain.platform_toolset }}-bin
path: _build/x64/Release/

- name: Download nuget
run: |
Expand Down Expand Up @@ -183,7 +183,7 @@ jobs:
$target_platform = "${{ matrix.arch }}"
$cppwinrt_path = "_build\$target_platform\$target_configuration\cppwinrt.exe"
if ($target_platform -eq "arm64") {
$cppwinrt_path = "_build\x86\Release\cppwinrt.exe"
$cppwinrt_path = "_build\x64\Release\cppwinrt.exe"
}
& $cppwinrt_path -in local -out _build\$target_platform\$target_configuration -verbose

Expand Down Expand Up @@ -378,7 +378,9 @@ jobs:

- name: Run nuget test
run: |
cmd /c "$env:VSDevCmd" "&" msbuild /m /clp:ForceConsoleColor "$env:msbuild_config_props" test\nuget\NugetTest.sln
$target_configuration = "${{ matrix.config }}"
$target_platform = "${{ matrix.arch }}"
cmd /c "$env:VSDevCmd" "&" msbuild /m /clp:ForceConsoleColor "/p:CppWinRTPath=$(Resolve-Path "_build\$target_platform\$target_configuration")\" "$env:msbuild_config_props" test\nuget\NugetTest.sln

build-nuget:
name: Build nuget package with MSVC
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.Props
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<OutDir>$(SolutionDir)_build\$(CppWinRTPlatform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)_build\$(CppWinRTPlatform)\$(Configuration)\temp\$(MSBuildProjectName)\</IntDir>
<CppWinRTDir>$(OutDir)</CppWinRTDir>
<CppWinRTDir Condition="'$(Platform)'=='ARM64'">$(SolutionDir)_build\x86\$(Configuration)\</CppWinRTDir>
<CppWinRTDir Condition="'$(Platform)'=='ARM64'">$(SolutionDir)_build\x64\$(Configuration)\</CppWinRTDir>
</PropertyGroup>

<ItemDefinitionGroup>
Expand Down
5 changes: 3 additions & 2 deletions build_nuget.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ call msbuild /m /p:Configuration=Release,Platform=x86,CppWinRTBuildVersion=%targ
call msbuild /m /p:Configuration=Release,Platform=x64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:fast_fwd
call msbuild /m /p:Configuration=Release,Platform=arm64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:fast_fwd

call msbuild /m /p:Configuration=Release,Platform=x86,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt
call msbuild /m /p:Configuration=Release,Platform=x64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt
call msbuild /m /p:Configuration=Release,Platform=arm64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt

nuget pack nuget\Microsoft.Windows.CppWinRT.nuspec -Properties target_version=%target_version%;cppwinrt_exe=%cd%\_build\x86\Release\cppwinrt.exe;cppwinrt_fast_fwd_x86=%cd%\_build\x86\Release\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_x64=%cd%\_build\x64\Release\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_arm64=%cd%\_build\arm64\Release\cppwinrt_fast_forwarder.lib
nuget pack nuget\Microsoft.Windows.CppWinRT.nuspec -Properties target_version=%target_version%;cppwinrt_exe_amd64=%cd%\_build\x64\Release\cppwinrt.exe;cppwinrt_exe_arm64=%cd%\_build\arm64\Release\cppwinrt.exe;cppwinrt_fast_fwd_x86=%cd%\_build\x86\Release\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_x64=%cd%\_build\x64\Release\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_arm64=%cd%\_build\arm64\Release\cppwinrt_fast_forwarder.lib
9 changes: 5 additions & 4 deletions build_vsix.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if "%target_deployment%"=="" set target_deployment=Standalone
if not exist ".\.nuget" mkdir ".\.nuget"
if not exist ".\.nuget\nuget.exe" powershell -Command "Invoke-WebRequest https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\.nuget\nuget.exe"

call .nuget\nuget.exe restore cppwinrt.sln"
call .nuget\nuget.exe restore cppwinrt.sln
call .nuget\nuget.exe restore natvis\cppwinrtvisualizer.sln
call .nuget\nuget.exe restore test\nuget\NugetTest.sln

Expand All @@ -21,16 +21,17 @@ call msbuild /m /p:Configuration=%target_configuration%,Platform=x86,CppWinRTBui
call msbuild /m /p:Configuration=%target_configuration%,Platform=x64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:fast_fwd
call msbuild /m /p:Configuration=%target_configuration%,Platform=arm64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:fast_fwd

rem Build cppwinrt.exe for x86 only
call msbuild /m /p:Configuration=%target_configuration%,Platform=x86,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt
rem Build cppwinrt.exe for x64 and arm64
call msbuild /m /p:Configuration=%target_configuration%,Platform=x64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt
call msbuild /m /p:Configuration=%target_configuration%,Platform=arm64,CppWinRTBuildVersion=%target_version% cppwinrt.sln /t:cppwinrt

rem Build cppwinrt visualizer dll for x86, x64, and arm64
call msbuild /p:Configuration=%target_configuration%,Platform=x64,Deployment=%target_deployment%,CppWinRTBuildVersion=%target_version% natvis\cppwinrtvisualizer.sln
call msbuild /p:Configuration=%target_configuration%,Platform=x86,Deployment=%target_deployment%,CppWinRTBuildVersion=%target_version% natvis\cppwinrtvisualizer.sln
call msbuild /p:Configuration=%target_configuration%,Platform=arm64,Deployment=%target_deployment%,CppWinRTBuildVersion=%target_version% natvis\cppwinrtvisualizer.sln

rem Build nuget
.nuget\nuget.exe pack nuget\Microsoft.Windows.CppWinRT.nuspec -NonInteractive -OutputDirectory %this_dir%_build -Properties Configuration=%target_configuration%;cppwinrt_exe=%this_dir%_build\x86\%target_configuration%\cppwinrt.exe;cppwinrt_fast_fwd_x86=%this_dir%_build\x86\%target_configuration%\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_x64=%this_dir%_build\x64\%target_configuration%\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_arm64=%this_dir%_build\arm64\%target_configuration%\cppwinrt_fast_forwarder.lib;target_version=%target_version% -version %target_version% -Verbosity Detailed
.nuget\nuget.exe pack nuget\Microsoft.Windows.CppWinRT.nuspec -NonInteractive -OutputDirectory %this_dir%_build -Properties Configuration=%target_configuration%;cppwinrt_exe_amd64=%this_dir%\_build\x64\Release\cppwinrt.exe;cppwinrt_exe_arm64=%this_dir%\_build\arm64\Release\cppwinrt.exe;cppwinrt_fast_fwd_x86=%this_dir%_build\x86\%target_configuration%\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_x64=%this_dir%_build\x64\%target_configuration%\cppwinrt_fast_forwarder.lib;cppwinrt_fast_fwd_arm64=%this_dir%_build\arm64\%target_configuration%\cppwinrt_fast_forwarder.lib;target_version=%target_version% -version %target_version% -Verbosity Detailed

rem Build vsix
call msbuild /restore /p:Configuration=%target_configuration%,Platform="Any CPU",Deployment=%target_deployment%,CppWinRTVersion=%target_version%,NugetPackageVersion=%target_version%,NatvisDirx86=%this_dir%natvis\x86\%target_configuration%\%target_deployment%,NatvisDirx64=%this_dir%natvis\x64\%target_configuration%\%target_deployment%,NatvisDirarm64=%this_dir%natvis\arm64\%target_configuration%\%target_deployment%,NupkgDir=%this_dir%_build vsix\vsix.sln
3 changes: 2 additions & 1 deletion nuget/Microsoft.Windows.CppWinRT.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
</metadata>
<files>
<file src="..\LICENSE"/>
<file src="$cppwinrt_exe$" target="bin"/>
<file src="$cppwinrt_exe_arm64$" target="bin\arm64"/>
<file src="$cppwinrt_exe_amd64$" target="bin\amd64"/>
<file src="$cppwinrt_fast_fwd_x86$" target="build\native\lib\win32"/>
<file src="$cppwinrt_fast_fwd_x64$" target="build\native\lib\x64"/>
<file src="$cppwinrt_fast_fwd_arm64$" target="build\native\lib\arm64"/>
Expand Down
5 changes: 4 additions & 1 deletion nuget/Microsoft.Windows.CppWinRT.targets
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<CppWinRTCommandModules Condition="'$(CppWinRTBuildModule)'=='true'">-modules</CppWinRTCommandModules>
<CppWinRTCommandModuleFilter Condition="'$(CppWinRTModuleInclude)' != ''">-module_include $(CppWinRTModuleInclude.Replace(';', ' '))</CppWinRTCommandModuleFilter>
<CppWinRTCommandModuleFilter Condition="'$(CppWinRTModuleExclude)' != ''">$(CppWinRTCommandModuleFilter) -module_exclude $(CppWinRTModuleExclude.Replace(';', ' '))</CppWinRTCommandModuleFilter>
<CppWinRTPath Condition="'$(CppWinRTPackage)' == 'true' and '$(CppWinRTPath)'==''">"$(CppWinRTPackageDir)bin\"</CppWinRTPath>
<CppWinRTExeArch>$(PROCESSOR_ARCHITECTURE)</CppWinRTExeArch>
<!-- Even if MSBuild runs as x86, the x64 binary is still used -->
<CppWinRTExeArch Condition="'$(CppWinRTExeArch)' == 'x86'">x64</CppWinRTExeArch>
<CppWinRTPath Condition="'$(CppWinRTPackage)' == 'true' and '$(CppWinRTPath)'==''">"$(CppWinRTPackageDir)bin\$(CppWinRTExeArch)\"</CppWinRTPath>
<CppWinRTPath Condition="'$(CppWinRTPackage)' != 'true' and '$(CppWinRTPath)'==''">"$(CppWinRTPackageDir)"</CppWinRTPath>
<!-- By default enable C++/WinRT to include target platform winmds if we didn't override sdk references and the C++ Project system isn't already adding them -->
<!-- _PrepareForReferenceResolution adds the references if TargetPlatformIdentifier is UAP -->
Expand Down
2 changes: 1 addition & 1 deletion test/nuget/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<GeneratedFilesDir>$(IntDir)Generated Files\</GeneratedFilesDir>
<CppWinRTVerbosity>high</CppWinRTVerbosity>
<CppWinRTPlatform>$(Platform)</CppWinRTPlatform>
<CppWinRTPlatform Condition="'$(Platform)'=='Win32' or '$(Platform)'=='ARM64'">x86</CppWinRTPlatform>
<CppWinRTPlatform Condition="'$(Platform)'=='Win32' or '$(Platform)'=='ARM64'">x64</CppWinRTPlatform>
<CppWinRTPath>$(SolutionDir)..\..\_build\$(CppWinRTPlatform)\$(Configuration)\</CppWinRTPath>
</PropertyGroup>

Expand Down