Author: lluis
Date: 2008-01-21 06:57:10 -0500 (Mon, 21 Jan 2008)
New Revision: 93380

Added:
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4
Modified:
   trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog
   trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs
   trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs
   trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template
   
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template
Log:
* MonoDevelop.Autotools.addin.xml, MonoDevelop.Autotools.mdp,
  SimpleProjectMakefileHandler.cs, Handler.cs, SolutionDeployer.cs,
  templates/expansions.m4, templates/configure.template,
  templates/configure.ac.template, Makefile.am: Properly implement
  support for libdir, bindir and datadir in both autotools and simple
  makefiles. Fixes bug #354128.

Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog   
2008-01-21 11:40:21 UTC (rev 93379)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/ChangeLog   
2008-01-21 11:57:10 UTC (rev 93380)
@@ -1,3 +1,12 @@
+2008-01-21  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.Autotools.addin.xml, MonoDevelop.Autotools.mdp,
+         SimpleProjectMakefileHandler.cs, Handler.cs, SolutionDeployer.cs,
+         templates/expansions.m4, templates/configure.template,
+         templates/configure.ac.template, Makefile.am: Properly implement 
support
+         for libdir, bindir and datadir in both autotools and simple makefiles.
+         Fixes bug #354128.
+
 2008-01-20  Ankit Jain  <[EMAIL PROTECTED]>
 
        * Change Console.WriteLines to LoggingService calls.

Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs  
2008-01-21 11:40:21 UTC (rev 93379)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Handler.cs  
2008-01-21 11:57:10 UTC (rev 93380)
@@ -153,19 +153,19 @@
                        string package_var = generateAutotools ? "@PACKAGE@" : 
"$(PACKAGE)";*/
                        //FIXME: Temp till we find a proper solution
                        string prefix_var = "@prefix@";
