Browse Source

Add support to Mono Addin for Mono 4.0 using dcms compiler to support .NET 4.0

pull/44/head
Doug Kasten 12 years ago
parent
commit
25062cc7ca
  1. 2
      samples/Mono/Mono.AddIn.sln
  2. 2
      samples/Mono/Mono.AddIn/Configuration/AssemblyInfo.cs
  3. 1
      samples/Mono/Mono.AddIn/Mono.addin
  4. 4
      samples/Mono/Mono.AddIn/Templates/CSharp.Console.Project.xpt
  5. 2
      samples/Mono/Mono.AddIn/Templates/CSharpGladeProject.xpt
  6. 2
      samples/Mono/Mono.AddIn/Templates/CSharpGtkProject.xpt
  7. 1
      samples/Mono/Mono.AddIn/Templates/DefaultApp.config
  8. 2
      samples/Mono/Mono.AddIn/Templates/VBNet.Console.Project.xpt
  9. 2
      samples/Mono/Mono.AddIn/Templates/VBNetGtkProject.xpt
  10. 5
      samples/Mono/Mono.Build.Tasks.Tests/Mono.Build.Tasks.Tests.csproj
  11. 46
      samples/Mono/Mono.Build.Tasks/Dmcs.cs
  12. 14
      samples/Mono/Mono.Build.Tasks/GetMonoFrameworkPath.cs
  13. 1
      samples/Mono/Mono.Build.Tasks/Mono.Build.CSharp.targets
  14. 11
      samples/Mono/Mono.Build.Tasks/Mono.Build.Tasks.csproj
  15. 11
      samples/Mono/Mono.Build.Tasks/MonoToolLocationHelper.cs
  16. 113
      samples/Mono/Mono.Build.Tasks/SharpDevelop.Build.Mono.Dmcs.targets
  17. 3
      samples/Mono/Mono.Build.Tasks/TargetMonoFrameworkVersion.cs

