diff options
author | Levi Bard <levibard@mono-cvs.ximian.com> | 2009-03-10 20:46:36 +0300 |
---|---|---|
committer | Levi Bard <levibard@mono-cvs.ximian.com> | 2009-03-10 20:46:36 +0300 |
commit | dddb50871a8d08f6140403ba0c74c5c848b8de4b (patch) | |
tree | dd40c0786811fd5ec2b65627392d0f14f8a93342 | |
parent | cd7166f8b994f1cfd3cf7b705400ba6a4a597b36 (diff) |
Implement basic Makefile generation.
svn path=/trunk/monodevelop/; revision=128997
-rw-r--r-- | extras/ValaBinding/ChangeLog | 4 | ||||
-rw-r--r-- | extras/ValaBinding/Compiler/ValaCompiler.cs | 13 | ||||
-rw-r--r-- | extras/ValaBinding/Makefile.am | 3 | ||||
-rw-r--r-- | extras/ValaBinding/Project/MakefileHandler.cs | 77 | ||||
-rw-r--r-- | extras/ValaBinding/Project/ValaProject.cs | 2 | ||||
-rw-r--r-- | extras/ValaBinding/ValaBinding.addin.xml | 5 | ||||
-rw-r--r-- | extras/ValaBinding/ValaBinding.csproj | 74 | ||||
-rw-r--r-- | extras/ValaBinding/ValaBinding.sln | 1 | ||||
-rw-r--r-- | extras/ValaBinding/configure.in | 2 | ||||
-rw-r--r-- | extras/ValaBinding/templates/Makefile.am.template | 23 | ||||
-rw-r--r-- | extras/ValaBinding/templates/Makefile.template | 26 |
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) + |