-                       string package_var = "@PACKAGE@";
+                       string package_var = "@PACKAGE@";
 
                        switch (folderId) {
                        case TargetDirectory.ProgramFilesRoot:
-                               return prefix_var + "/lib";
+                               return "@expanded_libdir@";
                        case TargetDirectory.ProgramFiles:
-                               return prefix_var + "/lib/" + package_var;
+                               return "@expanded_libdir@/" + package_var;
                        case TargetDirectory.Binaries:
-                               return prefix_var + "/bin";
+                               return "@expanded_bindir@";
                        case TargetDirectory.CommonApplicationDataRoot:
-                               return prefix_var + "/share";
+                               return "@expanded_datadir@";
                        case TargetDirectory.CommonApplicationData:
-                               return prefix_var + "/share/" + package_var;
+                               return "@expanded_datadir@/" + package_var;
                        case TargetDirectory.IncludeRoot:
                                return prefix_var + "/include";
                        case TargetDirectory.Include:

Modified: trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am 
2008-01-21 11:40:21 UTC (rev 93379)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/Makefile.am 
2008-01-21 11:57:10 UTC (rev 93380)
@@ -3,6 +3,7 @@
 ASSEMBLY = $(ADDIN_BUILD)/MonoDevelop.Autotools.dll
 
 REFS =  \
+       $(GLIB_SHARP_LIBS) \
        $(GNOME_SHARP_LIBS) \
        $(GTK_SHARP_LIBS) \
        $(MONO_ADDINS_LIBS) \
@@ -63,6 +64,7 @@
        templates/configure.ac.template \
        templates/configure.template \
        templates/exe.wrapper.in.template \
+       templates/expansions.m4 \
        templates/make-dist.targets \
        templates/Makefile.am.project.template \
        templates/Makefile.include \

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
     2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.addin.xml
     2008-01-21 11:57:10 UTC (rev 93380)
@@ -9,11 +9,12 @@
         
        <Runtime>
                <Import assembly="MonoDevelop.Autotools.dll" />
-               <Import file="autogen.sh.template"/>            
-               <Import file="Makefile.am.project.template"/>           
-               <Import file="Makefile.include"/>               
-               <Import file="configure.ac.template"/>          
-               <Import file="exe.wrapper.in.template"/>                
+               <Import file="autogen.sh.template"/>
+               <Import file="Makefile.am.project.template"/>
+               <Import file="Makefile.include"/>
+               <Import file="configure.ac.template"/>
+               <Import file="exe.wrapper.in.template"/>
+               <Import file="expansions.m4"/>
        </Runtime>
 
        <Dependencies>

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp
   2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.mdp
   2008-01-21 11:57:10 UTC (rev 93380)
@@ -64,6 +64,7 @@
     <File name="GenerateMakefilesDialog.cs" subtype="Code" 
buildaction="Compile" />
     <File name="gtk-gui/MonoDevelop.Autotools.GenerateMakefilesDialog.cs" 
subtype="Code" buildaction="Compile" />
     <File name="templates/make-dist.targets" subtype="Code" 
buildaction="FileCopy" />
+    <File name="templates/expansions.m4" subtype="Code" buildaction="FileCopy" 
/>
   </Contents>
   <References>
     <ProjectReference type="Project" localcopy="False" 
refto="MonoDevelop.Core.Gui" />
@@ -75,15 +76,16 @@
     <ProjectReference type="Gac" localcopy="False" refto="Mono.Posix, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
     <ProjectReference type="Gac" localcopy="True" refto="System, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     <ProjectReference type="Project" localcopy="False" 
refto="MonoDevelop.DesignerSupport" />
+    <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins, 
Version=0.3.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Project" localcopy="False" 
refto="MonoDevelop.Deployment" />
     <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="Mono.Addins, 
Version=0.3.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
-    <ProjectReference type="Project" localcopy="False" 
refto="MonoDevelop.Deployment" />
+    <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, 
Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
   </References>
-  <GtkDesignInfo isWidgetLibrary="True">
+  <GtkDesignInfo isWidgetLibrary="True" gtkVersion="2.8.3">
     <ExportedWidgets>
       <Widget>MonoDevelop.Autotools.MakefileIntegrationFeatureWidget</Widget>
     </ExportedWidgets>

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs
     2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SimpleProjectMakefileHandler.cs
     2008-01-21 11:57:10 UTC (rev 93380)
@@ -195,8 +195,7 @@
 
                                        string programFilesDir = 
ctx.DeployContext.GetDirectory (TargetDirectory.ProgramFiles);
                                        //FIXME:temp
-                                       programFilesDir = 
programFilesDir.Replace ("@prefix@", "$(prefix)");
-                                       programFilesDir = 
programFilesDir.Replace ("@PACKAGE@", "$(PACKAGE)");
+                                       programFilesDir = TranslateDir 
(programFilesDir);
                                        installDirs.Add (programFilesDir);
                                        installTarget.Append ("\tmake 
pre-install-local-hook prefix=$(prefix)\n");
                                        installTarget.AppendFormat ("\tmkdir -p 
$(DESTDIR){0}\n", programFilesDir);
@@ -618,8 +617,7 @@
                        if (!generateAutotools) {
                                string installDir = Path.GetDirectoryName 
(ctx.DeployContext.GetResolvedPath (dfile.TargetDirectoryID, 
dfile.RelativeTargetPath));
                                //FIXME: temp
-                               installDir = installDir.Replace ("@prefix@", 
"$(prefix)");
-                               installDir = installDir.Replace ("@PACKAGE@", 
"$(PACKAGE)");
+                               installDir = TranslateDir (installDir);
 
                                if (!installDirs.Contains (installDir)) {
                                        installTarget.AppendFormat ("\tmkdir -p 
$(DESTDIR){0}\n", installDir);
@@ -632,6 +630,16 @@
                                uninstallTarget.AppendFormat ("\ttest -z 
'$({1})' || rm -f $(DESTDIR){0}/$(notdir $({1}))\n", installDir, 
targetDeployVar);
                        }
                }
+               
+               string TranslateDir (string dir)
+               {
+                       dir = dir.Replace ("@prefix@", "$(prefix)");
+                       dir = dir.Replace ("@PACKAGE@", "$(PACKAGE)");
+                       dir = dir.Replace ("@expanded_libdir@", "$(libdir)");
+                       dir = dir.Replace ("@expanded_bindir@", "$(bindir)");
+                       dir = dir.Replace ("@expanded_datadir@", "$(datadir)");
+                       return dir;
+               }
 
                void EmitCustomCommandTargets (CustomCommandCollection 
commands, Project project, StringBuilder builder, string configName, 
CustomCommandType[] types, IProgressMonitor monitor)
                {

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs 
2008-01-21 11:40:21 UTC (rev 93379)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/SolutionDeployer.cs 
2008-01-21 11:57:10 UTC (rev 93380)
@@ -100,6 +100,7 @@
                                        context.AddAutoconfFile (path);
                                        CreateAutoGenDotSH (context, monitor);
                                        CreateConfigureDotAC (combine, 
defaultConf, monitor, context);
+                                       CreateMacros ();
                                } else {
                                        CreateConfigureScript (combine, 
defaultConf, context, monitor);
 
@@ -220,6 +221,8 @@
                        StringBuilder sb = new StringBuilder ();
                        if (!generateAutotools)
                                sb.Append ("rules.make configure 
Makefile.include");
+                       else
+                               sb.Append ("expansions.m4");
 
                        foreach ( string file in 
context.GetGlobalReferencedFiles() )
                                sb.Append (' ').Append (file);
@@ -411,6 +414,13 @@
                        if (PlatformID.Unix == Environment.OSVersion.Platform)
                                Syscall.chmod ( filename , 
FilePermissions.S_IXOTH | FilePermissions.S_IROTH | FilePermissions.S_IRWXU | 
FilePermissions.S_IRWXG );
                }
+               
+               void CreateMacros ()
+               {
+                       string file = 
Mono.Addins.AddinManager.CurrentAddin.GetFilePath ("expansions.m4");
+                       string dest = Path.Combine (solution_dir, 
"expansions.m4");
+                       File.Copy (file, dest, true);
+               }
 
                // Given a Set<SystemPackage> returns a string of the form
                //   pkg1;pkg1-version pkg2;pkg2-version
@@ -445,6 +455,9 @@
                                string resolved = 
context.DeployContext.GetDirectory (dir);
                                if (resolved == null)
                                        throw new InvalidOperationException 
("Unknown directory: " + e.Key);
+
+                               // Don't use expanded dir vars in the makefile
+                               resolved = resolved.Replace ("@expanded_", "@");
                                
                                if (i != -1)
                                        resolved += ((string)e.Key).Substring 
(i);
@@ -464,7 +477,12 @@
                        else
                                templateEngine.Variables["WRAPPER_SED"] =
                                        "\n$2: $2.in 
$(top_srcdir)/config.make\n" +
-                                       "\tsed -e \"s,@prefix@,$(prefix),\" -e 
\"s,@PACKAGE@,$(PACKAGE),\" < $2.in > $2";
+                                       "\tsed -e \"s,@prefix@,$(prefix),\"" +
+                                       " -e \"s,@PACKAGE@,$(PACKAGE),\"" +
+                                       " -e 
\"s,@expanded_libdir@,$(libdir),\"" +
+                                       " -e 
\"s,@expanded_bindir@,$(bindir),\"" +
+                                       " -e 
\"s,@expanded_datadir@,$(datadir),\"" +
+                                       " < $2.in > $2";
 
                        string fileName = Path.Combine (solution_dir, 
"Makefile.include");
 

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template
     2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.ac.template
     2008-01-21 11:57:10 UTC (rev 93380)
@@ -10,6 +10,10 @@
         AC_MSG_ERROR([You need to install pkg-config])
 fi
 
+SHAMROCK_EXPAND_LIBDIR
+SHAMROCK_EXPAND_BINDIR
+SHAMROCK_EXPAND_DATADIR
+
 AC_PROG_INSTALL
 
 %%COMPILER_CHECKS%%

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template
        2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/configure.template
        2008-01-21 11:57:10 UTC (rev 93380)
@@ -9,8 +9,15 @@
 
 usage ()
 {
-       echo "Usage : configure [--prefix=PREFIX] [--config=CONFIG]"
+       echo "Usage : configure [OPTION]... [--config=CONFIG]"
        echo
+       echo "Options:"
+       echo "  --prefix=PREFIX         install architecture-independent files 
in PREFIX"
+       echo "                          [/usr/local]"
+       echo "  --bindir=DIR            user executables [PREFIX/bin]"
+       echo "  --datadir=DIR           read-only architecture-independent data 
[PREFIX/share]"
+       echo "  --libdir=DIR            object code libraries [PREFIX/lib]"
+       echo
        echo "Configurations available :"
        for c in $configurations; do
                if [ "$c" = "$config" ]; then
@@ -68,6 +75,27 @@
                                shift
                                prefix=$1
                                ;;
+               --libdir=*)
+                               libdir=`echo $1 | sed 's/--libdir=//'`
+                               ;;
+               --libdir)
+                               shift
+                               libdir=$1
+                               ;;
+               --bindir=*)
+                               bindir=`echo $1 | sed 's/--bindir=//'`
+                               ;;
+               --bindir)
+                               shift
+                               bindir=$1
+                               ;;
+               --datadir=*)
+                               datadir=`echo $1 | sed 's/--datadir=//'`
+                               ;;
+               --datadir)
+                               shift
+                               datadir=$1
+                               ;;
                --config=*)
                                conf=`echo $1 | sed 's/--config=//'`
                                validate_config "$conf"