2
samples/Mono/Mono.AddIn.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.5571
# SharpDevelop 4.3
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.AddIn", "Mono.AddIn\Mono.AddIn.csproj", "{082DCD64-EE32-4151-A50F-E139CF754CC0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Build.Tasks", "Mono.Build.Tasks\Mono.Build.Tasks.csproj", "{BF6F814C-B89F-475E-ADC4-AEE81D10CB94}"

2
samples/Mono/Mono.AddIn/Configuration/AssemblyInfo.cs

@ -29,4 +29,4 @@ using System.Reflection; @@ -29,4 +29,4 @@ using System.Reflection;
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.*")]

1
samples/Mono/Mono.AddIn/Mono.addin

@ -52,6 +52,7 @@ @@ -52,6 +52,7 @@
<Or>
<Condition name="CompareProjectProperty" property="MonoTargetFrameworkVersion" equals="v1.1"/>
<Condition name="CompareProjectProperty" property="MonoTargetFrameworkVersion" equals="v2.0"/>
<Condition name="CompareProjectProperty" property="MonoTargetFrameworkVersion" equals="v4.0"/>
</Or>
<Or>
<Condition name="ProjectActive" activeproject="C#"/>

4
samples/Mono/Mono.AddIn/Templates/CSharp.Console.Project.xpt

@ -19,13 +19,15 @@ @@ -19,13 +19,15 @@
<Project language = "C#">
<PropertyGroup>
<OutputType>Exe</OutputType>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
<MonoTargetFrameworkVersion>v4.0</MonoTargetFrameworkVersion>
</PropertyGroup>
<ProjectItems>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ProjectItems>
<Imports clear="True">
<Import Project="$(MonoBuildTasksPath)\Mono.Build.CSharp.targets" />
</Imports>

2
samples/Mono/Mono.AddIn/Templates/CSharpGladeProject.xpt

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<Project language = "C#">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
<MonoTargetFrameworkVersion>v4.0</MonoTargetFrameworkVersion>
</PropertyGroup>
<Imports clear="True">

2
samples/Mono/Mono.AddIn/Templates/CSharpGtkProject.xpt

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<Project language = "C#">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
<MonoTargetFrameworkVersion>v4.0</MonoTargetFrameworkVersion>
</PropertyGroup>
<Imports clear="True">

1
samples/Mono/Mono.AddIn/Templates/DefaultApp.config

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System" publicKeyToken="b77a5c561934e089" culture="neutral"/>
<bindingRedirect oldVersion="1.0.5000.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

2
samples/Mono/Mono.AddIn/Templates/VBNet.Console.Project.xpt

@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
<Project language = "VBNet">
<PropertyGroup>
<OutputType>Exe</OutputType>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
<MonoTargetFrameworkVersion>v4.0</MonoTargetFrameworkVersion>
</PropertyGroup>
<ProjectItems>

2
samples/Mono/Mono.AddIn/Templates/VBNetGtkProject.xpt

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<Project language="VBNet">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
<MonoTargetFrameworkVersion>v4.0</MonoTargetFrameworkVersion>
<StartupObject>${StandardNamespace}.MainWindow</StartupObject>
</PropertyGroup>

5
samples/Mono/Mono.Build.Tasks.Tests/Mono.Build.Tasks.Tests.csproj

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.Build.Tasks.Tests</RootNamespace>
@ -17,7 +17,8 @@ @@ -17,7 +17,8 @@
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<OutputPath>bin\UnitTests</OutputPath>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<Optimize>False</Optimize>

46
samples/Mono/Mono.Build.Tasks/Dmcs.cs

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
// SharpDevelop samples
// Copyright (c) 2006, AlphaSierraPapa
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this list
// of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// - Neither the name of the SharpDevelop team nor the names of its contributors may be used to
// endorse or promote products derived from this software without specific prior written
// permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &AS IS& AND ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
namespace Mono.Build.Tasks
{
/// <summary>
/// MSBuild task for Mono's DMCS.
/// </summary>
public class Dmcs : MonoCSharpCompilerTask
{
protected override string ToolName {
get { return "Dmcs.exe"; }
}
protected override string GenerateFullPathToTool()
{
return MonoToolLocationHelper.GetPathToTool(ToolName);
}
}
}

14
samples/Mono/Mono.Build.Tasks/GetMonoFrameworkPath.cs

@ -38,6 +38,7 @@ namespace Mono.Build.Tasks @@ -38,6 +38,7 @@ namespace Mono.Build.Tasks
{
public const string TargetMonoFrameworkVersion11 = "v1.1";
public const string TargetMonoFrameworkVersion20 = "v2.0";
public const string TargetMonoFrameworkVersion40 = "v4.0";
string path = String.Empty;
TargetMonoFrameworkVersion targetFrameworkVersion = TargetMonoFrameworkVersion.VersionLatest;
@ -76,16 +77,21 @@ namespace Mono.Build.Tasks @@ -76,16 +77,21 @@ namespace Mono.Build.Tasks
return TargetMonoFrameworkVersion11;
case TargetMonoFrameworkVersion.Version20:
return TargetMonoFrameworkVersion20;
case TargetMonoFrameworkVersion.Version40:
return TargetMonoFrameworkVersion40;
}
return null;
}
static TargetMonoFrameworkVersion ConvertToEnum(string frameworkVersion)
{
if (frameworkVersion == TargetMonoFrameworkVersion11) {
return TargetMonoFrameworkVersion.Version11;
} else if (frameworkVersion == TargetMonoFrameworkVersion20) {
return TargetMonoFrameworkVersion.Version20;
switch (frameworkVersion) {
case TargetMonoFrameworkVersion11:
return TargetMonoFrameworkVersion.Version11;
case TargetMonoFrameworkVersion20:
return TargetMonoFrameworkVersion.Version20;
case TargetMonoFrameworkVersion40:
return TargetMonoFrameworkVersion.Version40;
}
throw new ArgumentException("Unknown Mono target framework version: " + frameworkVersion);
}

1
samples/Mono/Mono.Build.Tasks/Mono.Build.CSharp.targets

@ -78,4 +78,5 @@ @@ -78,4 +78,5 @@
<!-- Mono imports -->
<Import Condition=" '$(MonoTargetFrameworkVersion)' == 'v1.1' " Project="$(MonoBuildTasksPath)\SharpDevelop.Build.Mono.Mcs.targets"/>
<Import Condition=" '$(MonoTargetFrameworkVersion)' == 'v2.0' " Project="$(MonoBuildTasksPath)\SharpDevelop.Build.Mono.Gmcs.targets"/>
<Import Condition=" '$(MonoTargetFrameworkVersion)' == 'v4.0' " Project="$(MonoBuildTasksPath)\SharpDevelop.Build.Mono.Dmcs.targets"/>
</Project>

11
samples/Mono/Mono.Build.Tasks/Mono.Build.Tasks.csproj

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{BF6F814C-B89F-475E-ADC4-AEE81D10CB94}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
<OutputType>Library</OutputType>
<RootNamespace>Mono.Build.Tasks</RootNamespace>
<AssemblyName>Mono.Build.Tasks</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
@ -41,6 +42,7 @@ @@ -41,6 +42,7 @@
<Compile Include="AddMonoAssemblySearchPaths.cs" />
<Compile Include="AssemblyInfo.cs" />
<Compile Include="CompilerCommandLineArguments.cs" />
<Compile Include="Dmcs.cs" />
<Compile Include="GetMonoFrameworkPath.cs" />
<Compile Include="GetMonoFrameworkSdkPath.cs" />
<Compile Include="Gmcs.cs" />
@ -61,6 +63,9 @@ @@ -61,6 +63,9 @@
<None Include="Mono.Build.VBNet.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SharpDevelop.Build.Mono.Dmcs.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="SharpDevelop.Build.Mono.Gmcs.targets">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

11
samples/Mono/Mono.Build.Tasks/MonoToolLocationHelper.cs

@ -45,6 +45,7 @@ namespace Mono.Build.Tasks @@ -45,6 +45,7 @@ namespace Mono.Build.Tasks
static string monoFrameworkAssemblyPath = null;
static string monoFrameworkVersion11Path = null;
static string monoFrameworkVersion20Path = null;
static string monoFrameworkVersion40Path = null;
static bool monoInstalled;
static bool checkedForMonoInstallation;
@ -127,6 +128,8 @@ namespace Mono.Build.Tasks @@ -127,6 +128,8 @@ namespace Mono.Build.Tasks
return GetPathToMonoFrameworkVersion11();
case TargetMonoFrameworkVersion.Version20:
return GetPathToMonoFrameworkVersion20();
case TargetMonoFrameworkVersion.Version40:
return GetPathToMonoFrameworkVersion40();
}
return null;
}
@ -177,6 +180,14 @@ namespace Mono.Build.Tasks @@ -177,6 +180,14 @@ namespace Mono.Build.Tasks
return monoFrameworkVersion20Path;
}
static string GetPathToMonoFrameworkVersion40()
{
if (monoFrameworkVersion40Path == null) {
monoFrameworkVersion40Path = GetPathToMonoFramework(@"mono\4.0");
}
return monoFrameworkVersion40Path;
}
static string GetPathToMonoFramework(string subFolder)
{
string monoFrameworkBaseFolder = GetBasePathToMonoFramework();

113
samples/Mono/Mono.Build.Tasks/SharpDevelop.Build.Mono.Dmcs.targets

@ -0,0 +1,113 @@ @@ -0,0 +1,113 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<UsingTask TaskName="Mono.Build.Tasks.Dmcs"
AssemblyFile="$(MonoBuildTasksPath)\Mono.Build.Tasks.dll"/>
<UsingTask TaskName="Mono.Build.Tasks.GetMonoFrameworkPath"
AssemblyFile="$(MonoBuildTasksPath)\Mono.Build.Tasks.dll"/>
<UsingTask TaskName="Mono.Build.Tasks.GetMonoFrameworkSdkPath"
AssemblyFile="$(MonoBuildTasksPath)\Mono.Build.Tasks.dll"/>
<UsingTask TaskName="Mono.Build.Tasks.AddMonoAssemblySearchPaths"
AssemblyFile="$(MonoBuildTasksPath)\Mono.Build.Tasks.dll"/>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MonoBuildTasksPath)\SharpDevelop.Build.Mono.Dmcs.targets</MSBuildAllProjects>
<DefaultLanguageSourceExtension>.cs</DefaultLanguageSourceExtension>
<Language>C#</Language>
</PropertyGroup>
<!-- Override AssemblySearchPaths property and remove Microsoft specific search paths -->
<PropertyGroup>
<AssemblySearchPaths>
{CandidateAssemblyFiles};
$(ReferencePath);
{HintPathFromItem};
{TargetFrameworkDirectory};
{MonoGAC};
{RawFileName};
$(OutputPath)
</AssemblySearchPaths>
</PropertyGroup>
<Target Name="GetFrameworkPaths">
<!-- Get the path to the target Mono Framework directory. -->
<GetMonoFrameworkPath TargetFrameworkVersion="$(MonoTargetFrameworkVersion)">
<Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
<Output TaskParameter="Path" ItemName="_TargetFrameworkDirectoryItem"/>
</GetMonoFrameworkPath>
<!-- Get the path to the target the Mono SDK directory. -->
<GetMonoFrameworkSDKPath>
<Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
<Output TaskParameter="Path" ItemName="_TargetFrameworkSDKDirectoryItem"/>
</GetMonoFrameworkSDKPath>
</Target>
<!-- Modify what the ResolveAssemblyReferences tasks depends on so the
AssemblySearchPaths can be modified to use the Mono GAC -->
<PropertyGroup>
<ResolveAssemblyReferencesDependsOn>
GetFrameworkPaths;
GetReferenceAssemblyPaths;
PrepareForBuild;
AddMonoAssemblySearchPaths
</ResolveAssemblyReferencesDependsOn>
</PropertyGroup>
<Target Name="AddMonoAssemblySearchPaths">
<AddMonoAssemblySearchPaths
Assemblies="@(Reference)"
Paths="$(AssemblySearchPaths)">
<Output TaskParameter="Paths" PropertyName="AssemblySearchPaths"/>
</AddMonoAssemblySearchPaths>
</Target>
<Target
Name="CoreCompile"
Inputs="$(MSBuildAllProjects);
@(Compile);
@(ManifestResourceWithNoCulture);
$(ApplicationIcon);
$(AssemblyOriginatorKeyFile);
@(ManifestNonResxWithNoCultureOnDisk);
@(ReferencePath);
@(CompiledLicenseFile)"
Outputs="@(DocFileItem);
@(IntermediateAssembly);
$(NonExistentFile)"
DependsOnTargets="$(CoreCompileDependsOn)"
>
<Dmcs
AdditionalLibPaths="$(AdditionalLibPaths)"
AddModules="@(AddModules)"
AllowUnsafeBlocks="$(AllowUnsafeBlocks)"
CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)"
CodePage="$(CodePage)"
DebugType="$(DebugType)"
DefineConstants="$(DefineConstants)"
DelaySign="$(DelaySign)"
DisabledWarnings="$(NoWarn)"
DocumentationFile="@(DocFileItem)"
EmitDebugInformation="$(DebugSymbols)"
KeyContainer="$(KeyContainerName)"
KeyFile="$(KeyOriginatorFile)"
LangVersion="$(LangVersion)"
MainEntryPoint="$(StartupObject)"
NoConfig="true"
NoLogo="$(NoLogo)"
NoStandardLib="$(NoStdLib)"
Optimize="$(Optimize)"
OutputAssembly="@(IntermediateAssembly)"
References="@(ReferencePath)"
Resources="@(ManifestResourceWithNoCulture);@(ManifestNonResxWithNoCultureOnDisk);@(CompiledLicenseFile)"
ResponseFiles="$(CompilerResponseFile)"
Sources="@(Compile)"
TargetType="$(OutputType)"
ToolPath="$(GmcsToolPath)"
TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
WarningLevel="$(WarningLevel)"
Win32Icon="$(ApplicationIcon)"
Win32Resource="$(Win32Resource)" />
</Target>
</Project>

3
samples/Mono/Mono.Build.Tasks/TargetMonoFrameworkVersion.cs

@ -33,6 +33,7 @@ namespace Mono.Build.Tasks @@ -33,6 +33,7 @@ namespace Mono.Build.Tasks
{
Version11 = 0,
Version20 = 1,
VersionLatest = 1
Version40 = 2,
VersionLatest = 2
}
}

Loading…
Cancel
Save