mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-03 03:58:54 +00:00
Enable building winml with --build_nuget (#9632)
* Enable building winml with --build_nuget * Fix flake8 errors * semicolor Co-authored-by: Sheil Kumar <sheilk@microsoft.com>
This commit is contained in:
parent
9cedb12c89
commit
71a1a7b471
6 changed files with 97 additions and 46 deletions
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)../../build/native/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)../../build/native/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)\Microsoft.AI.MachineLearning.Rules.Project.xml"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == 'x64' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' != 'true')">x64</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == 'x86' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' == 'true')">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' != 'true'">x64</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' == 'true'">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(WindowsAI-Platform)' == ''">$(PlatformTarget)</WindowsAI-Platform>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RuntimesDirectory>$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\_native</RuntimesDirectory>
|
||||
<WindowsAIBinarySubfolder Condition="'$(UseWindowsMLStaticRuntime)' == 'true'">static\</WindowsAIBinarySubfolder>
|
||||
|
||||
<WindowsAIBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)microsoft.ai.machinelearning.dll</WindowsAIBinary>
|
||||
<WindowsAIBinary>$([System.IO.Path]::GetFullPath($(WindowsAIBinary)))</WindowsAIBinary>
|
||||
|
||||
<OnnxRuntimeBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)onnxruntime.dll</OnnxRuntimeBinary>
|
||||
<OnnxRuntimeBinary>$([System.IO.Path]::GetFullPath($(OnnxRuntimeBinary)))</OnnxRuntimeBinary>
|
||||
|
||||
<WindowsAIWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.winmd</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.Experimental.winmd</WindowsAIExperimentalWinMD>
|
||||
|
||||
<WindowsAIWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIWinMD)))</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIExperimentalWinMD)))</WindowsAIExperimentalWinMD>
|
||||
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<!-- Assume apps using the WinML package only want the DirectML binaries (no need for a build dependency). -->
|
||||
<Microsoft_AI_DirectML_SkipDebugLayerCopy>true</Microsoft_AI_DirectML_SkipDebugLayerCopy>
|
||||
<Microsoft_AI_DirectML_SkipLink>true</Microsoft_AI_DirectML_SkipLink>
|
||||
<Microsoft_AI_DirectML_SkipIncludeDir>true</Microsoft_AI_DirectML_SkipIncludeDir>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,21 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == 'x64' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' != 'true')">x64</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == 'x86' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' == 'true')">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' != 'true'">x64</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' == 'true'">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(WindowsAI-Platform)' == ''">$(PlatformTarget)</WindowsAI-Platform>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RuntimesDirectory Condition="'$(TargetPlatformIdentifier)' == 'UAP'">$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\lib\uap10.0</RuntimesDirectory>
|
||||
<RuntimesDirectory Condition="'$(TargetPlatformIdentifier)' != 'UAP'">$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\_native</RuntimesDirectory>
|
||||
<WindowsAIBinarySubfolder Condition="'$(UseWindowsMLStaticRuntime)' == 'true'">static\</WindowsAIBinarySubfolder>
|
||||
<WindowsAIBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)Microsoft.AI.MachineLearning.dll</WindowsAIBinary>
|
||||
<OnnxRuntimeBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)onnxruntime.dll</OnnxRuntimeBinary>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CopyMLBinaries" BeforeTargets="CoreBuild">
|
||||
<PropertyGroup>
|
||||
<WindowsAIBinplaceMessage>Binplacing WindowsAI binaries: {0} and {1}.</WindowsAIBinplaceMessage>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,27 @@
|
|||
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)\Microsoft.AI.MachineLearning.Rules.Project.xml"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<WindowsAI-Platform Condition="'$(Platform)' == 'Win32'">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(Platform)' != 'Win32'">$(Platform)</WindowsAI-Platform>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RuntimesDirectory>$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\_native</RuntimesDirectory>
|
||||
<WindowsAIBinarySubfolder Condition="'$(UseWindowsMLStaticRuntime)' == 'true'">static\</WindowsAIBinarySubfolder>
|
||||
<WindowsAIBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)microsoft.ai.machinelearning.dll</WindowsAIBinary>
|
||||
<WindowsAIWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.winmd</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.Experimental.winmd</WindowsAIExperimentalWinMD>
|
||||
|
||||
<WindowsAIBinary>$([System.IO.Path]::GetFullPath($(WindowsAIBinary)))</WindowsAIBinary>
|
||||
<WindowsAIWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIWinMD)))</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIExperimentalWinMD)))</WindowsAIExperimentalWinMD>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(DisableOnnxRuntimeDllCopy)' != 'true'">
|
||||
<OnnxRuntimeBinary Condition="'$(OnnxRuntimeBinary)' == ''">$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)onnxruntime.dll</OnnxRuntimeBinary>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<!-- Assume apps using the WinML package only want the DirectML binaries (no need for a build dependency). -->
|
||||
<Microsoft_AI_DirectML_SkipDebugLayerCopy>true</Microsoft_AI_DirectML_SkipDebugLayerCopy>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<WindowsAI-Platform Condition="'$(Platform)' == 'Win32'">x86</WindowsAI-Platform>
|
||||
<WindowsAI-Platform Condition="'$(Platform)' != 'Win32'">$(Platform)</WindowsAI-Platform>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RuntimesDirectory Condition="'$(TargetPlatformIdentifier)' == 'UAP'">$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\lib\uap10.0</RuntimesDirectory>
|
||||
<RuntimesDirectory Condition="'$(TargetPlatformIdentifier)' != 'UAP'">$(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\_native</RuntimesDirectory>
|
||||
<WindowsAIBinarySubfolder Condition="'$(UseWindowsMLStaticRuntime)' == 'true'">static\</WindowsAIBinarySubfolder>
|
||||
<WindowsAIBinary>$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)microsoft.ai.machinelearning.dll</WindowsAIBinary>
|
||||
<WindowsAIWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.winmd</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$(MSBuildThisFileDirectory)..\..\winmds\Microsoft.AI.MachineLearning.Experimental.winmd</WindowsAIExperimentalWinMD>
|
||||
|
||||
<WindowsAIBinary>$([System.IO.Path]::GetFullPath($(WindowsAIBinary)))</WindowsAIBinary>
|
||||
<WindowsAIWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIWinMD)))</WindowsAIWinMD>
|
||||
<WindowsAIExperimentalWinMD>$([System.IO.Path]::GetFullPath($(WindowsAIExperimentalWinMD)))</WindowsAIExperimentalWinMD>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(DisableOnnxRuntimeDllCopy)' != 'true'">
|
||||
<OnnxRuntimeBinary Condition="'$(OnnxRuntimeBinary)' == ''">$(RuntimesDirectory)\$(WindowsAIBinarySubfolder)onnxruntime.dll</OnnxRuntimeBinary>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="$(WindowsAIWinMD)">
|
||||
<Implementation>$(WindowsAIBinary)</Implementation>
|
||||
|
|
|
|||
|
|
@ -1767,7 +1767,8 @@ def derive_linux_build_property():
|
|||
return "/p:IsLinuxBuild=\"true\""
|
||||
|
||||
|
||||
def build_nuget_package(source_dir, build_dir, configs, use_cuda, use_openvino, use_tensorrt, use_dnnl, use_nuphar):
|
||||
def build_nuget_package(source_dir, build_dir, configs, use_cuda, use_openvino, use_tensorrt, use_dnnl, use_nuphar,
|
||||
use_winml):
|
||||
if not (is_windows() or is_linux()):
|
||||
raise BuildError(
|
||||
'Currently csharp builds and nuget package creation is only supportted '
|
||||
|
|
@ -1777,9 +1778,13 @@ def build_nuget_package(source_dir, build_dir, configs, use_cuda, use_openvino,
|
|||
is_linux_build = derive_linux_build_property()
|
||||
|
||||
# derive package name and execution provider based on the build args
|
||||
target_name = "/t:CreatePackage"
|
||||
execution_provider = "/p:ExecutionProvider=\"None\""
|
||||
package_name = "/p:OrtPackageId=\"Microsoft.ML.OnnxRuntime\""
|
||||
if use_openvino:
|
||||
if use_winml:
|
||||
package_name = "/p:OrtPackageId=\"Microsoft.AI.MachineLearning\""
|
||||
target_name = "/t:CreateWindowsAIPackage"
|
||||
elif use_openvino:
|
||||
execution_provider = "/p:ExecutionProvider=\"openvino\""
|
||||
package_name = "/p:OrtPackageId=\"Microsoft.ML.OnnxRuntime.OpenVino\""
|
||||
elif use_tensorrt:
|
||||
|
|
@ -1812,13 +1817,24 @@ def build_nuget_package(source_dir, build_dir, configs, use_cuda, use_openvino,
|
|||
|
||||
configuration = "/p:Configuration=\"" + config + "\""
|
||||
|
||||
cmd_args = ["dotnet", "msbuild", "OnnxRuntime.CSharp.sln", configuration, package_name, is_linux_build,
|
||||
ort_build_dir]
|
||||
run_subprocess(cmd_args, cwd=csharp_build_dir)
|
||||
if not use_winml:
|
||||
cmd_args = ["dotnet", "msbuild", "OnnxRuntime.CSharp.sln", configuration, package_name, is_linux_build,
|
||||
ort_build_dir]
|
||||
run_subprocess(cmd_args, cwd=csharp_build_dir)
|
||||
else:
|
||||
winml_interop_dir = os.path.join(source_dir, "csharp", "src", "Microsoft.AI.MachineLearning.Interop")
|
||||
winml_interop_project = os.path.join(winml_interop_dir, "Microsoft.AI.MachineLearning.Interop.csproj")
|
||||
winml_interop_project = os.path.normpath(winml_interop_project)
|
||||
cmd_args = ["dotnet", "msbuild", winml_interop_project, configuration, "/p:Platform=\"Any CPU\"",
|
||||
ort_build_dir, "-restore"]
|
||||
run_subprocess(cmd_args, cwd=csharp_build_dir)
|
||||
|
||||
nuget_exe = os.path.normpath(os.path.join(native_dir, config, "nuget_exe", "src", "nuget.exe"))
|
||||
nuget_exe_arg = "/p:NugetExe=\"" + nuget_exe + "\""
|
||||
|
||||
cmd_args = [
|
||||
"dotnet", "msbuild", "OnnxRuntime.CSharp.proj", "/t:CreatePackage",
|
||||
package_name, configuration, execution_provider, is_linux_build, ort_build_dir]
|
||||
"dotnet", "msbuild", "OnnxRuntime.CSharp.proj", target_name,
|
||||
package_name, configuration, execution_provider, is_linux_build, ort_build_dir, nuget_exe_arg]
|
||||
run_subprocess(cmd_args, cwd=csharp_build_dir)
|
||||
|
||||
|
||||
|
|
@ -2318,7 +2334,8 @@ def main():
|
|||
args.use_openvino,
|
||||
args.use_tensorrt,
|
||||
args.use_dnnl,
|
||||
args.use_nuphar
|
||||
args.use_nuphar,
|
||||
args.use_winml,
|
||||
)
|
||||
|
||||
if args.test and args.build_nuget:
|
||||
|
|
|
|||
|
|
@ -526,8 +526,11 @@ def generate_files(list, args):
|
|||
# Process .net5.0 targets
|
||||
if args.target_architecture == 'x64':
|
||||
interop_src = 'Microsoft.AI.MachineLearning.Interop'
|
||||
interop_props = 'Microsoft.AI.MachineLearning.props'
|
||||
interop_targets = 'Microsoft.AI.MachineLearning.targets'
|
||||
windowsai_net50_props = os.path.join(args.sources_path, 'csharp', 'src', interop_src, interop_props)
|
||||
windowsai_net50_targets = os.path.join(args.sources_path, 'csharp', 'src', interop_src, interop_targets)
|
||||
files_list.append('<file src=' + '"' + windowsai_net50_props + '" target="build\\net5.0" />')
|
||||
files_list.append('<file src=' + '"' + windowsai_net50_targets + '" target="build\\net5.0" />')
|
||||
|
||||
if is_cpu_package or is_cuda_gpu_package or is_dml_package or is_mklml_package:
|
||||
|
|
|
|||
Loading…
Reference in a new issue