@@ -95,7 +123,20 @@
 check_required_packages
 [ $? -eq 1 ] && exit 1
 
+if [ -z "$libdir" ]; then
+       libdir=$prefix/lib
+fi
+if [ -z "$bindir" ]; then
+       bindir=$prefix/bin
+fi
+if [ -z "$datadir" ]; then
+       datadir=$prefix/share
+fi
+
 echo "prefix=$prefix" > config.make
+echo "libdir=$libdir" >> config.make
+echo "bindir=$bindir" >> config.make
+echo "datadir=$datadir" >> config.make
 echo "RUNTIME=mono" >> config.make
 echo "ASSEMBLY_VERSION=$VERSION.0.0" >> config.make
 echo "VERSION=$VERSION" >> config.make
@@ -105,6 +146,15 @@
 echo
 echo "$PACKAGE has been configured with "
 echo "        prefix = $prefix"
+if [ "$libdir" != "$prefix/lib" ]; then
+       echo "        libdir = $libdir"
+fi
+if [ "$bindir" != "$prefix/bin" ]; then
+       echo "        bindir = $bindir"
+fi
+if [ "$datadir" != "$prefix/share" ]; then
+       echo "        datadir = $datadir"
+fi
 echo "        config = $config"
 echo
 

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 
    2008-01-21 11:40:21 UTC (rev 93379)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.Autotools/templates/expansions.m4 
    2008-01-21 11:57:10 UTC (rev 93380)
@@ -0,0 +1,50 @@
+AC_DEFUN([SHAMROCK_EXPAND_LIBDIR],
+[      
+       expanded_libdir=`(
+               case $prefix in 
+                       NONE) prefix=$ac_default_prefix ;; 
+                       *) ;; 
+               esac
+               case $exec_prefix in 
+                       NONE) exec_prefix=$prefix ;; 
+                       *) ;; 
+               esac
+               eval echo $libdir
+       )`
+       AC_SUBST(expanded_libdir)
+])
+
+AC_DEFUN([SHAMROCK_EXPAND_BINDIR],
+[
+       expanded_bindir=`(
+               case $prefix in 
+                       NONE) prefix=$ac_default_prefix ;; 
+                       *) ;; 
+               esac
+               case $exec_prefix in 
+                       NONE) exec_prefix=$prefix ;; 
+                       *) ;; 
+               esac
+               eval echo $bindir
+       )`
+       AC_SUBST(expanded_bindir)
+])
+
+AC_DEFUN([SHAMROCK_EXPAND_DATADIR],
+[
+       case $prefix in
+               NONE) prefix=$ac_default_prefix ;;
+               *) ;;
+       esac
+
+       case $exec_prefix in
+               NONE) exec_prefix=$prefix ;;
+               *) ;;
+       esac
+
+       expanded_datadir=`(eval echo $datadir)`
+       expanded_datadir=`(eval echo $expanded_datadir)`
+
+       AC_SUBST(expanded_datadir)
+])
+

_______________________________________________
Mono-patches maillist  -  Mono-patches@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to