|
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | | -<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
| 2 | +<Project InitialTargets="CopyNativeDlls" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
3 | 3 |
|
4 | 4 | <PropertyGroup> |
5 | 5 | <DocumentationFile>bin\$(BuildConfiguration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile> |
6 | 6 | <EnlistmentRoot>$([MSBuild]::NormalizeDirectory($(MSBuildThisFileDirectory)..\..\..\))</EnlistmentRoot> |
7 | | - <NativeBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native/build/drop))</NativeBuildPath> |
| 7 | + <NativeRootPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/Native))</NativeRootPath> |
| 8 | + <NativeBuildPath>$([MSBuild]::NormalizePath($(NativeRootPath)/build/drop))</NativeBuildPath> |
8 | 9 | <ExperimentalSimBuildPath>$([MSBuild]::NormalizePath($(EnlistmentRoot)src/Simulation/qdk_sim_rs/drop))</ExperimentalSimBuildPath> |
9 | 10 | </PropertyGroup> |
10 | 11 |
|
11 | | - <!-- Copy Microsoft.Quantum.Simulator.Runtime.dll from src/Simulation/Native build to where we can see and use it. --> |
12 | | - <PropertyGroup Condition="'$(QsimDll)' == ''"> |
13 | | - <QsimDllMac>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))</QsimDllMac> |
14 | | - <QsimDllLinux>$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))</QsimDllLinux> |
15 | | - <QsimDllWindows>$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))</QsimDllWindows> |
16 | | - <QSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(QsimDllMac)</QSimDll> |
17 | | - <QSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(QsimDllLinux)</QSimDll> |
18 | | - <QSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(QsimDllWindows)</QSimDll> |
19 | | - <QSimDependencies Condition="$([MSBuild]::IsOsPlatform('OSX'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../osx))</QSimDependencies> |
20 | | - <QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Linux'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../linux))</QSimDependencies> |
21 | | - <QSimDependencies Condition="$([MSBuild]::IsOsPlatform('Windows'))">$([MSBuild]::NormalizePath($(NativeBuildPath)/../../win10))</QSimDependencies> |
22 | | - </PropertyGroup> |
23 | | - |
24 | 12 | <ItemGroup> |
25 | 13 | <ProjectReference Include="$(EnlistmentRoot)src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj" /> |
26 | 14 | <ProjectReference Include="$(EnlistmentRoot)src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj" IncludeInSimulatorPackage="true" /> |
27 | 15 | </ItemGroup> |
28 | 16 |
|
| 17 | + <!-- Copy Native dlls from their build output to where we can see and use them --> |
| 18 | + <Target Name="CopyNativeDlls"> |
| 19 | + <ItemGroup> |
| 20 | + <!-- Native simulator: --> |
| 21 | + <NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.dylib))" Dest="osx/libMicrosoft.Quantum.Simulator.Runtime.dylib" /> |
| 22 | + <NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/libMicrosoft.Quantum.Simulator.Runtime.so))" Dest="linux/libMicrosoft.Quantum.Simulator.Runtime.so" /> |
| 23 | + <NativeDll Include="$([MSBuild]::NormalizePath($(NativeBuildPath)/Microsoft.Quantum.Simulator.Runtime.dll))" Dest="win10/Microsoft.Quantum.Simulator.Runtime.dll" /> |
| 24 | + |
| 25 | + <!-- Native Experimental simulator simulator: --> |
| 26 | + <NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))" Dest="osx/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" /> |
| 27 | + <NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))" Dest="linux/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" /> |
| 28 | + <NativeDll Include="$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))" Dest="win10/Microsoft.Quantum.Experimental.Simulators.Runtime.dll" /> |
| 29 | + </ItemGroup> |
| 30 | + |
| 31 | + <Copy |
| 32 | + SourceFiles="@(NativeDll)" |
| 33 | + DestinationFiles="@(NativeDll->'$([MSBuild]::NormalizePath($(NativeRootPath)/))%(Dest)')" |
| 34 | + ContinueOnError="WarnAndContinue" |
| 35 | + SkipUnchangedFiles="true" /> |
| 36 | + </Target> |
| 37 | + |
29 | 38 | <ItemGroup> |
30 | | - <None Include="$(QSimDll)" > |
| 39 | + <None Include="$(NativeRootPath)/win10/*" Condition="$([MSBuild]::IsOsPlatform('Windows'))"> |
31 | 40 | <Link>%(Filename)%(Extension)</Link> |
32 | 41 | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |
33 | 42 | <Visible>false</Visible> |
34 | 43 | </None> |
35 | | - <None Include="$(QSimDependencies)/**/*" > |
| 44 | + <None Include="$(NativeRootPath)/osx/*" Condition="$([MSBuild]::IsOsPlatform('OSX'))"> |
36 | 45 | <Link>%(Filename)%(Extension)</Link> |
37 | 46 | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |
38 | 47 | <Visible>false</Visible> |
39 | 48 | </None> |
40 | | - </ItemGroup> |
41 | | - |
42 | | - <!-- Copy the experimental simulators from xplat/qdk_sim_rs build to where we can see and use it. --> |
43 | | - <PropertyGroup Condition="'$(ExperimentalSimDll)' == ''"> |
44 | | - <ExperimentalSimDllMac>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.dylib))</ExperimentalSimDllMac> |
45 | | - <ExperimentalSimDllLinux>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/libqdk_sim.so))</ExperimentalSimDllLinux> |
46 | | - <ExperimentalSimDllWindows>$([MSBuild]::NormalizePath($(ExperimentalSimBuildPath)/qdk_sim.dll))</ExperimentalSimDllWindows> |
47 | | - <ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('OSX'))">$(ExperimentalSimDllMac)</ExperimentalSimDll> |
48 | | - <ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Linux'))">$(ExperimentalSimDllLinux)</ExperimentalSimDll> |
49 | | - <ExperimentalSimDll Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(ExperimentalSimDllWindows)</ExperimentalSimDll> |
50 | | - </PropertyGroup> |
51 | | - |
52 | | - <ItemGroup> |
53 | | - <None Include="$(ExperimentalSimDll)" Condition="Exists('$(ExperimentalSimDll)')"> |
54 | | - <Link>Microsoft.Quantum.Experimental.Simulators.Runtime.dll</Link> |
| 49 | + <None Include="$(NativeRootPath)/linux/*" Condition="$([MSBuild]::IsOsPlatform('Linux'))"> |
| 50 | + <Link>%(Filename)%(Extension)</Link> |
55 | 51 | <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |
56 | 52 | <Visible>false</Visible> |
57 | 53 | </None> |
58 | 54 | </ItemGroup> |
59 | | - |
60 | | - <Target Name="ValidateExperimentalSimDll" BeforeTargets="GetCopyToOutputDirectoryItems"> |
61 | | - <Warning |
62 | | - Text="The experimental simulator DLL was not found at '$(ExperimentalSimDll)'; not including in simulators package." |
63 | | - Condition="!Exists('$(ExperimentalSimDll)')" |
64 | | - /> |
65 | | - </Target> |
66 | | - |
67 | 55 | </Project> |
0 commit comments