Author: scotte
Date: 2006-06-28 16:38:41 -0400 (Wed, 28 Jun 2006)
New Revision: 62130
Added:
trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionOptionsPanel.cs
trunk/monodevelop/Extras/MonoDevelop.Autotools/templates/package.pc.template
Modified:
trunk/monodevelop/Extras/MonoDevelop.Autotools/ChangeLog
trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.am
trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.cs
trunk/monodevelop/Extras/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionDeployer.cs
Log:
2006-06-28 Scott Ellington <[EMAIL PROTECTED]>
* Makefile.cs: can append values to variables
* SolutionDeployer.cs: implement pkgconfig stuff
* MonoDevelop.Autotools.addin.xml: add option panel and store pref
* templates/package.pc.template: template for pc file
* Makefile.am: add new files
* SolutionOptionsPanel.cs: new option panel
Modified: trunk/monodevelop/Extras/MonoDevelop.Autotools/ChangeLog
===================================================================
--- trunk/monodevelop/Extras/MonoDevelop.Autotools/ChangeLog 2006-06-28
20:07:25 UTC (rev 62129)
+++ trunk/monodevelop/Extras/MonoDevelop.Autotools/ChangeLog 2006-06-28
20:38:41 UTC (rev 62130)
@@ -1,3 +1,12 @@
+2006-06-28 Scott Ellington <[EMAIL PROTECTED]>
+
+ * Makefile.cs: can append values to variables
+ * SolutionDeployer.cs: implement pkgconfig stuff
+ * MonoDevelop.Autotools.addin.xml: add option panel and store pref
+ * templates/package.pc.template: template for pc file
+ * Makefile.am: add new files
+ * SolutionOptionsPanel.cs: new option panel
+
2006-06-28 Lluis Sanchez Gual <[EMAIL PROTECTED]>
* TarballTargetEditorWidget.cs: Added null check. Fix the build for
Modified: trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.am
===================================================================
--- trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.am 2006-06-28
20:07:25 UTC (rev 62129)
+++ trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.am 2006-06-28
20:38:41 UTC (rev 62130)
@@ -24,6 +24,7 @@
Set.cs \
SimpleProjectMakefileHandler.cs \
SolutionDeployer.cs \
+ SolutionOptionsPanel.cs \
SolutionMakefileHandler.cs \
TarballTargetEditorWidget.cs \
TemplateEngine.cs
@@ -35,7 +36,8 @@
templates/Makefile.include \
templates/autogen.sh.template \
templates/configure.ac.template \
- templates/exe.wrapper.in.template
+ templates/exe.wrapper.in.template \
+ templates/package.pc.template
DATA_FILE_BUILD = $(addprefix $(ADDIN_BUILD)/, $(DATA_FILES))
Modified: trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.cs
===================================================================
--- trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.cs 2006-06-28
20:07:25 UTC (rev 62129)
+++ trunk/monodevelop/Extras/MonoDevelop.Autotools/Makefile.cs 2006-06-28
20:38:41 UTC (rev 62130)
@@ -45,6 +45,11 @@
{
vars [key] = val;
}
+
+ public void AppendToVariable ( string key, string val )
+ {
+ vars [key] += " " + val;
+ }
public void Append (string txt)
{
Modified:
trunk/monodevelop/Extras/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
===================================================================
---
trunk/monodevelop/Extras/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
2006-06-28 20:07:25 UTC (rev 62129)
+++
trunk/monodevelop/Extras/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
2006-06-28 20:38:41 UTC (rev 62130)
@@ -54,4 +54,15 @@
<Extension path = "/SharpDevelop/Workbench/SerializableClasses">
<DataType class = "MonoDevelop.Autotools.TarballDeployTarget" />
</Extension>
+
+ <Extension path =
"/SharpDevelop/Workbench/CombineOptions/GeneralOptions">
+ <DialogPanel id= "AutoTools" _label = "Autotools"
+ class = "MonoDevelop.AutoTools.SolutionOptionsPanel" />
+ </Extension>
+
+ <Extension path =
"/SharpDevelop/Workbench/Serialization/ExtendedProperties">
+ <ItemProperty class = "MonoDevelop.Projects.Combine"
+ name = "MakePkgConfig" type = "System.Boolean" />
+ </Extension>
+
</AddIn>
Modified: trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionDeployer.cs
===================================================================
--- trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionDeployer.cs
2006-06-28 20:07:25 UTC (rev 62129)
+++ trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionDeployer.cs
2006-06-28 20:38:41 UTC (rev 62130)
@@ -26,6 +26,7 @@
using MonoDevelop.Core;
using MonoDevelop.Core.Execution;
using MonoDevelop.Core.ProgressMonitoring;
+using MonoDevelop.Projects.Serialization;
using Mono.Unix.Native;
@@ -37,6 +38,8 @@
string solution_name;
string solution_version;
+ bool pkgconfig = false;
+
AutotoolsContext context;
public bool HasGeneratedFiles ( Combine combine )
@@ -76,11 +79,17 @@
solution_name = combine.Name;
solution_version =
AutotoolsContext.EscapeStringForAutoconf (combine.Version);
+ // check if we need to create pkgconfig file
+ object en_obj = ((IExtendedDataItem)
combine).ExtendedProperties ["MakePkgConfig"];
+ if (en_obj== null) pkgconfig = false;
+ else pkgconfig = (bool) en_obj;
+
Makefile makefile = handler.Deploy ( context,
combine, monitor );
string path = solution_dir + "/Makefile";
context.AddAutoconfFile ( path );
CreateAutoGenDotSH ( monitor );
+ CreatePkgConfigFile ( combine, monitor,
makefile, context );
CreateConfigureDotAC ( combine, defaultConf,
monitor );
CreateMakefileInclude ( monitor );
@@ -208,9 +217,9 @@
}
string vals = sb.ToString ();
- makefile.SetVariable ( "DLL_REFERENCES", vals );
- makefile.SetVariable ( "EXTRA_DIST",
"$(DLL_REFERENCES)" );
- makefile.SetVariable ( "pkglib_DATA",
"$(DLL_REFERENCES)" );
+ makefile.AppendToVariable ( "DLL_REFERENCES", vals );
+ makefile.AppendToVariable ( "EXTRA_DIST",
"$(DLL_REFERENCES)" );
+ makefile.AppendToVariable ( "pkglib_DATA",
"$(DLL_REFERENCES)" );
}
void CreateAutoGenDotSH (IProgressMonitor monitor)
@@ -255,16 +264,19 @@
config_options.AppendFormat ( "
{0}=yes, {0}=no)\n", ac_var );
config_options.AppendFormat (
"AM_CONDITIONAL({0}, test x${1} = xyes)\n", ac_var.ToUpper(), ac_var );
config_options.AppendFormat ( "if test
\"x${0}\" = \"xyes\" ; then\n", ac_var );
+ if ( pkgconfig ) config_options.AppendFormat (
" {0}_CONFIG_LIBS='{1}'\n",
+ name.ToUpper(), GetAllLibs (
combine, config.Name ) );
config_options.Append ( "
CONFIG_REQUESTED=\"yes\"\nfi\n" );
+ if ( pkgconfig ) config_options.AppendFormat (
"AC_SUBST({0}_CONFIG_LIBS)\n", name.ToUpper() );
}
config_options.Append ( "if test -z
\"$CONFIG_REQUESTED\" ; then\n" );
- config_options.AppendFormat ( "AM_CONDITIONAL({0},
true)\nfi\n", "ENABLE_"
+ if ( pkgconfig ) config_options.AppendFormat ( "
{0}_CONFIG_LIBS='{1}'\n",
+ defaultConf.ToUpper (),
GetAllLibs ( combine, defaultConf ) );
+ config_options.AppendFormat ( " AM_CONDITIONAL({0},
true)\nfi\n", "ENABLE_"
+ defaultConf.ToUpper() );
-
templateEngine.Variables ["CONFIG_OPTIONS"] =
config_options.ToString();
-
// build compiler checks
StringBuilder compiler_checks = new StringBuilder();
foreach (string compiler in context.GetCommandChecks ()
)
@@ -312,6 +324,24 @@
writer.Close();
}
+ string GetAllLibs ( Combine combine, string config )
+ {
+ StringBuilder sb = new StringBuilder ();
+ foreach ( CombineEntry ce in
combine.GetAllBuildableEntries ( config ) )
+ {
+ Project p = ce as Project;
+ if ( p == null ) continue;
+
+ DotNetProjectConfiguration dnpc =
p.Configurations [config] as DotNetProjectConfiguration;
+ if ( dnpc == null ) continue;
+
+ if ( dnpc.CompileTarget !=
CompileTarget.Library ) continue;
+
+ sb.Append ( " -r:${pkglibdir}/" +
Path.GetFileName ( dnpc.CompiledOutputName ) );
+ }
+ return sb.ToString ();
+ }
+
void CreateMakefileInclude (IProgressMonitor monitor)
{
monitor.Log.WriteLine ( GettextCatalog.GetString
("Creating Makefile.include") );
@@ -328,6 +358,48 @@
reader.Close();
writer.Close();
}
+
+ void CreatePkgConfigFile ( Combine combine, IProgressMonitor
monitor, Makefile mfile, AutotoolsContext context )
+ {
+ if ( !pkgconfig ) return;
+
+ monitor.Log.WriteLine ( GettextCatalog.GetString
("Creating pkg-config file") );
+
+ TemplateEngine templateEngine = new TemplateEngine();
+
+ templateEngine.Variables["NAME"] = solution_name;
+ templateEngine.Variables["DESCRIPTION"] =
combine.Description;
+ templateEngine.Variables["VERSION"] = solution_version;
+
+ StringBuilder pkgs = new StringBuilder ();
+ foreach ( string pkg in context.GetRequiredPackages () )
+ pkgs.AppendFormat ( "{0} ", pkg );
+ templateEngine.Variables ["REQUIRES_PKGS"] =
pkgs.ToString ();
+
+ StringBuilder libs = new StringBuilder ();
+ foreach ( IConfiguration config in
combine.Configurations )
+ libs.AppendFormat ( "@{0}_CONFIG_LIBS@ ",
config.Name.ToUpper() );
+ templateEngine.Variables ["LIBS"] = libs.ToString ();
+
+ string fileName = solution_name.ToLower() + ".pc";
+ string path = String.Format ( "{0}/{1}.in",
solution_dir, fileName );
+
+ StreamWriter writer = new StreamWriter( path );
+
+ Stream stream = context.GetTemplateStream
("package.pc.template");
+ StreamReader reader = new StreamReader(stream);
+
+ templateEngine.Process(reader, writer);
+
+ reader.Close();
+ writer.Close();
+
+ context.AddAutoconfFile ( fileName );
+ mfile.AppendToVariable ( "EXTRA_DIST", fileName + ".in"
);
+ mfile.SetVariable ( "pkgconfigdir",
"$(libdir)/pkgconfig" );
+ mfile.AppendToVariable ( "pkgconfig_DATA", fileName );
+ mfile.AppendToVariable ( "DISTCLEANFILES", fileName );
+ }
}
}
Added: trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionOptionsPanel.cs
===================================================================
--- trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionOptionsPanel.cs
2006-06-28 20:07:25 UTC (rev 62129)
+++ trunk/monodevelop/Extras/MonoDevelop.Autotools/SolutionOptionsPanel.cs
2006-06-28 20:38:41 UTC (rev 62130)
@@ -0,0 +1,73 @@
+/*
+Copyright (c) 2006 Scott Ellington
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+using System;
+using Gtk;
+
+using MonoDevelop.Core;
+using MonoDevelop.Core.Gui.Dialogs;
+using MonoDevelop.Projects;
+using MonoDevelop.Projects.Serialization;
+using MonoDevelop.Ide.Gui;
+
+namespace MonoDevelop.AutoTools
+{
+ public class SolutionOptionsPanel : AbstractOptionPanel
+ {
+ CheckButton MakePkgConfigButton = new CheckButton();
+
+ IExtendedDataItem item;
+
+ public override void LoadPanelContents()
+ {
+ VBox vbox = new VBox();
+ this.Add(vbox);
+
+ item = (IExtendedDataItem)
IdeApp.ProjectOperations.CurrentOpenCombine;
+
+ object en_obj = item.ExtendedProperties
["MakePkgConfig"];
+
+ bool enabled = false;
+ if (en_obj== null)
+ {
+ item.ExtendedProperties["MakePkgConfig"] =
false;
+ }
+ else enabled = (bool) en_obj;
+
+ MakePkgConfigButton.Label = GettextCatalog.GetString
("Create 'pkg-config' file");
+ MakePkgConfigButton.Active = enabled;
+
+ vbox.PackStart (MakePkgConfigButton, false, false, 0);
+ }
+
+ public override bool StorePanelContents()
+ {
+ item.ExtendedProperties["MakePkgConfig"] =
MakePkgConfigButton.Active;
+
+ return true;
+ }
+ }
+
+}
Added:
trunk/monodevelop/Extras/MonoDevelop.Autotools/templates/package.pc.template
===================================================================
---
trunk/monodevelop/Extras/MonoDevelop.Autotools/templates/package.pc.template
2006-06-28 20:07:25 UTC (rev 62129)
+++
trunk/monodevelop/Extras/MonoDevelop.Autotools/templates/package.pc.template
2006-06-28 20:38:41 UTC (rev 62130)
@@ -0,0 +1,10 @@
[EMAIL PROTECTED]@
+exec_prefix=${prefix}
[EMAIL PROTECTED]@/@PACKAGE@
+
+Name: %%NAME%%
+Description: %%DESCRIPTION%%
+Version: %%VERSION%%
+
+Requires: %%REQUIRES_PKGS%%
+Libs: %%LIBS%%
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches