Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
authorLevi Bard <levibard@mono-cvs.ximian.com>2009-03-10 20:46:36 +0300
committerLevi Bard <levibard@mono-cvs.ximian.com>2009-03-10 20:46:36 +0300
commitdddb50871a8d08f6140403ba0c74c5c848b8de4b (patch)
treedd40c0786811fd5ec2b65627392d0f14f8a93342 /extras
parentcd7166f8b994f1cfd3cf7b705400ba6a4a597b36 (diff)
Implement basic Makefile generation.
svn path=/trunk/monodevelop/; revision=128997
Diffstat (limited to 'extras')
-rw-r--r--extras/ValaBinding/ChangeLog4
-rw-r--r--extras/ValaBinding/Compiler/ValaCompiler.cs13
-rw-r--r--extras/ValaBinding/Makefile.am3
-rw-r--r--extras/ValaBinding/Project/MakefileHandler.cs77
-rw-r--r--extras/ValaBinding/Project/ValaProject.cs2
-rw-r--r--extras/ValaBinding/ValaBinding.addin.xml5
-rw-r--r--extras/ValaBinding/ValaBinding.csproj74
-rw-r--r--extras/ValaBinding/ValaBinding.sln1
-rw-r--r--extras/ValaBinding/configure.in2
-rw-r--r--extras/ValaBinding/templates/Makefile.am.template23
-rw-r--r--extras/ValaBinding/templates/Makefile.template26
11 files changed, 192 insertions, 38 deletions
diff --git a/extras/ValaBinding/ChangeLog b/extras/ValaBinding/ChangeLog
index e79d9336bb..815768cebb 100644
--- a/extras/ValaBinding/ChangeLog
+++ b/extras/ValaBinding/ChangeLog
@@ -1,3 +1,7 @@
+2009-03-10 Levi Bard <taktaktaktaktaktaktaktaktaktak@gmail.com>
+
+ * *: Implement basic Makefile generation.
+
2009-03-04 Lluis Sanchez Gual <lluis@novell.com>
* Project/ValaProject.cs: Changed the way execution handlers
diff --git a/extras/ValaBinding/Compiler/ValaCompiler.cs b/extras/ValaBinding/Compiler/ValaCompiler.cs
index 0da875d773..47aace897b 100644
--- a/extras/ValaBinding/Compiler/ValaCompiler.cs
+++ b/extras/ValaBinding/Compiler/ValaCompiler.cs
@@ -82,7 +82,7 @@ namespace MonoDevelop.ValaBinding
/// The string needed by the compiler to reference the necessary packages
/// <see cref="System.String"/>
/// </returns>
- protected string GeneratePkgCompilerArgs (ProjectPackageCollection packages)
+ public static string GeneratePkgCompilerArgs (ProjectPackageCollection packages)
{
if (packages == null || packages.Count < 1)
return string.Empty;
@@ -165,6 +165,11 @@ namespace MonoDevelop.ValaBinding
return new BuildResult (cr, "");
}
+ string ICompiler.GetCompilerFlags (ValaProjectConfiguration configuration)
+ {
+ return ValaCompiler.GetCompilerFlags (configuration);
+ }
+
/// <summary>
/// Generates compiler args for the current settings
/// </summary>
@@ -176,7 +181,7 @@ namespace MonoDevelop.ValaBinding
/// A compiler-interpretable string
/// <see cref="System.String"/>
/// </returns>
- public string GetCompilerFlags (ValaProjectConfiguration configuration)
+ public static string GetCompilerFlags (ValaProjectConfiguration configuration)
{
List<string> args = new List<string> ();
@@ -350,7 +355,7 @@ namespace MonoDevelop.ValaBinding
/// <returns>
/// A <see cref="System.String"/>
/// </returns>
- private string ProcessDefineSymbols (string symbols)
+ private static string ProcessDefineSymbols (string symbols)
{
return string.Empty; // No -D in valac for now :-(
// return ((null == symbols) || (0 == symbols.Length))?
@@ -588,7 +593,7 @@ namespace MonoDevelop.ValaBinding
/// </returns>
// TODO: Portability, although otoh, probably someone who doesn't have sh
// isn't going to put backticks in the compiler flags
- public string ExpandBacktickedParameters (string tmp)
+ public static string ExpandBacktickedParameters (string tmp)
{
string parameters = "-c \"echo -n " + tmp + "\"";
Process p = new Process ();
diff --git a/extras/ValaBinding/Makefile.am b/extras/ValaBinding/Makefile.am
index 953cadc217..45d9a3af7c 100644
--- a/extras/ValaBinding/Makefile.am
+++ b/extras/ValaBinding/Makefile.am
@@ -42,6 +42,7 @@ FILES = \
Parser/Function.cs \
Parser/ProjectInformation.cs \
Parser/ProjectInformationManager.cs \
+ Project/MakefileHandler.cs \
Project/ProjectPackage.cs \
Project/ProjectPackageCollection.cs \
Project/ProjectPackageEventArgs.cs \
@@ -73,6 +74,8 @@ RES = \
templates/EmptyValaSourceFile.xft.xml \
templates/SharedLibraryValaProject.xpt.xml \
templates/ValaTestFixture.xpt.xml \
+ templates/Makefile.am.template \
+ templates/Makefile.template \
ValaBinding.addin.xml
all: $(ASSEMBLY)
diff --git a/extras/ValaBinding/Project/MakefileHandler.cs b/extras/ValaBinding/Project/MakefileHandler.cs
new file mode 100644
index 0000000000..8b6e039281
--- /dev/null
+++ b/extras/ValaBinding/Project/MakefileHandler.cs
@@ -0,0 +1,77 @@
+using System;
+using System.IO;
+using System.Text;
+
+using MonoDevelop.Core;
+using MonoDevelop.Autotools;
+using MonoDevelop.Projects;
+using MonoDevelop.Deployment;
+
+namespace MonoDevelop.ValaBinding
+{
+ /// <summary>
+ /// Handler for makefile generation
+ /// </summary>
+ public class MakefileHandler: IMakefileHandler
+ {
+
+ #region IMakefileHandler implementation
+ public bool CanDeploy (MonoDevelop.Projects.SolutionItem entry, MakefileType type)
+ {
+ return entry is ValaProject;
+ }
+
+ /// <summary>
+ /// Deploys a makefile to build the default configuration.
+ /// </summary>
+ /// <remarks>
+ /// TODO: Make configuration-based targets as advertised.
+ /// </remarks>
+ public Makefile Deploy (AutotoolsContext ctx, MonoDevelop.Projects.SolutionItem entry, MonoDevelop.Core.IProgressMonitor monitor)
+ {
+ Makefile mkfile = new Makefile ();
+ ValaProject project = (ValaProject) entry;
+ ValaProjectConfiguration conf = (ValaProjectConfiguration)project.DefaultConfiguration;
+
+ StringBuilder files = new StringBuilder ();
+ foreach (ProjectFile t in project.Files) {
+ if(BuildAction.Compile == t.BuildAction) {
+ files.Append ("\\\n\t" + FileService.AbsoluteToRelativePath(project.BaseDirectory, t.FilePath));
+ }
+ }
+
+ string dir = ctx.DeployContext.GetResolvedPath (TargetDirectory.ProgramFiles, FileService.AbsoluteToRelativePath(conf.OutputDirectory, ctx.TargetSolution.BaseDirectory));
+ dir = dir.Replace ("@prefix@", "$(prefix)");
+ dir = dir.Replace ("@PACKAGE@", "$(PACKAGE)");
+
+ TemplateEngine templateEngine = new TemplateEngine ();
+ templateEngine.Variables ["TOP_SRCDIR"] = FileService.AbsoluteToRelativePath (project.BaseDirectory, ctx.TargetSolution.BaseDirectory);
+ templateEngine.Variables ["FILES"] = files.ToString ();
+ templateEngine.Variables ["BUILD_DIR"] = ".";
+ templateEngine.Variables ["INSTALL_DIR"] = "$(DESTDIR)" + dir;
+ templateEngine.Variables ["ALL_TARGET"] = string.Format("all-{0}", conf.Name);
+ templateEngine.Variables ["VFLAGS"] = string.Format("{0} {1}", ValaCompiler.GetCompilerFlags(conf), ValaCompiler.GeneratePkgCompilerArgs(project.Packages));
+ templateEngine.Variables ["VTARGET"] = conf.CompiledOutputName;
+
+ StringWriter sw = new StringWriter ();
+
+ string mt;
+ if (ctx.MakefileType == MakefileType.AutotoolsMakefile)
+ mt = "Makefile.am.template";
+ else
+ mt = "Makefile.template";
+
+ using (Stream stream = GetType().Assembly.GetManifestResourceStream (mt)) {
+ StreamReader reader = new StreamReader (stream);
+
+ templateEngine.Process (reader, sw);
+ reader.Close ();
+ }
+
+ mkfile.Append (sw.ToString ());
+
+ return mkfile;
+ }
+ #endregion
+ }
+}
diff --git a/extras/ValaBinding/Project/ValaProject.cs b/extras/ValaBinding/Project/ValaProject.cs
index 320a7d8eb6..e8c0f71ca3 100644
--- a/extras/ValaBinding/Project/ValaProject.cs
+++ b/extras/ValaBinding/Project/ValaProject.cs
@@ -284,7 +284,7 @@ namespace MonoDevelop.ValaBinding
protected override bool OnGetCanExecute (MonoDevelop.Projects.ExecutionContext context, string solutionConfiguration)
{
ValaProjectConfiguration conf = (ValaProjectConfiguration)GetConfiguration(solutionConfiguration);
- return (conf.CompileTarget == ValaBinding.CompileTarget.Bin) &&
+ return (null != conf && conf.CompileTarget == ValaBinding.CompileTarget.Bin) &&
context.ExecutionHandler.CanExecute (Path.Combine (conf.OutputDirectory, conf.Output));
}
diff --git a/extras/ValaBinding/ValaBinding.addin.xml b/extras/ValaBinding/ValaBinding.addin.xml
index 491a0e37ef..b820553efe 100644
--- a/extras/ValaBinding/ValaBinding.addin.xml
+++ b/extras/ValaBinding/ValaBinding.addin.xml
@@ -17,6 +17,7 @@
<Addin id = "Components" version = "1.9.2"/>
<Addin id = "Deployment" version = "1.9.2"/>
<Addin id = "Deployment.Linux" version = "1.9.2"/>
+ <Addin id = "Autotools" version = "1.9.2"/>
</Dependencies>
<Extension path = "/MonoDevelop/Core/StockIcons">
@@ -150,4 +151,8 @@
<DataType class = "MonoDevelop.ValaBinding.ValaCompiler"/>
<DataType class = "MonoDevelop.ValaBinding.ProjectPackage"/>
</Extension>
+
+ <Extension path = "/MonoDevelop/Autotools/MakefileHandlers">
+ <Class class = "MonoDevelop.ValaBinding.MakefileHandler"/>
+ </Extension>
</Addin>
diff --git a/extras/ValaBinding/ValaBinding.csproj b/extras/ValaBinding/ValaBinding.csproj
index ee611644b7..a156ecbf0a 100644
--- a/extras/ValaBinding/ValaBinding.csproj
+++ b/extras/ValaBinding/ValaBinding.csproj
@@ -9,6 +9,7 @@
<OutputType>Library</OutputType>
<AssemblyName>MonoDevelop.ValaBinding</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <ApplicationIcon>.</ApplicationIcon>
<RootNamespace>MonoDevelop.ValaBinding</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -42,43 +43,13 @@
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="Mono.Posix" />
- <Reference Include="Mono.Addins, Version=0.4.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
- <SpecificVersion>False</SpecificVersion>
- </Reference>
- <Reference Include="MonoDevelop.Core, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="MonoDevelop.Projects, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="MonoDevelop.Core.Gui, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="MonoDevelop.Deployment, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop-core-addins</Package>
- </Reference>
<Reference Include="atk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="glib-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="pango-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <Reference Include="MonoDevelop.Ide, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="MonoDevelop.Components, Version=1.9.2.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="NRefactory, Version=0.0.0.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="Mono.Cecil, Version=0.6.8.8607, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="Mono.TextEditor, Version=1.0.0.0, Culture=neutral">
- <Package>monodevelop</Package>
- </Reference>
- <Reference Include="Mono.Debugging, Version=0.0.0.0, Culture=neutral">
- <Package>monodevelop</Package>
+ <Reference Include="Mono.Addins, Version=0.3.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756">
+ <Package>mono-addins</Package>
</Reference>
<Reference Include="MonoDevelop.VersionControl, Version=1.9.2.0, Culture=neutral">
<Package>monodevelop-core-addins</Package>
@@ -95,6 +66,9 @@
<Reference Include="MonoDevelop.Gettext, Version=1.9.2.0, Culture=neutral">
<Package>monodevelop-core-addins</Package>
</Reference>
+ <Reference Include="MonoDevelop.Deployment, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop-core-addins</Package>
+ </Reference>
<Reference Include="MonoDevelop.Deployment.Linux, Version=1.9.2.0, Culture=neutral">
<Package>monodevelop-core-addins</Package>
</Reference>
@@ -116,9 +90,36 @@
<Reference Include="MonoDevelop.Autotools, Version=1.9.2.0, Culture=neutral">
<Package>monodevelop-core-addins</Package>
</Reference>
+ <Reference Include="MonoDevelop.Core, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="MonoDevelop.Core.Gui, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="MonoDevelop.Projects, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
<Reference Include="MonoDevelop.Projects.Gui, Version=1.9.2.0, Culture=neutral">
<Package>monodevelop</Package>
</Reference>
+ <Reference Include="MonoDevelop.Ide, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="MonoDevelop.Components, Version=1.9.2.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="NRefactory, Version=0.0.0.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="Mono.Cecil, Version=0.6.8.8607, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="Mono.TextEditor, Version=1.0.0.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
+ <Reference Include="Mono.Debugging, Version=0.0.0.0, Culture=neutral">
+ <Package>monodevelop</Package>
+ </Reference>
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
@@ -175,6 +176,12 @@
<EmbeddedResource Include="templates\ValaTestFixture.xpt.xml">
<LogicalName>ValaTestFixture.xpt.xml</LogicalName>
</EmbeddedResource>
+ <EmbeddedResource Include="templates\Makefile.am.template">
+ <LogicalName>Makefile.am.template</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="templates\Makefile.template">
+ <LogicalName>Makefile.template</LogicalName>
+ </EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Include="Project\ValaCompilationParameters.cs" />
@@ -215,6 +222,7 @@
<Compile Include="ProjectPad\ProjectPackagesFolderNodeBuilder.cs" />
<Compile Include="ProjectPad\ProjectNodeExtension.cs" />
<Compile Include="AssemblyInfo.cs" />
+ <Compile Include="Project\MakefileHandler.cs" />
<Compile Include="Parser\CodeNode.cs" />
<Compile Include="Navigation\LanguageItemNodeBuilder.cs" />
<Compile Include="Navigation\ProjectNodeBuilderExtension.cs" />
@@ -237,4 +245,4 @@
</Properties>
</MonoDevelop>
</ProjectExtensions>
-</Project>
+</Project> \ No newline at end of file
diff --git a/extras/ValaBinding/ValaBinding.sln b/extras/ValaBinding/ValaBinding.sln
index f36d910f8a..ec9e0e4d5e 100644
--- a/extras/ValaBinding/ValaBinding.sln
+++ b/extras/ValaBinding/ValaBinding.sln
@@ -17,6 +17,7 @@ Global
GlobalSection(MonoDevelopProperties) = preSolution
version = 0.1
StartupItem = ValaBinding.csproj
+ name = ValaBinding
Policies = $0
$0.DotNetNamingPolicy = $1
$1.DirectoryNamespaceAssociation = Flat
diff --git a/extras/ValaBinding/configure.in b/extras/ValaBinding/configure.in
index f7159dcda4..369d0f872b 100644
--- a/extras/ValaBinding/configure.in
+++ b/extras/ValaBinding/configure.in
@@ -24,6 +24,8 @@ if test "x$PKG_CONFIG" = "xno"; then
AC_MSG_ERROR([You need to install pkg-config])
fi
+export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:../../local-config/"
+
MONO_REQUIRED_VERSION=1.1.10
PKG_CHECK_MODULES(UNMANAGED_DEPENDENCIES_MONO,mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
diff --git a/extras/ValaBinding/templates/Makefile.am.template b/extras/ValaBinding/templates/Makefile.am.template
new file mode 100644
index 0000000000..77af3a283d
--- /dev/null
+++ b/extras/ValaBinding/templates/Makefile.am.template
@@ -0,0 +1,23 @@
+
+# Warning: This is an automatically generated file, do not edit!
+
+VTARGET = %%VTARGET%%
+CLEANFILES = $(VTARGET)
+
+include $(top_srcdir)/Makefile.include
+
+PACKAGE = @PACKAGE@
+BUILD_DIR = %%BUILD_DIR%%
+INSTALL_DIR = %%INSTALL_DIR%%
+
+FILES = %%FILES%%
+VFLAGS = %%VFLAGS%%
+
+install:
+
+uninstall:
+
+all:
+ mkdir -p $(BUILD_DIR)
+ valac $(VFLAGS) -o $(VTARGET) $(FILES)
+
diff --git a/extras/ValaBinding/templates/Makefile.template b/extras/ValaBinding/templates/Makefile.template
new file mode 100644
index 0000000000..b8f2b25a37
--- /dev/null
+++ b/extras/ValaBinding/templates/Makefile.template
@@ -0,0 +1,26 @@
+
+# Warning: This is an automatically generated file, do not edit!
+
+srcdir=.
+top_srcdir=%%TOP_SRCDIR%%
+
+include $(top_srcdir)/Makefile.include
+include $(top_srcdir)/config.make
+
+BUILD_DIR = %%BUILD_DIR%%
+INSTALL_DIR = %%INSTALL_DIR%%
+
+FILES = %%FILES%%
+VFLAGS = %%VFLAGS%%
+VTARGET = %%VTARGET%%
+
+all: $(VTARGET)
+
+install:
+
+uninstall:
+
+$(VTARGET):
+ mkdir -p $(BUILD_DIR)
+ valac $(VFLAGS) -o $(VTARGET) $(FILES)
+