diff --git a/.gitignore b/.gitignore index 5917c0f2ba..6ee6057d5f 100644 --- a/.gitignore +++ b/.gitignore @@ -94,10 +94,6 @@ publish/ *.Publish.xml *.pubxml -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -packages/ - # Windows Azure Build Output csx *.build.csdef @@ -189,3 +185,13 @@ project.lock.json BenchmarkDotNet.Artifacts/ dirs.sln + + +################## +# XCode +################## +Index/ +Logs/ +ModuleCache.noindex/ +Build/Intermediates.noindex/ +info.plist diff --git a/.ncrunch/Avalonia.DotNetCoreRuntime.v3.ncrunchproject b/.ncrunch/Avalonia.DesktopRuntime.v3.ncrunchproject similarity index 100% rename from .ncrunch/Avalonia.DotNetCoreRuntime.v3.ncrunchproject rename to .ncrunch/Avalonia.DesktopRuntime.v3.ncrunchproject diff --git a/.ncrunch/Avalonia.DotNetFrameworkRuntime.v3.ncrunchproject b/.ncrunch/Avalonia.DotNetFrameworkRuntime.v3.ncrunchproject deleted file mode 100644 index 3cd9a982c9..0000000000 --- a/.ncrunch/Avalonia.DotNetFrameworkRuntime.v3.ncrunchproject +++ /dev/null @@ -1,6 +0,0 @@ - - - False - True - - \ No newline at end of file diff --git a/.ncrunch/Avalonia.Gtk.v3.ncrunchproject b/.ncrunch/Avalonia.Gtk.v3.ncrunchproject deleted file mode 100644 index 6800b4a3fe..0000000000 --- a/.ncrunch/Avalonia.Gtk.v3.ncrunchproject +++ /dev/null @@ -1,5 +0,0 @@ - - - True - - \ No newline at end of file diff --git a/.ncrunch/Avalonia.HtmlRenderer.v3.ncrunchproject b/.ncrunch/Avalonia.HtmlRenderer.v3.ncrunchproject deleted file mode 100644 index 6800b4a3fe..0000000000 --- a/.ncrunch/Avalonia.HtmlRenderer.v3.ncrunchproject +++ /dev/null @@ -1,5 +0,0 @@ - - - True - - \ No newline at end of file diff --git a/.ncrunch/Avalonia.Win32.NetStandard.v3.ncrunchproject b/.ncrunch/Avalonia.Win32.NetStandard.v3.ncrunchproject deleted file mode 100644 index 95a483b433..0000000000 --- a/.ncrunch/Avalonia.Win32.NetStandard.v3.ncrunchproject +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.ncrunch/Avalonia.Win32.Shared.v3.ncrunchproject b/.ncrunch/Avalonia.Win32.Shared.v3.ncrunchproject deleted file mode 100644 index 95a483b433..0000000000 --- a/.ncrunch/Avalonia.Win32.Shared.v3.ncrunchproject +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.ncrunch/BindingTest.v3.ncrunchproject b/.ncrunch/BindingTest.v3.ncrunchproject deleted file mode 100644 index a4953e14f9..0000000000 --- a/.ncrunch/BindingTest.v3.ncrunchproject +++ /dev/null @@ -1,6 +0,0 @@ - - - True - True - - \ No newline at end of file diff --git a/.ncrunch/RemoteTest.v3.ncrunchproject b/.ncrunch/RemoteTest.v3.ncrunchproject deleted file mode 100644 index 319cd523ce..0000000000 --- a/.ncrunch/RemoteTest.v3.ncrunchproject +++ /dev/null @@ -1,5 +0,0 @@ - - - True - - \ No newline at end of file diff --git a/.ncrunch/RenderTest.v3.ncrunchproject b/.ncrunch/RenderTest.v3.ncrunchproject deleted file mode 100644 index e12537d535..0000000000 --- a/.ncrunch/RenderTest.v3.ncrunchproject +++ /dev/null @@ -1,8 +0,0 @@ - - - - MissingOrIgnoredProjectReference - - True - - \ No newline at end of file diff --git a/.ncrunch/VirtualizationTest.v3.ncrunchproject b/.ncrunch/VirtualizationTest.v3.ncrunchproject deleted file mode 100644 index a4953e14f9..0000000000 --- a/.ncrunch/VirtualizationTest.v3.ncrunchproject +++ /dev/null @@ -1,6 +0,0 @@ - - - True - True - - \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index d80d24f32c..b0c0c807cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,8 @@ mono: - 5.2.0 dotnet: 2.1.200 script: + - sudo apt-get update + - sudo apt-get install castxml - ./build.sh --target "Travis" --configuration "Release" notifications: email: false diff --git a/Avalonia.sln b/Avalonia.sln index 7ebc74e0a2..6e265e7298 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -80,13 +80,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Skia", "Skia", "{3743B0F2-C EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Android", "Android", "{7CF9789C-F1D3-4D0E-90E5-F1DF67A2753F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Android", "src\Android\Avalonia.Android\Avalonia.Android.csproj", "{7B92AF71-6287-4693-9DCB-BD5B6E927E23}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Android", "src\Android\Avalonia.Android\Avalonia.Android.csproj", "{7B92AF71-6287-4693-9DCB-BD5B6E927E23}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.AndroidTestApplication", "src\Android\Avalonia.AndroidTestApplication\Avalonia.AndroidTestApplication.csproj", "{FF69B927-C545-49AE-8E16-3D14D621AA12}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "iOS", "iOS", "{0CB0B92E-6CFF-4240-80A5-CCAFE75D91E1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.iOS", "src\iOS\Avalonia.iOS\Avalonia.iOS.csproj", "{4488AD85-1495-4809-9AA4-DDFE0A48527E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.iOS", "src\iOS\Avalonia.iOS\Avalonia.iOS.csproj", "{4488AD85-1495-4809-9AA4-DDFE0A48527E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.iOSTestApplication", "src\iOS\Avalonia.iOSTestApplication\Avalonia.iOSTestApplication.csproj", "{8C923867-8A8F-4F6B-8B80-47D9E8436166}" EndProject @@ -116,14 +116,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interop", "Interop", "{A0CC EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsInteropTest", "samples\interop\WindowsInteropTest\WindowsInteropTest.csproj", "{C7A69145-60B6-4882-97D6-A3921DD43978}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.DotNetFrameworkRuntime", "src\Avalonia.DotNetFrameworkRuntime\Avalonia.DotNetFrameworkRuntime.csproj", "{4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderDemo", "samples\RenderDemo\RenderDemo.csproj", "{F1FDC5B0-4654-416F-AE69-E3E9BBD87801}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlCatalog.Android", "samples\ControlCatalog.Android\ControlCatalog.Android.csproj", "{29132311-1848-4FD6-AE0C-4FF841151BD3}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.DotNetCoreRuntime", "src\Avalonia.DotNetCoreRuntime\Avalonia.DotNetCoreRuntime.csproj", "{7863EA94-F0FB-4386-BF8C-E5BFA761560A}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia", "src\Skia\Avalonia.Skia\Avalonia.Skia.csproj", "{7D2D3083-71DD-4CC9-8907-39A0D86FB322}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Gtk3", "src\Gtk\Avalonia.Gtk3\Avalonia.Gtk3.csproj", "{BB1F7BB5-6AD4-4776-94D9-C09D0A972658}" @@ -164,7 +160,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.LinuxFramebuffer", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Direct3DInteropSample", "samples\interop\Direct3DInteropSample\Direct3DInteropSample.csproj", "{638580B0-7910-40EF-B674-DCB34DA308CD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Win32.Interop", "src\Windows\Avalonia.Win32.Interop\Avalonia.Win32.Interop.csproj", "{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Win32.Interop", "src\Windows\Avalonia.Win32.Interop\Avalonia.Win32.Interop.csproj", "{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.RenderTests", "tests\Avalonia.Skia.RenderTests\Avalonia.Skia.RenderTests.csproj", "{E1582370-37B3-403C-917F-8209551B1634}" EndProject @@ -178,28 +174,29 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Designer.HostApp", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Previewer", "samples\Previewer\Previewer.csproj", "{F40FC0A2-1BC3-401C-BFC1-928EC4D4A9CE}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OSX", "OSX", "{A59C4C0A-64DF-4621-B450-2BA00D6F61E2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.UnitTests", "tests\Avalonia.Skia.UnitTests\Avalonia.Skia.UnitTests.csproj", "{E1240B49-7B4B-4371-A00E-068778C5CF0B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.MonoMac", "src\OSX\Avalonia.MonoMac\Avalonia.MonoMac.csproj", "{CBFD5788-567D-401B-9DFA-74E4224025A0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.OpenGL", "src\Avalonia.OpenGL\Avalonia.OpenGL.csproj", "{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Designer.HostApp.NetFX", "src\tools\Avalonia.Designer.HostApp.NetFX\Avalonia.Designer.HostApp.NetFX.csproj", "{4ADA61C8-D191-428D-9066-EF4F0D86520F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Native", "src\Avalonia.Native\Avalonia.Native.csproj", "{12A91A62-C064-42CA-9A8C-A1272F354388}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.UnitTests", "tests\Avalonia.Skia.UnitTests\Avalonia.Skia.UnitTests.csproj", "{E1240B49-7B4B-4371-A00E-068778C5CF0B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.DesktopRuntime", "src\Avalonia.DesktopRuntime\Avalonia.DesktopRuntime.csproj", "{878FEFE0-CD14-41CB-90B0-DBCB163E8F15}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Packages", "Packages", "{E870DCD7-F46A-498D-83FC-D0FD13E0A11C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.OpenGL", "src\Avalonia.OpenGL\Avalonia.OpenGL.csproj", "{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia", "packages\Avalonia\Avalonia.csproj", "{D49233F8-F29C-47DD-9975-C4C9E4502720}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.X11", "src\Avalonia.X11\Avalonia.X11.csproj", "{212D02D5-C873-469A-8E78-4A6350EC4A1A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlatformSanityChecks", "samples\PlatformSanityChecks\PlatformSanityChecks.csproj", "{8B5768BB-71F9-4E23-89B5-DDBA6458B856}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Native", "src\Avalonia.Native\Avalonia.Native.csproj", "{12A91A62-C064-42CA-9A8C-A1272F354388}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Desktop", "src\Avalonia.Desktop\Avalonia.Desktop.csproj", "{3C471044-3640-45E3-B1B2-16D2FF8399EE}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13 src\Shared\RenderHelpers\RenderHelpers.projitems*{3e908f67-5543-4879-a1dc-08eace79b3cd}*SharedItemsImports = 4 src\Shared\PlatformSupport\PlatformSupport.projitems*{4488ad85-1495-4809-9aa4-ddfe0a48527e}*SharedItemsImports = 4 - src\Shared\PlatformSupport\PlatformSupport.projitems*{4a1abb09-9047-4bd5-a4ad-a055e52c5ee0}*SharedItemsImports = 4 - src\Shared\PlatformSupport\PlatformSupport.projitems*{7863ea94-f0fb-4386-bf8c-e5bfa761560a}*SharedItemsImports = 4 src\Shared\PlatformSupport\PlatformSupport.projitems*{7b92af71-6287-4693-9dcb-bd5b6e927e23}*SharedItemsImports = 4 src\Shared\RenderHelpers\RenderHelpers.projitems*{7d2d3083-71dd-4cc9-8907-39a0d86fb322}*SharedItemsImports = 4 tests\Avalonia.RenderTests\Avalonia.RenderTests.projitems*{dabfd304-d6a4-4752-8123-c2ccf7ac7831}*SharedItemsImports = 4 @@ -1226,30 +1223,6 @@ Global {C7A69145-60B6-4882-97D6-A3921DD43978}.Release|iPhone.Build.0 = Release|Any CPU {C7A69145-60B6-4882-97D6-A3921DD43978}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {C7A69145-60B6-4882-97D6-A3921DD43978}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|Any CPU.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|iPhone.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|iPhone.Build.0 = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|Any CPU.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|iPhone.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|iPhone.Build.0 = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4A1ABB09-9047-4BD5-A4AD-A055E52C5EE0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU @@ -1310,30 +1283,6 @@ Global {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|Any CPU.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|iPhone.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|iPhone.Build.0 = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|Any CPU.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|iPhone.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|iPhone.Build.0 = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7863EA94-F0FB-4386-BF8C-E5BFA761560A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU @@ -1598,54 +1547,6 @@ Global {F40FC0A2-1BC3-401C-BFC1-928EC4D4A9CE}.Release|iPhone.Build.0 = Release|Any CPU {F40FC0A2-1BC3-401C-BFC1-928EC4D4A9CE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {F40FC0A2-1BC3-401C-BFC1-928EC4D4A9CE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|iPhone.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|iPhone.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|Any CPU.Build.0 = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|iPhone.ActiveCfg = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|iPhone.Build.0 = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {CBFD5788-567D-401B-9DFA-74E4224025A0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|Any CPU.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|iPhone.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|iPhone.Build.0 = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|Any CPU.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|iPhone.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|iPhone.Build.0 = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4ADA61C8-D191-428D-9066-EF4F0D86520F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU @@ -1766,6 +1667,78 @@ Global {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhone.Build.0 = Release|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|iPhone.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|Any CPU.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|iPhone.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|Any CPU.ActiveCfg = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|Any CPU.Build.0 = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|iPhone.ActiveCfg = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|iPhone.Build.0 = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {878FEFE0-CD14-41CB-90B0-DBCB163E8F15}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|iPhone.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|iPhone.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|Any CPU.Build.0 = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|iPhone.ActiveCfg = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|iPhone.Build.0 = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|iPhone.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|iPhone.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|Any CPU.Build.0 = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|iPhone.ActiveCfg = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|iPhone.Build.0 = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1816,11 +1789,11 @@ Global {E2999E4A-9086-401F-898C-AEB0AD38E676} = {9B9E3891-2366-4253-A952-D08BCEB71098} {050CC912-FF49-4A8B-B534-9544017446DD} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637} {F40FC0A2-1BC3-401C-BFC1-928EC4D4A9CE} = {9B9E3891-2366-4253-A952-D08BCEB71098} - {CBFD5788-567D-401B-9DFA-74E4224025A0} = {A59C4C0A-64DF-4621-B450-2BA00D6F61E2} - {4ADA61C8-D191-428D-9066-EF4F0D86520F} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637} {E1240B49-7B4B-4371-A00E-068778C5CF0B} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B} {212D02D5-C873-469A-8E78-4A6350EC4A1A} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B} {8B5768BB-71F9-4E23-89B5-DDBA6458B856} = {9B9E3891-2366-4253-A952-D08BCEB71098} + {D49233F8-F29C-47DD-9975-C4C9E4502720} = {E870DCD7-F46A-498D-83FC-D0FD13E0A11C} + {3C471044-3640-45E3-B1B2-16D2FF8399EE} = {E870DCD7-F46A-498D-83FC-D0FD13E0A11C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A} diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000000..50476c81f1 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,5 @@ + + + $(MSBuildThisFileDirectory)artifacts/nuget + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000000..f6929f8dee --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,128 @@ +jobs: +- job: Linux + pool: + vmImage: 'ubuntu-16.04' + steps: + - task: CmdLine@2 + displayName: 'Install CastXML' + inputs: + script: | + sudo apt-get update + sudo apt-get install castxml + + - task: CmdLine@2 + displayName: 'Install Cake' + inputs: + script: | + dotnet tool install -g Cake.Tool --version 0.30.0 + + - task: CmdLine@2 + displayName: 'Run Cake' + inputs: + script: | + export PATH="$PATH:$HOME/.dotnet/tools" + dotnet --info + printenv + dotnet cake build.cake -target="Azure-Linux" -configuration="Release" + + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx' + condition: not(canceled()) + +- job: macOS + pool: + vmImage: 'xcode9-macos10.13' + steps: + - task: DotNetCoreInstaller@0 + inputs: + version: '2.1.403' + + - task: Xcode@5 + inputs: + actions: 'build' + scheme: '' + sdk: 'macosx10.13' + configuration: 'Release' + xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace' + xcodeVersion: 'default' # Options: 8, 9, default, specifyPath + args: '-derivedDataPath ./' + + - task: CmdLine@2 + displayName: 'Install CastXML' + inputs: + script: brew install castxml + + - task: CmdLine@2 + displayName: 'Install Cake' + inputs: + script: | + dotnet tool install -g Cake.Tool --version 0.30.0 + + - task: CmdLine@2 + displayName: 'Run Cake' + inputs: + script: | + export COREHOST_TRACE=0 + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + which dotnet + dotnet --info + export PATH="$PATH:$HOME/.dotnet/tools" + dotnet --info + printenv + dotnet cake build.cake -target="Azure-OSX" -configuration="Release" + + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx' + condition: not(canceled()) + + - task: PublishBuildArtifacts@1 + inputs: + pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/' + artifactName: 'Avalonia.Native.OSX' + condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) + + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget' + artifactName: 'NuGetOSX' + condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) + +- job: Windows + pool: + vmImage: 'vs2017-win2016' + steps: + - task: CmdLine@2 + displayName: 'Install Cake' + inputs: + script: | + dotnet tool install -g Cake.Tool --version 0.30.0 + + - task: CmdLine@2 + displayName: 'Run Cake' + inputs: + script: | + set PATH=%PATH%;%USERPROFILE%\.dotnet\tools + dotnet cake build.cake -target="Azure-Windows" -configuration="Release" + + - task: PublishTestResults@2 + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx' + condition: not(canceled()) + + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget' + artifactName: 'NuGet' + condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) + + - task: PublishBuildArtifacts@1 + inputs: + pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip' + artifactName: 'Samples' + condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false)) diff --git a/build-native.sh b/build-native.sh new file mode 100644 index 0000000000..5983751dce --- /dev/null +++ b/build-native.sh @@ -0,0 +1,6 @@ +# /bin/sh + +mkdir native-build +cd native-build +cmake -DCMAKE_BUILD_TYPE=$1 ../native +cmake --build . --target install \ No newline at end of file diff --git a/build.cake b/build.cake index 000cbb1784..f10a12c4e6 100644 --- a/build.cake +++ b/build.cake @@ -1,15 +1,9 @@ -/////////////////////////////////////////////////////////////////////////////// -// ADDINS -/////////////////////////////////////////////////////////////////////////////// - -#addin "nuget:?package=NuGet.Core&version=2.14.0" -#tool "nuget:?package=NuGet.CommandLine&version=4.3.0" -#tool "nuget:?package=JetBrains.ReSharper.CommandLineTools&version=2017.1.20170613.162720" - /////////////////////////////////////////////////////////////////////////////// // TOOLS /////////////////////////////////////////////////////////////////////////////// +#tool "nuget:?package=NuGet.CommandLine&version=4.7.1" +#tool "nuget:?package=JetBrains.ReSharper.CommandLineTools&version=2018.2.3" #tool "nuget:?package=xunit.runner.console&version=2.3.1" #tool "nuget:?package=JetBrains.dotMemoryUnit&version=3.0.20171219.105559" @@ -21,39 +15,20 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; -using NuGet; /////////////////////////////////////////////////////////////////////////////// // SCRIPTS /////////////////////////////////////////////////////////////////////////////// #load "./parameters.cake" -#load "./packages.cake" - -////////////////////////////////////////////////////////////////////// -// PARAMETERS -////////////////////////////////////////////////////////////////////// - -class AvaloniaBuildData -{ - public AvaloniaBuildData(Parameters parameters, Packages packages) - { - Parameters = parameters; - Packages = packages; - } - - public Parameters Parameters { get; } - public Packages Packages { get; } -} /////////////////////////////////////////////////////////////////////////////// // SETUP /////////////////////////////////////////////////////////////////////////////// -Setup(context => +Setup(context => { var parameters = new Parameters(context); - var buildContext = new AvaloniaBuildData(parameters, new Packages(context, parameters)); Information("Building version {0} of Avalonia ({1}) using version {2} of Cake.", parameters.Version, @@ -71,22 +46,24 @@ Setup(context => Information("IsRunningOnUnix: " + parameters.IsRunningOnUnix); Information("IsRunningOnWindows: " + parameters.IsRunningOnWindows); Information("IsRunningOnAppVeyor: " + parameters.IsRunningOnAppVeyor); + Information("IsRunnongOnAzure:" + parameters.IsRunningOnAzure); Information("IsPullRequest: " + parameters.IsPullRequest); Information("IsMainRepo: " + parameters.IsMainRepo); Information("IsMasterBranch: " + parameters.IsMasterBranch); + Information("IsReleaseBranch: " + parameters.IsReleaseBranch); Information("IsTagged: " + parameters.IsTagged); Information("IsReleasable: " + parameters.IsReleasable); Information("IsMyGetRelease: " + parameters.IsMyGetRelease); Information("IsNuGetRelease: " + parameters.IsNuGetRelease); - return buildContext; + return parameters; }); /////////////////////////////////////////////////////////////////////////////// // TEARDOWN /////////////////////////////////////////////////////////////////////////////// -Teardown((context, buildContext) => +Teardown((context, buildContext) => { Information("Finished running tasks."); }); @@ -96,13 +73,13 @@ Teardown((context, buildContext) => /////////////////////////////////////////////////////////////////////////////// Task("Clean-Impl") - .Does(data => + .Does(data => { - CleanDirectories(data.Parameters.BuildDirs); - CleanDirectory(data.Parameters.ArtifactsDir); - CleanDirectory(data.Parameters.NugetRoot); - CleanDirectory(data.Parameters.ZipRoot); - CleanDirectory(data.Parameters.BinRoot); + CleanDirectories(data.BuildDirs); + CleanDirectory(data.ArtifactsDir); + CleanDirectory(data.NugetRoot); + CleanDirectory(data.ZipRoot); + CleanDirectory(data.TestResultsRoot); }); void DotNetCoreBuild(Parameters parameters) @@ -110,27 +87,35 @@ void DotNetCoreBuild(Parameters parameters) var settings = new DotNetCoreBuildSettings { Configuration = parameters.Configuration, + MSBuildSettings = new DotNetCoreMSBuildSettings + { + Properties = + { + { "PackageVersion", new [] { parameters.Version } } + } + } }; DotNetCoreBuild(parameters.MSBuildSolution, settings); } Task("Build-Impl") - .Does(data => + .Does(data => { - if(data.Parameters.IsRunningOnWindows) + if(data.IsRunningOnWindows) { - MSBuild(data.Parameters.MSBuildSolution, settings => { - settings.SetConfiguration(data.Parameters.Configuration); + MSBuild(data.MSBuildSolution, settings => { + settings.SetConfiguration(data.Configuration); settings.SetVerbosity(Verbosity.Minimal); settings.WithProperty("iOSRoslynPathHackRequired", "true"); + settings.WithProperty("PackageVersion", data.Version); settings.UseToolVersion(MSBuildToolVersion.VS2017); settings.WithRestore(); }); } else { - DotNetCoreBuild(data.Parameters); + DotNetCoreBuild(data); } }); @@ -146,56 +131,63 @@ void RunCoreTest(string project, Parameters parameters, bool coreOnly = false) continue; Information("Running for " + fw); - DotNetCoreTest(project, - new DotNetCoreTestSettings { - Configuration = parameters.Configuration, - Framework = fw, - NoBuild = true, - NoRestore = true - }); + var settings = new DotNetCoreTestSettings { + Configuration = parameters.Configuration, + Framework = fw, + NoBuild = true, + NoRestore = true + }; + + if (parameters.PublishTestResults) + { + settings.Logger = "trx"; + settings.ResultsDirectory = parameters.TestResultsRoot; + } + + DotNetCoreTest(project, settings); } } Task("Run-Unit-Tests-Impl") - .WithCriteria((context, data) => !data.Parameters.SkipTests) - .Does(data => + .WithCriteria((context, data) => !data.SkipTests) + .Does(data => { - RunCoreTest("./tests/Avalonia.Base.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Controls.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Input.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Layout.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Markup.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Styling.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Visuals.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.Skia.UnitTests", data.Parameters, false); - RunCoreTest("./tests/Avalonia.ReactiveUI.UnitTests", data.Parameters, false); - if (data.Parameters.IsRunningOnWindows) + RunCoreTest("./tests/Avalonia.Base.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Controls.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Input.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Layout.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Markup.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Styling.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Visuals.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.Skia.UnitTests", data, false); + RunCoreTest("./tests/Avalonia.ReactiveUI.UnitTests", data, false); + if (data.IsRunningOnWindows) { - RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", data.Parameters, false); + RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", data, false); } }); Task("Run-Designer-Tests-Impl") - .WithCriteria((context, data) => !data.Parameters.SkipTests) - .Does(data => + .WithCriteria((context, data) => !data.SkipTests) + .Does(data => { - RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", data.Parameters, false); + RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", data, false); }); Task("Run-Render-Tests-Impl") - .WithCriteria((context, data) => !data.Parameters.SkipTests) - .WithCriteria((context, data) => data.Parameters.IsRunningOnWindows) - .Does(data => + .WithCriteria((context, data) => !data.SkipTests) + .WithCriteria((context, data) => data.IsRunningOnWindows) + .Does(data => { - RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", data.Parameters, true); - RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", data.Parameters, true); + RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", data, true); + RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", data, true); }); Task("Run-Leak-Tests-Impl") - .WithCriteria((context, data) => !data.Parameters.SkipTests) - .WithCriteria((context, data) => data.Parameters.IsRunningOnWindows) + .WithCriteria((context, data) => !data.SkipTests) + .WithCriteria((context, data) => data.IsRunningOnWindows) .Does(() => { var dotMemoryUnit = Context.Tools.Resolve("dotMemoryUnit.exe"); @@ -215,100 +207,58 @@ Task("Run-Leak-Tests-Impl") } }); -Task("Copy-Files-Impl") - .Does(data => -{ - CopyFiles(data.Packages.BinFiles, data.Parameters.BinRoot); -}); - Task("Zip-Files-Impl") - .Does(data => + .Does(data => { - Zip(data.Parameters.BinRoot, data.Parameters.ZipCoreArtifacts); - - Zip(data.Parameters.NugetRoot, data.Parameters.ZipNuGetArtifacts); + Zip(data.BinRoot, data.ZipCoreArtifacts); - Zip(data.Parameters.ZipSourceControlCatalogDesktopDirs, - data.Parameters.ZipTargetControlCatalogDesktopDirs, - GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") + - GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") + - GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") + - GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") + - GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe")); -}); + Zip(data.NugetRoot, data.ZipNuGetArtifacts); -Task("Create-NuGet-Packages-Impl") - .Does(data => -{ - foreach(var nuspec in data.Packages.NuspecNuGetSettings) - { - NuGetPack(nuspec); - } + Zip(data.ZipSourceControlCatalogDesktopDirs, + data.ZipTargetControlCatalogDesktopDirs, + GetFiles(data.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") + + GetFiles(data.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") + + GetFiles(data.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") + + GetFiles(data.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") + + GetFiles(data.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe")); }); -Task("Publish-MyGet-Impl") - .WithCriteria((context, data) => !data.Parameters.IsLocalBuild) - .WithCriteria((context, data) => !data.Parameters.IsPullRequest) - .WithCriteria((context, data) => data.Parameters.IsMainRepo) - .WithCriteria((context, data) => data.Parameters.IsMasterBranch) - .WithCriteria((context, data) => data.Parameters.IsMyGetRelease) - .Does(data => +void DotNetCorePack(Parameters parameters) { - var apiKey = EnvironmentVariable("MYGET_API_KEY"); - if(string.IsNullOrEmpty(apiKey)) + var settings = new DotNetCorePackSettings { - throw new InvalidOperationException("Could not resolve MyGet API key."); - } - - var apiUrl = EnvironmentVariable("MYGET_API_URL"); - if(string.IsNullOrEmpty(apiUrl)) - { - throw new InvalidOperationException("Could not resolve MyGet API url."); - } + Configuration = parameters.Configuration, + MSBuildSettings = new DotNetCoreMSBuildSettings + { + Properties = + { + { "PackageVersion", new [] { parameters.Version } } + } + } + }; - foreach(var nupkg in data.Packages.NugetPackages) - { - NuGetPush(nupkg, new NuGetPushSettings { - Source = apiUrl, - ApiKey = apiKey - }); - } -}) -.OnError(exception => -{ - Information("Publish-MyGet Task failed, but continuing with next Task..."); -}); + DotNetCorePack(parameters.MSBuildSolution, settings); +} -Task("Publish-NuGet-Impl") - .WithCriteria((context, data) => !data.Parameters.IsLocalBuild) - .WithCriteria((context, data) => !data.Parameters.IsPullRequest) - .WithCriteria((context, data) => data.Parameters.IsMainRepo) - .WithCriteria((context, data) => data.Parameters.IsNuGetRelease) - .Does(data => +Task("Create-NuGet-Packages-Impl") + .Does(data => { - var apiKey = EnvironmentVariable("NUGET_API_KEY"); - if(string.IsNullOrEmpty(apiKey)) + if(data.IsRunningOnWindows) { - throw new InvalidOperationException("Could not resolve NuGet API key."); - } - - var apiUrl = EnvironmentVariable("NUGET_API_URL"); - if(string.IsNullOrEmpty(apiUrl)) - { - throw new InvalidOperationException("Could not resolve NuGet API url."); + MSBuild(data.MSBuildSolution, settings => { + settings.SetConfiguration(data.Configuration); + settings.SetVerbosity(Verbosity.Minimal); + settings.WithProperty("iOSRoslynPathHackRequired", "true"); + settings.WithProperty("PackageVersion", data.Version); + settings.UseToolVersion(MSBuildToolVersion.VS2017); + settings.WithRestore(); + settings.WithTarget("Pack"); + }); } - - foreach(var nupkg in data.Packages.NugetPackages) + else { - NuGetPush(nupkg, new NuGetPushSettings { - ApiKey = apiKey, - Source = apiUrl - }); + DotNetCorePack(data); } -}) -.OnError(exception => -{ - Information("Publish-NuGet Task failed, but continuing with next Task..."); }); /////////////////////////////////////////////////////////////////////////////// @@ -332,14 +282,22 @@ Task("Package") Task("AppVeyor") .IsDependentOn("Package") - .IsDependentOn("Copy-Files-Impl") - .IsDependentOn("Zip-Files-Impl") - .IsDependentOn("Publish-MyGet-Impl") - .IsDependentOn("Publish-NuGet-Impl"); + .IsDependentOn("Zip-Files-Impl"); Task("Travis") .IsDependentOn("Run-Tests"); +Task("Azure-Linux") + .IsDependentOn("Run-Tests"); + +Task("Azure-OSX") + .IsDependentOn("Package") + .IsDependentOn("Zip-Files-Impl"); + +Task("Azure-Windows") + .IsDependentOn("Package") + .IsDependentOn("Zip-Files-Impl"); + /////////////////////////////////////////////////////////////////////////////// // EXECUTE /////////////////////////////////////////////////////////////////////////////// diff --git a/build/CoreLibraries.props b/build/CoreLibraries.props new file mode 100644 index 0000000000..d989e643b8 --- /dev/null +++ b/build/CoreLibraries.props @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/build/LegacyProject.targets b/build/LegacyProject.targets new file mode 100644 index 0000000000..0e0d49b1c2 --- /dev/null +++ b/build/LegacyProject.targets @@ -0,0 +1,3 @@ + + + diff --git a/build/MonoMac.props b/build/MonoMac.props deleted file mode 100644 index 5cf19ef503..0000000000 --- a/build/MonoMac.props +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/build/ReferenceCoreLibraries.props b/build/ReferenceCoreLibraries.props new file mode 100644 index 0000000000..bd9d6ad843 --- /dev/null +++ b/build/ReferenceCoreLibraries.props @@ -0,0 +1,6 @@ + + + + + + diff --git a/build/Rx.props b/build/Rx.props index f4affcacac..359ce53a92 100644 --- a/build/Rx.props +++ b/build/Rx.props @@ -1,9 +1,5 @@  - - - - diff --git a/build/SampleApp.props b/build/SampleApp.props index 3b538e4029..5580a4c2c9 100644 --- a/build/SampleApp.props +++ b/build/SampleApp.props @@ -2,12 +2,7 @@ WinExe - - - - + - diff --git a/build/SharedVersion.props b/build/SharedVersion.props index 351583a106..b46ac16a79 100644 --- a/build/SharedVersion.props +++ b/build/SharedVersion.props @@ -2,8 +2,8 @@ xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> Avalonia - 0.6.2 - Copyright 2016 © The AvaloniaUI Project + 0.7.1 + Copyright 2018 © The AvaloniaUI Project https://github.com/AvaloniaUI/Avalonia/blob/master/licence.md https://github.com/AvaloniaUI/Avalonia/ https://github.com/AvaloniaUI/Avalonia/ diff --git a/build/System.Drawing.Common.props b/build/System.Drawing.Common.props index a568152bbd..2b3707d38a 100644 --- a/build/System.Drawing.Common.props +++ b/build/System.Drawing.Common.props @@ -1,5 +1,5 @@  - + diff --git a/dirs.proj b/dirs.proj index 3dbfe82512..0f24632b72 100644 --- a/dirs.proj +++ b/dirs.proj @@ -3,9 +3,9 @@ + - diff --git a/global.json b/global.json index 38f403a701..d11e78bd7f 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,7 @@ { "msbuild-sdks": { - "Microsoft.Build.Traversal": "1.0.41", - "MSBuild.Sdk.Extras": "1.6.46" + "Microsoft.Build.Traversal": "1.0.43", + "MSBuild.Sdk.Extras": "1.6.46", + "AggregatePackage.NuGet.Sdk" : "0.1.12" } } diff --git a/src/Avalonia.Native/headers/avalonia-native-guids.h b/native/Avalonia.Native/inc/avalonia-native-guids.h similarity index 100% rename from src/Avalonia.Native/headers/avalonia-native-guids.h rename to native/Avalonia.Native/inc/avalonia-native-guids.h diff --git a/src/Avalonia.Native/headers/avalonia-native.h b/native/Avalonia.Native/inc/avalonia-native.h similarity index 97% rename from src/Avalonia.Native/headers/avalonia-native.h rename to native/Avalonia.Native/inc/avalonia-native.h index 0c965b7498..0e3edaa2dc 100644 --- a/src/Avalonia.Native/headers/avalonia-native.h +++ b/native/Avalonia.Native/inc/avalonia-native.h @@ -173,6 +173,12 @@ public: virtual HRESULT ObtainGlFeature(IAvnGlFeature** ppv) = 0; }; +AVNCOM(IAvnString, 17) : IUnknown +{ + virtual HRESULT Pointer(void**retOut) = 0; + virtual HRESULT Length(int*ret) = 0; +}; + AVNCOM(IAvnWindowBase, 02) : IUnknown { virtual HRESULT Show() = 0; @@ -210,7 +216,7 @@ AVNCOM(IAvnWindow, 04) : virtual IAvnWindowBase virtual HRESULT ShowDialog (IUnknown**ppv) = 0; virtual HRESULT SetCanResize(bool value) = 0; virtual HRESULT SetHasDecorations(bool value) = 0; - virtual HRESULT SetTitle (const char* title) = 0; + virtual HRESULT SetTitle (void* utf8Title) = 0; virtual HRESULT SetTitleBarColor (AvnColor color) = 0; virtual HRESULT SetWindowState(AvnWindowState state) = 0; virtual HRESULT GetWindowState(AvnWindowState*ret) = 0; @@ -315,8 +321,8 @@ AVNCOM(IAvnScreens, 0e) : IUnknown AVNCOM(IAvnClipboard, 0f) : IUnknown { - virtual HRESULT GetText (void** retOut) = 0; - virtual HRESULT SetText (char* text) = 0; + virtual HRESULT GetText (IAvnString**ppv) = 0; + virtual HRESULT SetText (void* utf8Text) = 0; virtual HRESULT Clear() = 0; }; diff --git a/src/Avalonia.Native/headers/com.h b/native/Avalonia.Native/inc/com.h similarity index 100% rename from src/Avalonia.Native/headers/com.h rename to native/Avalonia.Native/inc/com.h diff --git a/src/Avalonia.Native/headers/comimpl.h b/native/Avalonia.Native/inc/comimpl.h similarity index 94% rename from src/Avalonia.Native/headers/comimpl.h rename to native/Avalonia.Native/inc/comimpl.h index cea6d2207a..cf1aa4c735 100644 --- a/src/Avalonia.Native/headers/comimpl.h +++ b/native/Avalonia.Native/inc/comimpl.h @@ -63,19 +63,20 @@ public: #define FORWARD_IUNKNOWN() \ -virtual ULONG Release(){ \ +virtual ULONG Release() override \ +{ \ return ComObject::Release(); \ } \ -virtual ULONG AddRef() \ +virtual ULONG AddRef() override \ { \ return ComObject::AddRef(); \ } \ -virtual HRESULT QueryInterface(REFIID riid, void **ppvObject) \ +virtual HRESULT QueryInterface(REFIID riid, void **ppvObject) override \ { \ return ComObject::QueryInterface(riid, ppvObject); \ } -#define BEGIN_INTERFACE_MAP() public: virtual HRESULT STDMETHODCALLTYPE QueryInterfaceImpl(REFIID riid, void **ppvObject){ +#define BEGIN_INTERFACE_MAP() public: virtual HRESULT STDMETHODCALLTYPE QueryInterfaceImpl(REFIID riid, void **ppvObject) override { #define INTERFACE_MAP_ENTRY(TInterface, IID) if(0 == memcmp(riid, &IID, sizeof(GUID))) { TInterface* casted = this; *ppvObject = casted; return S_OK; } #define END_INTERFACE_MAP() return E_NOINTERFACE; } #define INHERIT_INTERFACE_MAP(TBase) if(TBase::QueryInterfaceImpl(riid, ppvObject) == S_OK) return S_OK; diff --git a/src/Avalonia.Native/headers/key.h b/native/Avalonia.Native/inc/key.h similarity index 100% rename from src/Avalonia.Native/headers/key.h rename to native/Avalonia.Native/inc/key.h diff --git a/src/Avalonia.Native.OSX/.gitignore b/native/Avalonia.Native/src/OSX/.gitignore similarity index 100% rename from src/Avalonia.Native.OSX/.gitignore rename to native/Avalonia.Native/src/OSX/.gitignore diff --git a/src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj similarity index 94% rename from src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj rename to native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj index 8d36bf3b8f..cc74d5669f 100644 --- a/src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj +++ b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 37A517B32159597E00FBA241 /* Screens.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37A517B22159597E00FBA241 /* Screens.mm */; }; 37C09D8821580FE4006A6758 /* SystemDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37C09D8721580FE4006A6758 /* SystemDialogs.mm */; }; + 37DDA9B0219330F8002E132B /* AvnString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37DDA9AF219330F8002E132B /* AvnString.mm */; }; 37E2330F21583241000CB7E2 /* KeyTransform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E2330E21583241000CB7E2 /* KeyTransform.mm */; }; 5B21A982216530F500CEE36E /* cursor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5B21A981216530F500CEE36E /* cursor.mm */; }; 5B8BD94F215BFEA6005ED2A7 /* clipboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5B8BD94E215BFEA6005ED2A7 /* clipboard.mm */; }; @@ -22,10 +23,12 @@ /* Begin PBXFileReference section */ 379860FE214DA0C000CD0246 /* KeyTransform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeyTransform.h; sourceTree = ""; }; - 37A4E71A2178846A00EACBCD /* headers */ = {isa = PBXFileReference; lastKnownFileType = folder; name = headers; path = ../Avalonia.Native/headers; sourceTree = ""; }; + 37A4E71A2178846A00EACBCD /* headers */ = {isa = PBXFileReference; lastKnownFileType = folder; name = headers; path = ../../inc; sourceTree = ""; }; 37A517B22159597E00FBA241 /* Screens.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Screens.mm; sourceTree = ""; }; 37C09D8721580FE4006A6758 /* SystemDialogs.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemDialogs.mm; sourceTree = ""; }; 37C09D8A21581EF2006A6758 /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + 37DDA9AF219330F8002E132B /* AvnString.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AvnString.mm; sourceTree = ""; }; + 37DDA9B121933371002E132B /* AvnString.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AvnString.h; sourceTree = ""; }; 37E2330E21583241000CB7E2 /* KeyTransform.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KeyTransform.mm; sourceTree = ""; }; 5B21A981216530F500CEE36E /* cursor.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = cursor.mm; sourceTree = ""; }; 5B8BD94E215BFEA6005ED2A7 /* clipboard.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = clipboard.mm; sourceTree = ""; }; @@ -65,6 +68,8 @@ AB7A61E62147C814003C5833 = { isa = PBXGroup; children = ( + 37DDA9B121933371002E132B /* AvnString.h */, + 37DDA9AF219330F8002E132B /* AvnString.mm */, 37A4E71A2178846A00EACBCD /* headers */, AB573DC3217605E400D389A2 /* gl.mm */, 5BF943652167AD1D009CAE35 /* cursor.h */, @@ -161,6 +166,7 @@ files = ( 5B8BD94F215BFEA6005ED2A7 /* clipboard.mm in Sources */, 5B21A982216530F500CEE36E /* cursor.mm in Sources */, + 37DDA9B0219330F8002E132B /* AvnString.mm in Sources */, AB8F7D6B21482D7F0057DBA5 /* platformthreading.mm in Sources */, 37E2330F21583241000CB7E2 /* KeyTransform.mm in Sources */, 37A517B32159597E00FBA241 /* Screens.mm in Sources */, @@ -285,7 +291,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_PREFIX = lib; - HEADER_SEARCH_PATHS = ../Avalonia.Native/headers; + HEADER_SEARCH_PATHS = ../../inc; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -296,7 +302,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_PREFIX = lib; - HEADER_SEARCH_PATHS = ../Avalonia.Native/headers; + HEADER_SEARCH_PATHS = ../../inc; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme similarity index 95% rename from src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme rename to native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme index 96588581bf..1a665d3ea5 100644 --- a/src/Avalonia.Native.OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme +++ b/native/Avalonia.Native/src/OSX/Avalonia.Native.OSX.xcodeproj/xcshareddata/xcschemes/Avalonia.Native.OSX.xcscheme @@ -38,7 +38,7 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle = "0" useCustomWorkingDirectory = "YES" - customWorkingDirectory = "$PROJECT_DIR/../../samples/ControlCatalog" + customWorkingDirectory = "$PROJECT_DIR/../../../../samples/ControlCatalog.NetCore" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" @@ -58,7 +58,7 @@ diff --git a/native/Avalonia.Native/src/OSX/AvnString.h b/native/Avalonia.Native/src/OSX/AvnString.h new file mode 100644 index 0000000000..9a8f5a1318 --- /dev/null +++ b/native/Avalonia.Native/src/OSX/AvnString.h @@ -0,0 +1,14 @@ +// +// AvnString.h +// Avalonia.Native.OSX +// +// Created by Dan Walmsley on 07/11/2018. +// Copyright © 2018 Avalonia. All rights reserved. +// + +#ifndef AvnString_h +#define AvnString_h + +extern IAvnString* CreateAvnString(NSString* string); + +#endif /* AvnString_h */ diff --git a/native/Avalonia.Native/src/OSX/AvnString.mm b/native/Avalonia.Native/src/OSX/AvnString.mm new file mode 100644 index 0000000000..b491cf2a92 --- /dev/null +++ b/native/Avalonia.Native/src/OSX/AvnString.mm @@ -0,0 +1,55 @@ +// +// AvnString.m +// Avalonia.Native.OSX +// +// Created by Dan Walmsley on 07/11/2018. +// Copyright © 2018 Avalonia. All rights reserved. +// + +#include "common.h" + +class AvnStringImpl : public virtual ComSingleObject +{ +private: + NSString* _string; + +public: + FORWARD_IUNKNOWN() + + AvnStringImpl(NSString* string) + { + _string = string; + } + + virtual HRESULT Pointer(void**retOut) override + { + @autoreleasepool + { + if(retOut == nullptr) + { + return E_POINTER; + } + + *retOut = (void*)_string.UTF8String; + + return S_OK; + } + } + + virtual HRESULT Length(int*retOut) override + { + if(retOut == nullptr) + { + return E_POINTER; + } + + *retOut = (int)_string.length; + + return S_OK; + } +}; + +IAvnString* CreateAvnString(NSString* string) +{ + return new AvnStringImpl(string); +} diff --git a/src/Avalonia.Native.OSX/KeyTransform.h b/native/Avalonia.Native/src/OSX/KeyTransform.h similarity index 100% rename from src/Avalonia.Native.OSX/KeyTransform.h rename to native/Avalonia.Native/src/OSX/KeyTransform.h diff --git a/src/Avalonia.Native.OSX/KeyTransform.mm b/native/Avalonia.Native/src/OSX/KeyTransform.mm similarity index 100% rename from src/Avalonia.Native.OSX/KeyTransform.mm rename to native/Avalonia.Native/src/OSX/KeyTransform.mm diff --git a/src/Avalonia.Native.OSX/Screens.mm b/native/Avalonia.Native/src/OSX/Screens.mm similarity index 91% rename from src/Avalonia.Native.OSX/Screens.mm rename to native/Avalonia.Native/src/OSX/Screens.mm index 229c598797..9d436b98c5 100644 --- a/src/Avalonia.Native.OSX/Screens.mm +++ b/native/Avalonia.Native/src/OSX/Screens.mm @@ -7,7 +7,7 @@ class Screens : public ComSingleObject { public: FORWARD_IUNKNOWN() - virtual HRESULT GetScreenCount (int* ret) + virtual HRESULT GetScreenCount (int* ret) override { @autoreleasepool { @@ -17,7 +17,7 @@ class Screens : public ComSingleObject } } - virtual HRESULT GetScreen (int index, AvnScreen* ret) + virtual HRESULT GetScreen (int index, AvnScreen* ret) override { @autoreleasepool { diff --git a/src/Avalonia.Native.OSX/SystemDialogs.mm b/native/Avalonia.Native/src/OSX/SystemDialogs.mm similarity index 98% rename from src/Avalonia.Native.OSX/SystemDialogs.mm rename to native/Avalonia.Native/src/OSX/SystemDialogs.mm index 55b1abc720..7049f77d20 100644 --- a/src/Avalonia.Native.OSX/SystemDialogs.mm +++ b/native/Avalonia.Native/src/OSX/SystemDialogs.mm @@ -11,7 +11,7 @@ public: virtual void SelectFolderDialog (IAvnWindow* parentWindowHandle, IAvnSystemDialogEvents* events, const char* title, - const char* initialDirectory) + const char* initialDirectory) override { @autoreleasepool { @@ -88,7 +88,7 @@ public: const char* title, const char* initialDirectory, const char* initialFile, - const char* filters) + const char* filters) override { @autoreleasepool { @@ -179,7 +179,7 @@ public: const char* title, const char* initialDirectory, const char* initialFile, - const char* filters) + const char* filters) override { @autoreleasepool { diff --git a/src/Avalonia.Native.OSX/clipboard.mm b/native/Avalonia.Native/src/OSX/clipboard.mm similarity index 58% rename from src/Avalonia.Native.OSX/clipboard.mm rename to native/Avalonia.Native/src/OSX/clipboard.mm index e39b78fc33..53c1fe3c2c 100644 --- a/src/Avalonia.Native.OSX/clipboard.mm +++ b/native/Avalonia.Native/src/OSX/clipboard.mm @@ -2,35 +2,40 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. #include "common.h" +#include "AvnString.h" class Clipboard : public ComSingleObject { public: FORWARD_IUNKNOWN() - virtual HRESULT GetText (void** retOut) + virtual HRESULT GetText (IAvnString**ppv) override { @autoreleasepool { - NSString *str = [[NSPasteboard generalPasteboard] stringForType:NSPasteboardTypeString]; - *retOut = (void *)str.UTF8String; + if(ppv == nullptr) + { + return E_POINTER; + } + + *ppv = CreateAvnString([[NSPasteboard generalPasteboard] stringForType:NSPasteboardTypeString]); + + return S_OK; } - - return S_OK; } - virtual HRESULT SetText (char* text) + virtual HRESULT SetText (void* utf8String) override { @autoreleasepool { NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; [pasteBoard clearContents]; - [pasteBoard setString:@(text) forType:NSPasteboardTypeString]; + [pasteBoard setString:[NSString stringWithUTF8String:(const char*)utf8String] forType:NSPasteboardTypeString]; } return S_OK; } - virtual HRESULT Clear() + virtual HRESULT Clear() override { @autoreleasepool { diff --git a/src/Avalonia.Native.OSX/common.h b/native/Avalonia.Native/src/OSX/common.h similarity index 100% rename from src/Avalonia.Native.OSX/common.h rename to native/Avalonia.Native/src/OSX/common.h diff --git a/src/Avalonia.Native.OSX/cursor.h b/native/Avalonia.Native/src/OSX/cursor.h similarity index 100% rename from src/Avalonia.Native.OSX/cursor.h rename to native/Avalonia.Native/src/OSX/cursor.h diff --git a/src/Avalonia.Native.OSX/cursor.mm b/native/Avalonia.Native/src/OSX/cursor.mm similarity index 98% rename from src/Avalonia.Native.OSX/cursor.mm rename to native/Avalonia.Native/src/OSX/cursor.mm index 6a06918527..bd2c94a4d8 100644 --- a/src/Avalonia.Native.OSX/cursor.mm +++ b/native/Avalonia.Native/src/OSX/cursor.mm @@ -51,7 +51,7 @@ class CursorFactory : public ComSingleObjectAddRef(); return S_OK; } - virtual HRESULT ObtainImmediateContext(IAvnGlContext**retOut) + virtual HRESULT ObtainImmediateContext(IAvnGlContext**retOut) override { *retOut = _immediate; _immediate->AddRef(); @@ -193,14 +193,14 @@ public: _view = view; } - virtual HRESULT GetPixelSize(AvnPixelSize* ret) + virtual HRESULT GetPixelSize(AvnPixelSize* ret) override { auto fsize = [_view convertSizeToBacking: [_view frame].size]; ret->Width = (int)fsize.width; ret->Height = (int)fsize.height; return S_OK; } - virtual HRESULT GetScaling(double* ret) + virtual HRESULT GetScaling(double* ret) override { *ret = [_window backingScaleFactor]; return S_OK; @@ -230,7 +230,7 @@ public: _context = GetFeature()->CreateContext(); } - virtual HRESULT BeginDrawing(IAvnGlSurfaceRenderingSession** ret) + virtual HRESULT BeginDrawing(IAvnGlSurfaceRenderingSession** ret) override { auto f = GetFeature(); if(f == NULL) diff --git a/src/Avalonia.Native.OSX/main.mm b/native/Avalonia.Native/src/OSX/main.mm similarity index 89% rename from src/Avalonia.Native.OSX/main.mm rename to native/Avalonia.Native/src/OSX/main.mm index bb32c44918..4d6dcfed85 100644 --- a/src/Avalonia.Native.OSX/main.mm +++ b/native/Avalonia.Native/src/OSX/main.mm @@ -16,7 +16,7 @@ class MacOptions : public ComSingleObject { public: FORWARD_IUNKNOWN() - virtual HRESULT SetShowInDock(int show) + virtual HRESULT SetShowInDock(int show) override { ShowInDock = show; SetActivationPolicy(); @@ -64,7 +64,7 @@ class AvaloniaNative : public ComSingleObject(cancel); @@ -125,12 +125,12 @@ public: } } - virtual void Signal(int priority) + virtual void Signal(int priority) override { [_signaler signal:priority]; } - virtual IUnknown* StartTimer(int priority, int ms, IAvnActionCallback* callback) + virtual IUnknown* StartTimer(int priority, int ms, IAvnActionCallback* callback) override { @autoreleasepool { diff --git a/src/Avalonia.Native.OSX/window.h b/native/Avalonia.Native/src/OSX/window.h similarity index 100% rename from src/Avalonia.Native.OSX/window.h rename to native/Avalonia.Native/src/OSX/window.h diff --git a/src/Avalonia.Native.OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm similarity index 93% rename from src/Avalonia.Native.OSX/window.mm rename to native/Avalonia.Native/src/OSX/window.mm index 2e9f7503fb..16b21efcd5 100644 --- a/src/Avalonia.Native.OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -81,12 +81,12 @@ public: [Window setContentView: View]; } - virtual AvnWindow* GetNSWindow() + virtual AvnWindow* GetNSWindow() override { return Window; } - virtual HRESULT Show() + virtual HRESULT Show() override { @autoreleasepool { @@ -102,7 +102,7 @@ public: } } - virtual HRESULT Hide () + virtual HRESULT Hide () override { @autoreleasepool { @@ -115,7 +115,7 @@ public: } } - virtual HRESULT Activate () + virtual HRESULT Activate () override { @autoreleasepool { @@ -128,7 +128,7 @@ public: return S_OK; } - virtual HRESULT SetTopMost (bool value) + virtual HRESULT SetTopMost (bool value) override { @autoreleasepool { @@ -138,7 +138,7 @@ public: } } - virtual HRESULT Close() + virtual HRESULT Close() override { @autoreleasepool { @@ -147,7 +147,7 @@ public: } } - virtual HRESULT GetClientSize(AvnSize* ret) + virtual HRESULT GetClientSize(AvnSize* ret) override { @autoreleasepool { @@ -160,7 +160,7 @@ public: } } - virtual HRESULT GetMaxClientSize(AvnSize* ret) + virtual HRESULT GetMaxClientSize(AvnSize* ret) override { @autoreleasepool { @@ -176,7 +176,7 @@ public: } } - virtual HRESULT GetScaling (double* ret) + virtual HRESULT GetScaling (double* ret) override { @autoreleasepool { @@ -194,7 +194,7 @@ public: } } - virtual HRESULT SetMinMaxSize (AvnSize minSize, AvnSize maxSize) + virtual HRESULT SetMinMaxSize (AvnSize minSize, AvnSize maxSize) override { @autoreleasepool { @@ -205,7 +205,7 @@ public: } } - virtual HRESULT Resize(double x, double y) + virtual HRESULT Resize(double x, double y) override { @autoreleasepool { @@ -215,7 +215,7 @@ public: } } - virtual HRESULT Invalidate (AvnRect rect) + virtual HRESULT Invalidate (AvnRect rect) override { @autoreleasepool { @@ -225,7 +225,7 @@ public: } } - virtual bool TryLock() + virtual bool TryLock() override { @autoreleasepool { @@ -233,7 +233,7 @@ public: } } - virtual void Unlock() + virtual void Unlock() override { @autoreleasepool { @@ -241,7 +241,7 @@ public: } } - virtual HRESULT BeginMoveDrag () + virtual HRESULT BeginMoveDrag () override { @autoreleasepool { @@ -258,12 +258,12 @@ public: } } - virtual HRESULT BeginResizeDrag (AvnWindowEdge edge) + virtual HRESULT BeginResizeDrag (AvnWindowEdge edge) override { return S_OK; } - virtual HRESULT GetPosition (AvnPoint* ret) + virtual HRESULT GetPosition (AvnPoint* ret) override { @autoreleasepool { @@ -283,7 +283,7 @@ public: } } - virtual HRESULT SetPosition (AvnPoint point) + virtual HRESULT SetPosition (AvnPoint point) override { @autoreleasepool { @@ -294,7 +294,7 @@ public: } } - virtual HRESULT PointToClient (AvnPoint point, AvnPoint* ret) + virtual HRESULT PointToClient (AvnPoint point, AvnPoint* ret) override { @autoreleasepool { @@ -312,7 +312,7 @@ public: } } - virtual HRESULT PointToScreen (AvnPoint point, AvnPoint* ret) + virtual HRESULT PointToScreen (AvnPoint point, AvnPoint* ret) override { @autoreleasepool { @@ -329,13 +329,13 @@ public: } } - virtual HRESULT ThreadSafeSetSwRenderedFrame(AvnFramebuffer* fb, IUnknown* dispose) + virtual HRESULT ThreadSafeSetSwRenderedFrame(AvnFramebuffer* fb, IUnknown* dispose) override { [View setSwRenderedFrame: fb dispose: dispose]; return S_OK; } - virtual HRESULT GetSoftwareFramebuffer(AvnFramebuffer*ret) + virtual HRESULT GetSoftwareFramebuffer(AvnFramebuffer*ret) override { if(![[NSThread currentThread] isMainThread]) return E_FAIL; @@ -345,7 +345,7 @@ public: return S_OK; } - virtual HRESULT SetCursor(IAvnCursor* cursor) + virtual HRESULT SetCursor(IAvnCursor* cursor) override { @autoreleasepool { @@ -367,7 +367,7 @@ public: } } - virtual HRESULT CreateGlRenderTarget(IAvnGlSurfaceRenderTarget** ppv) + virtual HRESULT CreateGlRenderTarget(IAvnGlSurfaceRenderTarget** ppv) override { if(View == NULL) return E_FAIL; @@ -440,7 +440,7 @@ private: [Window setCanBecomeKeyAndMain]; } - virtual HRESULT Show () + virtual HRESULT Show () override { @autoreleasepool { @@ -450,7 +450,7 @@ private: } } - virtual HRESULT ShowDialog (IUnknown**ppv) + virtual HRESULT ShowDialog (IUnknown**ppv) override { @autoreleasepool { @@ -475,7 +475,7 @@ private: } } - void WindowStateChanged () + void WindowStateChanged () override { AvnWindowState state; GetWindowState(&state); @@ -509,7 +509,7 @@ private: } } - virtual HRESULT SetCanResize(bool value) + virtual HRESULT SetCanResize(bool value) override { @autoreleasepool { @@ -519,7 +519,7 @@ private: } } - virtual HRESULT SetHasDecorations(bool value) + virtual HRESULT SetHasDecorations(bool value) override { @autoreleasepool { @@ -530,11 +530,11 @@ private: } } - virtual HRESULT SetTitle (const char* title) + virtual HRESULT SetTitle (void* utf8title) override { @autoreleasepool { - _lastTitle = [NSString stringWithUTF8String:title]; + _lastTitle = [NSString stringWithUTF8String:(const char*)utf8title]; [Window setTitle:_lastTitle]; [Window setTitleVisibility:NSWindowTitleVisible]; @@ -542,7 +542,7 @@ private: } } - virtual HRESULT SetTitleBarColor(AvnColor color) + virtual HRESULT SetTitleBarColor(AvnColor color) override { @autoreleasepool { @@ -571,7 +571,7 @@ private: return S_OK; } - virtual HRESULT GetWindowState (AvnWindowState*ret) + virtual HRESULT GetWindowState (AvnWindowState*ret) override { @autoreleasepool { @@ -598,7 +598,7 @@ private: } } - virtual HRESULT SetWindowState (AvnWindowState state) + virtual HRESULT SetWindowState (AvnWindowState state) override { @autoreleasepool { @@ -642,7 +642,7 @@ private: } protected: - virtual void OnResized () + virtual void OnResized () override { auto windowState = [Window isMiniaturized] ? Minimized : (IsZoomed() ? Maximized : Normal); @@ -655,7 +655,7 @@ protected: } } - virtual NSWindowStyleMask GetStyle() + virtual NSWindowStyleMask GetStyle() override { unsigned long s = NSWindowStyleMaskBorderless; if(_hasDecorations) @@ -963,7 +963,11 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent - (BOOL)performKeyEquivalent:(NSEvent *)event { - return _lastKeyHandled; + bool result = _lastKeyHandled; + + _lastKeyHandled = false; + + return result; } - (void)keyDown:(NSEvent *)event @@ -1192,12 +1196,12 @@ private: } protected: - virtual NSWindowStyleMask GetStyle() + virtual NSWindowStyleMask GetStyle() override { return NSWindowStyleMaskBorderless; } - virtual HRESULT Resize(double x, double y) + virtual HRESULT Resize(double x, double y) override { @autoreleasepool { diff --git a/packages.cake b/packages.cake deleted file mode 100644 index fea45153f1..0000000000 --- a/packages.cake +++ /dev/null @@ -1,505 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Xml.Linq; - -public class Packages -{ - public List NuspecNuGetSettings { get; private set; } - public FilePath[] NugetPackages { get; private set; } - public FilePath[] BinFiles { get; private set; } - public string NugetPackagesDir {get; private set;} - public string SkiaSharpVersion {get; private set; } - public string SkiaSharpLinuxVersion {get; private set; } - public Dictionary>> PackageVersions{get; private set;} - - class DependencyBuilder : List - { - Packages _parent; - - public DependencyBuilder(Packages parent) - { - _parent = parent; - } - - string GetVersion(string name) - { - return _parent.PackageVersions[name].First().Item1; - } - - public DependencyBuilder Dep(string name, params string[] fws) - { - if(fws.Length == 0) - Add(new NuSpecDependency() { Id = name, Version = GetVersion(name) }); - foreach(var fw in fws) - Add(new NuSpecDependency() { Id = name, TargetFramework = fw, Version = GetVersion(name) }); - return this; - } - public DependencyBuilder Deps(string[] fws, params string[] deps) - { - foreach(var fw in fws) - foreach(var name in deps) - Add(new NuSpecDependency() { Id = name, TargetFramework = fw, Version = GetVersion(name) }); - return this; - } - } - - public Packages(ICakeContext context, Parameters parameters) - { - // NUGET NUSPECS - context.Information("Getting git modules:"); - - var ignoredSubModulesPaths = System.IO.File.ReadAllLines(".git/config").Where(m=>m.StartsWith("[submodule ")).Select(m => - { - var path = m.Split(' ')[1].Trim("\"[] \t".ToArray()); - context.Information(path); - return ((DirectoryPath)context.Directory(path)).FullPath; - }).ToList(); - - var normalizePath = new Func( - path => path.Replace(System.IO.Path.DirectorySeparatorChar, System.IO.Path.AltDirectorySeparatorChar).ToUpperInvariant()); - - // Key: Package Id - // Value is Tuple where Item1: Package Version, Item2: The *.csproj/*.props file path. - var packageVersions = new Dictionary>>(); - PackageVersions = packageVersions; - System.IO.Directory.EnumerateFiles(((DirectoryPath)context.Directory("./build")).FullPath, - "*.props", SearchOption.AllDirectories).ToList().ForEach(fileName => - { - if (!ignoredSubModulesPaths.Any(i => normalizePath(fileName).Contains(normalizePath(i)))) - { - var xdoc = XDocument.Load(fileName); - foreach (var reference in xdoc.Descendants().Where(x => x.Name.LocalName == "PackageReference")) - { - var name = reference.Attribute("Include").Value; - var versionAttribute = reference.Attribute("Version"); - var version = versionAttribute != null - ? versionAttribute.Value - : reference.Elements().First(x=>x.Name.LocalName == "Version").Value; - IList> versions; - packageVersions.TryGetValue(name, out versions); - if (versions == null) - { - versions = new List>(); - packageVersions[name] = versions; - } - versions.Add(Tuple.Create(version, fileName)); - } - } - }); - - context.Information("Checking installed NuGet package dependencies versions:"); - - packageVersions.ToList().ForEach(package => - { - var packageVersion = package.Value.First().Item1; - bool isValidVersion = package.Value.All(x => x.Item1 == packageVersion); - if (!isValidVersion) - { - context.Information("Error: package {0} has multiple versions installed:", package.Key); - foreach (var v in package.Value) - { - context.Information("{0}, file: {1}", v.Item1, v.Item2); - } - throw new Exception("Detected multiple NuGet package version installed for different projects."); - } - }); - - context.Information("Setting NuGet package dependencies versions:"); - - var SerilogVersion = packageVersions["Serilog"].FirstOrDefault().Item1; - var SerilogSinksDebugVersion = packageVersions["Serilog.Sinks.Debug"].FirstOrDefault().Item1; - var SerilogSinksTraceVersion = packageVersions["Serilog.Sinks.Trace"].FirstOrDefault().Item1; - var SystemReactiveVersion = packageVersions["System.Reactive"].FirstOrDefault().Item1; - var ReactiveUIVersion = packageVersions["reactiveui"].FirstOrDefault().Item1; - var SystemValueTupleVersion = packageVersions["System.ValueTuple"].FirstOrDefault().Item1; - SkiaSharpVersion = packageVersions["SkiaSharp"].FirstOrDefault().Item1; - SkiaSharpLinuxVersion = packageVersions["Avalonia.Skia.Linux.Natives"].FirstOrDefault().Item1; - var SharpDXVersion = packageVersions["SharpDX"].FirstOrDefault().Item1; - var SharpDXDirect2D1Version = packageVersions["SharpDX.Direct2D1"].FirstOrDefault().Item1; - var SharpDXDirect3D11Version = packageVersions["SharpDX.Direct3D11"].FirstOrDefault().Item1; - var SharpDXDirect3D9Version = packageVersions["SharpDX.Direct3D9"].FirstOrDefault().Item1; - var SharpDXDXGIVersion = packageVersions["SharpDX.DXGI"].FirstOrDefault().Item1; - var SystemMemoryVersion = packageVersions["System.Memory"].FirstOrDefault().Item1; - - context.Information("Package: Serilog, version: {0}", SerilogVersion); - context.Information("Package: System.Reactive, version: {0}", SystemReactiveVersion); - context.Information("Package: reactiveui, version: {0}", ReactiveUIVersion); - context.Information("Package: System.ValueTuple, version: {0}", SystemValueTupleVersion); - context.Information("Package: SkiaSharp, version: {0}", SkiaSharpVersion); - context.Information("Package: Avalonia.Skia.Linux.Natives, version: {0}", SkiaSharpLinuxVersion); - context.Information("Package: SharpDX, version: {0}", SharpDXVersion); - context.Information("Package: SharpDX.Direct2D1, version: {0}", SharpDXDirect2D1Version); - context.Information("Package: SharpDX.Direct3D11, version: {0}", SharpDXDirect3D11Version); - context.Information("Package: SharpDX.Direct3D9, version: {0}", SharpDXDirect3D9Version); - context.Information("Package: SharpDX.DXGI, version: {0}", SharpDXDXGIVersion); - context.Information("Package: System.Memory, version: {0}", SystemMemoryVersion); - - var nugetPackagesDir = System.Environment.GetEnvironmentVariable("NUGET_HOME") - ?? System.IO.Path.Combine(System.Environment.GetEnvironmentVariable("USERPROFILE") ?? System.Environment.GetEnvironmentVariable("HOME"), ".nuget"); - - NugetPackagesDir = System.IO.Path.Combine(nugetPackagesDir, "packages"); - - var SetNuGetNuspecCommonProperties = new Action ((nuspec) => { - nuspec.Version = parameters.Version; - nuspec.Authors = new [] { "Avalonia Team" }; - nuspec.Owners = new [] { "stevenk" }; - nuspec.LicenseUrl = new Uri("http://opensource.org/licenses/MIT"); - nuspec.ProjectUrl = new Uri("https://github.com/AvaloniaUI/Avalonia/"); - nuspec.RequireLicenseAcceptance = false; - nuspec.Symbols = false; - nuspec.NoPackageAnalysis = true; - nuspec.Description = "The Avalonia UI framework"; - nuspec.Copyright = "Copyright 2015"; - nuspec.Tags = new [] { "Avalonia" }; - }); - - var coreLibraries = new string[][] - { - new [] { "./src/", "Avalonia.Animation"}, - new [] { "./src/", "Avalonia.Base"}, - new [] { "./src/", "Avalonia.Controls"}, - new [] { "./src/", "Avalonia.DesignerSupport"}, - new [] { "./src/", "Avalonia.Diagnostics"}, - new [] { "./src/", "Avalonia.Input"}, - new [] { "./src/", "Avalonia.Interactivity"}, - new [] { "./src/", "Avalonia.Layout"}, - new [] { "./src/", "Avalonia.Logging.Serilog"}, - new [] { "./src/", "Avalonia.Visuals"}, - new [] { "./src/", "Avalonia.Styling"}, - new [] { "./src/", "Avalonia.OpenGL"}, - new [] { "./src/", "Avalonia.Themes.Default"}, - new [] { "./src/Markup/", "Avalonia.Markup"}, - new [] { "./src/Markup/", "Avalonia.Markup.Xaml"}, - }; - - var extensionsToPack = new [] {".dll", ".xml", ".pdb"}; - - var coreLibrariesFiles = coreLibraries - .SelectMany(lib => extensionsToPack.Select(ext => new {lib, ext})) - .Select((lib) => { - return (FilePath)context.File(lib.lib[0] + lib.lib[1] + "/bin/" + parameters.DirSuffix + "/netstandard2.0/" + lib.lib[1] + lib.ext); - }).ToList(); - - var coreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { - return new NuSpecContent { - Source = file.FullPath, Target = "lib/netstandard2.0" - }; - }); - - var netFrameworkCoreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { - return new NuSpecContent { - Source = file.FullPath, Target = "lib/net461" - }; - }); - - var netcoreappCoreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { - return new NuSpecContent { - Source = file.FullPath, Target = "lib/netcoreapp2.0" - }; - }); - - var netFrameworkRuntimePlatform = extensionsToPack.Select(libSuffix => { - return new NuSpecContent { - Source = ((FilePath)context.File("./src/Avalonia.DotNetFrameworkRuntime/bin/" + parameters.DirSuffix + "/net461/Avalonia.DotNetFrameworkRuntime" + libSuffix)).FullPath, - Target = "lib/net461" - }; - }); - - var netCoreRuntimePlatform = extensionsToPack.Select(libSuffix => { - return new NuSpecContent { - Source = ((FilePath)context.File("./src/Avalonia.DotNetCoreRuntime/bin/" + parameters.DirSuffix + "/netcoreapp2.0/Avalonia.DotNetCoreRuntime" + libSuffix)).FullPath, - Target = "lib/netcoreapp2.0" - }; - }); - - var toolHostApp = new NuSpecContent{ - Source = ((FilePath)context.File("./src/tools/Avalonia.Designer.HostApp/bin/" + parameters.DirSuffix + "/netcoreapp2.0/Avalonia.Designer.HostApp.dll")).FullPath, - Target = "tools/netcoreapp2.0/previewer" - }; - - var toolHostAppNetFx = new NuSpecContent{ - Source = ((FilePath)context.File("./src/tools/Avalonia.Designer.HostApp.NetFx/bin/" + parameters.DirSuffix + "/net461/Avalonia.Designer.HostApp.exe")).FullPath, - Target = "tools/net461/previewer" - }; - - var toolsContent = new[] { toolHostApp, toolHostAppNetFx }; - var coreFiles = coreLibrariesNuSpecContent - .Concat(netFrameworkCoreLibrariesNuSpecContent).Concat(netFrameworkRuntimePlatform) - .Concat(netcoreappCoreLibrariesNuSpecContent).Concat(netCoreRuntimePlatform) - .Concat(toolsContent) - .ToList(); - - var nuspecNuGetSettingsCore = new [] - { - /////////////////////////////////////////////////////////////////////////////// - // Avalonia - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia", - Dependencies = new DependencyBuilder(this) - { - new NuSpecDependency() { Id = "Avalonia.Remote.Protocol", Version = parameters.Version, TargetFramework="netstandard2.0" }, - new NuSpecDependency() { Id = "Avalonia.Remote.Protocol", Version = parameters.Version, TargetFramework="netcoreapp2.0" }, - new NuSpecDependency() { Id = "Avalonia.Remote.Protocol", Version = parameters.Version, TargetFramework="net461" }, - new NuSpecDependency() { Id = "System.ValueTuple", Version = SystemValueTupleVersion, TargetFramework="net461" }, - new NuSpecDependency() { Id = "System.ComponentModel.TypeConverter", Version = "4.3.0", TargetFramework="net461" }, - new NuSpecDependency() { Id = "NETStandard.Library", Version = "2.0.0", TargetFramework="net461"} - } - .Deps(new string[]{"netstandard2.0", "netcoreapp2.0", "net461"}, - "Serilog", "Serilog.Sinks.Debug", "Serilog.Sinks.Trace", - "System.Memory", "System.Reactive", "System.ComponentModel.Annotations") - .ToArray(), - Files = coreFiles, - BasePath = context.Directory("./"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.ReactiveUI - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.ReactiveUI", - Dependencies = new DependencyBuilder(this) - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - }.Deps(new string[] {null}, "reactiveui"), - Files = new [] - { - new NuSpecContent { Source = "Avalonia.ReactiveUI.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Avalonia.ReactiveUI/bin/" + parameters.DirSuffix + "/netstandard2.0"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Remote.Protocol - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Remote.Protocol", - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Remote.Protocol.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Avalonia.Remote.Protocol/bin/" + parameters.DirSuffix + "/netstandard2.0"), - OutputDirectory = parameters.NugetRoot - }, - }; - - var nuspecNuGetSettingsMobile = new [] - { - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Android - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Android", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Skia", Version = parameters.Version } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Android.dll", Target = "lib/MonoAndroid10" } - }, - BasePath = context.Directory("./src/Android/Avalonia.Android/bin/" + parameters.DirSuffix + "/monoandroid44/MonoAndroid44/"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.iOS - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.iOS", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Skia", Version = parameters.Version } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.iOS.dll", Target = "lib/Xamarin.iOS10" } - }, - BasePath = context.Directory("./src/iOS/Avalonia.iOS/bin/" + parameters.DirSuffix + "/xamarin.ios10/"), - OutputDirectory = parameters.NugetRoot - } - }; - - var nuspecNuGetSettingsDesktop = new [] - { - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Win32 - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Win32", - Dependencies = new DependencyBuilder(this) - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } - }.Deps(new string[]{null}, "System.Drawing.Common"), - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Win32/bin/" + parameters.DirSuffix + "/netstandard2.0/Avalonia.Win32.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Windows"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Direct2D1 - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Direct2D1", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - new NuSpecDependency() { Id = "SharpDX", Version = SharpDXVersion }, - new NuSpecDependency() { Id = "SharpDX.Direct2D1", Version = SharpDXDirect2D1Version }, - new NuSpecDependency() { Id = "SharpDX.Direct3D11", Version = SharpDXDirect3D11Version }, - new NuSpecDependency() { Id = "SharpDX.DXGI", Version = SharpDXDXGIVersion } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Direct2D1.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Windows/Avalonia.Direct2D1/bin/" + parameters.DirSuffix + "/netstandard2.0"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Gtk3 - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Gtk3", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Gtk3.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Gtk/Avalonia.Gtk3/bin/" + parameters.DirSuffix + "/netstandard2.0"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Skia - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Skia", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion }, - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version, TargetFramework="netcoreapp2.0" }, - new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion, TargetFramework="netcoreapp2.0" }, - new NuSpecDependency() { Id = "Avalonia.Skia.Linux.Natives", Version = SkiaSharpLinuxVersion, TargetFramework="netcoreapp2.0" }, - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version, TargetFramework="net461" }, - new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion, TargetFramework="net461" }, - new NuSpecDependency() { Id = "Avalonia.Skia.Linux.Natives", Version = SkiaSharpLinuxVersion, TargetFramework="net461" } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Skia.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Skia/Avalonia.Skia/bin/" + parameters.DirSuffix + "/netstandard2.0"), - OutputDirectory = parameters.NugetRoot - }, - new NuGetPackSettings() - { - Id = "Avalonia.MonoMac", - Dependencies = new DependencyBuilder(this) - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } - }.Dep("MonoMac.NetStandard").ToArray(), - Files = new [] - { - new NuSpecContent { Source = "netstandard2.0/Avalonia.MonoMac.dll", Target = "lib/netstandard2.0" }, - }, - BasePath = context.Directory("./src/OSX/Avalonia.MonoMac/bin/" + parameters.DirSuffix), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.Desktop - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.Desktop", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia.Direct2D1", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Win32", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Skia", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Gtk3", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.MonoMac", Version = parameters.Version } - }, - Files = new NuSpecContent[] - { - new NuSpecContent { Source = "licence.md", Target = "" } - }, - BasePath = context.Directory("./"), - OutputDirectory = parameters.NugetRoot - }, - /////////////////////////////////////////////////////////////////////////////// - // Avalonia.LinuxFramebuffer - /////////////////////////////////////////////////////////////////////////////// - new NuGetPackSettings() - { - Id = "Avalonia.LinuxFramebuffer", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Skia", Version = parameters.Version } - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.LinuxFramebuffer/bin/" + parameters.DirSuffix + "/netstandard2.0/Avalonia.LinuxFramebuffer.dll", Target = "lib/netstandard2.0" } - }, - BasePath = context.Directory("./src/Linux/"), - OutputDirectory = parameters.NugetRoot - } - }; - - var nuspecNuGetSettingInterop = new NuGetPackSettings() - { - Id = "Avalonia.Win32.Interoperability", - Dependencies = new [] - { - new NuSpecDependency() { Id = "Avalonia.Win32", Version = parameters.Version }, - new NuSpecDependency() { Id = "Avalonia.Direct2D1", Version = parameters.Version }, - new NuSpecDependency() { Id = "SharpDX.Direct3D9", Version = SharpDXDirect3D9Version }, - }, - Files = new [] - { - new NuSpecContent { Source = "Avalonia.Win32.Interop/bin/" + parameters.DirSuffix + "/net461/Avalonia.Win32.Interop.dll", Target = "lib/net461" } - }, - BasePath = context.Directory("./src/Windows"), - OutputDirectory = parameters.NugetRoot - }; - - NuspecNuGetSettings = new List(); - - NuspecNuGetSettings.AddRange(nuspecNuGetSettingsCore); - NuspecNuGetSettings.AddRange(nuspecNuGetSettingsDesktop); - - if (parameters.IsRunningOnWindows) { - NuspecNuGetSettings.Add(nuspecNuGetSettingInterop); - NuspecNuGetSettings.AddRange(nuspecNuGetSettingsMobile); - } - - NuspecNuGetSettings.ForEach((nuspec) => SetNuGetNuspecCommonProperties(nuspec)); - - NugetPackages = NuspecNuGetSettings.Select(nuspec => { - return nuspec.OutputDirectory.CombineWithFilePath(string.Concat(nuspec.Id, ".", nuspec.Version, ".nupkg")); - }).ToArray(); - - BinFiles = NuspecNuGetSettings.SelectMany(nuspec => { - return nuspec.Files.Select(file => { - return ((DirectoryPath)nuspec.BasePath).CombineWithFilePath(file.Source); - }); - }).GroupBy(f => f.FullPath).Select(g => g.First()).ToArray(); - } -} diff --git a/packages/Avalonia/Avalonia.csproj b/packages/Avalonia/Avalonia.csproj new file mode 100644 index 0000000000..dee42fb795 --- /dev/null +++ b/packages/Avalonia/Avalonia.csproj @@ -0,0 +1,41 @@ + + + netstandard2.0;net461;netcoreapp2.0 + + + + + + + + ../../src/tools + + + + + + + <_PackageFiles Include="$(DesignerHostAppPath)/Avalonia.Designer.HostApp/bin/$(Configuration)/netcoreapp2.0/Avalonia.Designer.HostApp.dll"> + tools/netcoreapp2.0/designer + false + None + + <_PackageFiles Include="$(DesignerHostAppPath)/Avalonia.Designer.HostApp/bin/$(Configuration)/net461/Avalonia.Designer.HostApp.exe"> + tools/net461/designer + false + None + + <_PackageFiles Include="Avalonia.props"> + build/Avalonia.props + false + None + + + + + + + + diff --git a/packages/Avalonia/Avalonia.props b/packages/Avalonia/Avalonia.props new file mode 100644 index 0000000000..8234dc4fde --- /dev/null +++ b/packages/Avalonia/Avalonia.props @@ -0,0 +1,6 @@ + + + $(MSBuildThisFileDirectory)\..\tools\netcoreapp2.0\designer\Avalonia.Designer.HostApp.dll + $(MSBuildThisFileDirectory)\..\tools\net461\designer\Avalonia.Designer.HostApp.exe + + diff --git a/parameters.cake b/parameters.cake index 814c96da45..4ef7e8e05a 100644 --- a/parameters.cake +++ b/parameters.cake @@ -9,23 +9,28 @@ public class Parameters public string MasterBranch { get; private set; } public string ReleasePlatform { get; private set; } public string ReleaseConfiguration { get; private set; } + public string ReleaseBranchPrefix { get; private set; } public string MSBuildSolution { get; private set; } public bool IsLocalBuild { get; private set; } public bool IsRunningOnUnix { get; private set; } public bool IsRunningOnWindows { get; private set; } public bool IsRunningOnAppVeyor { get; private set; } + public bool IsRunningOnAzure { get; private set; } public bool IsPullRequest { get; private set; } public bool IsMainRepo { get; private set; } public bool IsMasterBranch { get; private set; } + public bool IsReleaseBranch { get; private set; } public bool IsTagged { get; private set; } public bool IsReleasable { get; private set; } public bool IsMyGetRelease { get; private set; } public bool IsNuGetRelease { get; private set; } + public bool PublishTestResults { get; private set; } public string Version { get; private set; } public DirectoryPath ArtifactsDir { get; private set; } public DirectoryPath NugetRoot { get; private set; } public DirectoryPath ZipRoot { get; private set; } public DirectoryPath BinRoot { get; private set; } + public DirectoryPath TestResultsRoot { get; private set; } public string DirSuffix { get; private set; } public DirectoryPathCollection BuildDirs { get; private set; } public string FileZipSuffix { get; private set; } @@ -43,8 +48,9 @@ public class Parameters SkipTests = context.HasArgument("skip-tests"); // CONFIGURATION - MainRepo = "AvaloniaUI/Avalonia"; + MainRepo = "https://github.com/AvaloniaUI/Avalonia"; MasterBranch = "master"; + ReleaseBranchPrefix = "refs/heads/release/"; ReleaseConfiguration = "Release"; MSBuildSolution = "./dirs.proj"; @@ -53,13 +59,17 @@ public class Parameters IsRunningOnUnix = context.IsRunningOnUnix(); IsRunningOnWindows = context.IsRunningOnWindows(); IsRunningOnAppVeyor = buildSystem.AppVeyor.IsRunningOnAppVeyor; + IsRunningOnAzure = buildSystem.IsRunningOnVSTS || buildSystem.IsRunningOnTFS || context.EnvironmentVariable("LOGNAME") == "vsts"; + IsPullRequest = buildSystem.AppVeyor.Environment.PullRequest.IsPullRequest; - IsMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, buildSystem.AppVeyor.Environment.Repository.Name); - IsMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, buildSystem.AppVeyor.Environment.Repository.Branch); + IsMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, context.EnvironmentVariable("BUILD_REPOSITORY_URI")); + IsMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, context.EnvironmentVariable("BUILD_SOURCEBRANCHNAME")); + IsReleaseBranch = (context.EnvironmentVariable("BUILD_SOURCEBRANCH")??"").StartsWith(ReleaseBranchPrefix, StringComparison.OrdinalIgnoreCase); IsTagged = buildSystem.AppVeyor.Environment.Repository.Tag.IsTag && !string.IsNullOrWhiteSpace(buildSystem.AppVeyor.Environment.Repository.Tag.Name); IsReleasable = StringComparer.OrdinalIgnoreCase.Equals(ReleaseConfiguration, Configuration); IsMyGetRelease = !IsTagged && IsReleasable; + IsNuGetRelease = IsMainRepo && IsReleasable && IsReleaseBranch; // VERSION Version = context.Argument("force-nuget-version", GetVersion()); @@ -85,12 +95,23 @@ public class Parameters Version += "-build" + context.EnvironmentVariable("APPVEYOR_BUILD_NUMBER") + "-beta"; } } + else if (IsRunningOnAzure) + { + if(!IsNuGetRelease) + { + // Use AssemblyVersion with Build as version + Version += "-build" + context.EnvironmentVariable("BUILD_BUILDID") + "-beta"; + } + + PublishTestResults = true; + } // DIRECTORIES ArtifactsDir = (DirectoryPath)context.Directory("./artifacts"); NugetRoot = ArtifactsDir.Combine("nuget"); ZipRoot = ArtifactsDir.Combine("zip"); BinRoot = ArtifactsDir.Combine("bin"); + TestResultsRoot = ArtifactsDir.Combine("test-results"); BuildDirs = context.GetDirectories("**/bin") + context.GetDirectories("**/obj"); DirSuffix = Configuration; FileZipSuffix = Version + ".zip"; diff --git a/readme.md b/readme.md index f345cbd9df..9d113cf2ef 100644 --- a/readme.md +++ b/readme.md @@ -2,9 +2,9 @@ # Avalonia -| Gitter Chat | Windows Build Status | Linux/Mac Build Status | Open Collective | +| Gitter Chat | Build Status (Win, Linux, OSX) | Appveyor Build Status | Open Collective | |---|---|---|---| -| [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/AvaloniaUI/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) | [![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/AvaloniaUI/Avalonia/branch/master) | [![Build Status](https://travis-ci.org/AvaloniaUI/Avalonia.svg?branch=master)](https://travis-ci.org/AvaloniaUI/Avalonia) | [![Backers on Open Collective](https://opencollective.com/Avalonia/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/Avalonia/sponsors/badge.svg)](#sponsors) | +| [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/AvaloniaUI/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) | [![Build Status](https://dev.azure.com/AvaloniaUI/AvaloniaUI/_apis/build/status/AvaloniaUI.Avalonia)](https://dev.azure.com/AvaloniaUI/AvaloniaUI/_build/latest?definitionId=4) | [![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/AvaloniaUI/Avalonia/branch/master) | [![Backers on Open Collective](https://opencollective.com/Avalonia/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/Avalonia/sponsors/badge.svg)](#sponsors) | ## About diff --git a/samples/BindingDemo/App.config b/samples/BindingDemo/App.config deleted file mode 100644 index 538be69997..0000000000 --- a/samples/BindingDemo/App.config +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/BindingDemo/BindingDemo.csproj b/samples/BindingDemo/BindingDemo.csproj index f7568b9c51..b28ab5fd8a 100644 --- a/samples/BindingDemo/BindingDemo.csproj +++ b/samples/BindingDemo/BindingDemo.csproj @@ -4,27 +4,8 @@ netcoreapp2.0;net461 - - - - - - - - - - - - - - - - - - - @@ -32,4 +13,5 @@ + diff --git a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj index 86030bf200..272632e7eb 100644 --- a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj +++ b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj @@ -155,4 +155,5 @@ + diff --git a/samples/ControlCatalog.Desktop/App.config b/samples/ControlCatalog.Desktop/App.config deleted file mode 100644 index cd4593817b..0000000000 --- a/samples/ControlCatalog.Desktop/App.config +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj b/samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj index d60d087393..054de2a05f 100644 --- a/samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj +++ b/samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj @@ -6,16 +6,9 @@ - - - - - - - diff --git a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj index 8410a197ab..0c47c6728e 100644 --- a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj +++ b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj @@ -11,6 +11,10 @@ + - \ No newline at end of file + + + + diff --git a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj index 6754cdf9a9..7596e4cfe2 100644 --- a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj +++ b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj @@ -176,4 +176,5 @@ + diff --git a/samples/ControlCatalog/App.config b/samples/ControlCatalog/App.config deleted file mode 100644 index 0c47592f2c..0000000000 --- a/samples/ControlCatalog/App.config +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/ControlCatalog/App.xaml b/samples/ControlCatalog/App.xaml index 95d515ec60..19a22bb6ed 100644 --- a/samples/ControlCatalog/App.xaml +++ b/samples/ControlCatalog/App.xaml @@ -2,23 +2,16 @@ - - - - - - + + diff --git a/samples/ControlCatalog/ControlCatalog.csproj b/samples/ControlCatalog/ControlCatalog.csproj index 61f2443eb7..d0a746f87d 100644 --- a/samples/ControlCatalog/ControlCatalog.csproj +++ b/samples/ControlCatalog/ControlCatalog.csproj @@ -19,19 +19,8 @@ - - - - - - - - - + - - - diff --git a/samples/ControlCatalog/Pages/ButtonPage.xaml b/samples/ControlCatalog/Pages/ButtonPage.xaml index 38757148ab..a4690e32e1 100644 --- a/samples/ControlCatalog/Pages/ButtonPage.xaml +++ b/samples/ControlCatalog/Pages/ButtonPage.xaml @@ -18,7 +18,7 @@ diff --git a/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml b/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml index b428cd1b9f..f7e1c08cac 100644 --- a/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml +++ b/samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml @@ -19,7 +19,7 @@ - Layout Transform + diff --git a/samples/Directory.Build.props b/samples/Directory.Build.props index 7325bab2a3..b9075b957b 100644 --- a/samples/Directory.Build.props +++ b/samples/Directory.Build.props @@ -1,3 +1,6 @@ + + false + - \ No newline at end of file + diff --git a/samples/Previewer/Previewer.csproj b/samples/Previewer/Previewer.csproj index b4dda473f2..2cdde0c945 100644 --- a/samples/Previewer/Previewer.csproj +++ b/samples/Previewer/Previewer.csproj @@ -8,19 +8,9 @@ %(Filename) - - - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/samples/RemoteDemo/RemoteDemo.csproj b/samples/RemoteDemo/RemoteDemo.csproj index 2487c66e41..046999e06e 100644 --- a/samples/RemoteDemo/RemoteDemo.csproj +++ b/samples/RemoteDemo/RemoteDemo.csproj @@ -6,20 +6,9 @@ - - - - - - - - - - - - - + + diff --git a/samples/RenderDemo/MainWindow.xaml b/samples/RenderDemo/MainWindow.xaml index df2b221423..fc5b1ce94d 100644 --- a/samples/RenderDemo/MainWindow.xaml +++ b/samples/RenderDemo/MainWindow.xaml @@ -8,12 +8,13 @@ - - + - - - - + + + + + + + + + \ No newline at end of file diff --git a/samples/RenderDemo/Pages/AnimationsPage.xaml b/samples/RenderDemo/Pages/AnimationsPage.xaml index 473807ac50..1646708797 100644 --- a/samples/RenderDemo/Pages/AnimationsPage.xaml +++ b/samples/RenderDemo/Pages/AnimationsPage.xaml @@ -1,12 +1,12 @@ - +